规划,适用于MDP模型参数已知
学习,适用于Env未知或部分未知
概述
动态规划分为两步,Prediction、Control
- (Prediction)Value:是对策略π的评价
<s,Pπ,Rπ,γ>,π→Vπ
- (Control)Policy π:是对Value的选择
<s,Pπ,Rπ,γ>,V→π
方法:
- prediction:迭代法
对所有状态s,应用贝尔曼公式
vk+1(s)=a∈A∑π(a∣s)(Rsa+γs′∈S∑Pss′avk(s′))
右边的vk不确定,但是迭代下去,因为Rsa确定,所以收敛到真值vπ
- Control:greedly,每次都选基于上次预测最好的那个a
例子
问题:每走一步,r = -1,走到出口可以停止
在随机策略下,迭代k,最使v收敛
得到vπ(s)
然后最简单的策略,greedy,往v值高的地方走。

Policy iteration:O(mn2)
每一步,遍历动作A
Find optim policy:
以Greedy为例,迭代:π′=greedy(vπ)
策略更新为:
π′(s)=a∈Aargmaxqπ(s,a)
值函数更新为:
vπ(s)=a∈Amaxqπ(s,a)
主动改变策略,策略改变之后进行评估
根据q值,从集合A中选a,更新策略π,使新q大于之前一步
qπ(s,π′(s))=a∈Amaxqπ(s,a)≥qπ(s,π(s))=vπ(s)
证明:
vπ(s)≤qπ(s,π′(s))=Eπ′[Rt+1+γvπ(St+1)∣St=s]≤Eπ′[Rt+1+γqπ(St+1,π′(St+1))∣St=s]≤Eπ′[Rt+1+γRt+2+γ2qπ(St+2,π′(St+2))∣St=s]≤Eπ′[Rt+1+γRt+2+…∣St=s]=vπ′(s)
所以保证了每次迭代,价值函数 与 策略 增长
Value iteration:O(m2n2)
每一步,遍历了状态S和动作A
最优策略:
- 当前状态s下,所有动作a产生回报的最大值
- 采取动作a后,状态由s -> s’的期望
公式:
v∗(s)=amaxRsa+γs′∈S∑Pss′av∗(s′)
根据值函数,选择策略
值迭代和policy迭代的区别
- policy iteration每次迭代v(s)都会变大;而value iteration则不是。
- 价值迭代不需要策略参与,依据MDP 模型,直接迭代,需要P矩阵、r 等已知
- policy iteration: policy->value->policy
- value iteration:value->value
Trick:
三种值迭代方法:
常规的值迭代,要遍历过所有s之后,才进行一次迭代,因此存在old、new两个v(s)
- in-place DP:新值直接替换旧值,只存储一个v(s),
- 异步更新,提高效率
- 缺点:更新顺序影响收敛性
- Prioritised sweeping:state的影响力排序
- 比较贝尔曼误差绝对值,大的更新,小的忽略
- Real-time DP:遍历过的才更新
- 省去了agent 未遍历的状态s,对于稀疏任务效率提升极大
