强化学习笔记3:动态规划 planning by dynamic programming(DP)
585字 2.9分钟 强化学习笔记 规划,适用于MDP模型参数已知 学习,适用于Env未知或部分未知
概述
动态规划分为两步,Prediction、Control
- (Prediction)Value的评价
- (Control)Policy
方法:
- prediction:迭代法 对所有状态s,应用贝尔曼公式
右边的不确定,但是迭代下去,因为确定,所以收敛到真值
- Control:greedly,每次都选基于上次预测最好的那个a
例子
问题:每走一步,r = -1,走到出口可以停止 在随机策略下,迭代k,最使v收敛 得到
然后最简单的策略,greedy,往v值高的地方走。 
Policy iteration:
每一步,遍历动作A
Find optim policy: 以Greedy为例,迭代:策略更新为:
值函数更新为:
主动改变策略,策略改变之后进行评估 根据q值,从集合A中选a,更新策略,使新q大于之前一步
证明:
所以保证了每次迭代,价值函数 与 策略 增长
Value iteration:
每一步,遍历了状态S和动作A
最优策略:
- 当前状态s下,所有动作a产生回报的最大值
- 采取动作a后,状态由s -> 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,对于稀疏任务效率提升极大
