动态规划是强化学习里面最基础的部分,其核心思想—通用策略迭代(Generalized Policy Iteration,GPI)
注意: 动态规划(Dynamic Programming)要求一个完全已知的环境模型,所谓完全已知,就是 MDP的五元组 <S,A,P,R,γ> 全部已知,当然了,主要还是指状态转移概率P已知。这种学习方式就是有模型学习(Model-based learning)。
动态规划简单说可以分为两部分:
- 一是 预测(prediction),也就是已知MDP的状态、动作、奖励、转移概率、折扣因子和策略,求出每一个状态下的值函数,也就是 每个状态下能获得的reward是多少
- 第二就是 控制,什么意思呢,就是在前面的状态、动作等等都已知,但策略未知的情况下,计算出最优的值函数,并且借此计算出最优的策略。
动态规划的目的就是完成上面的两件事。适用于动态规划的问题,一般状态转移矩阵都是已知的,简单说就是环境模型已知了,这个时候就可以看做planning问题了
动态规划解决问题的方法呢,就是GPI,也就是 策略迭代、策略评估、策略迭代、策略评估…知道策略收敛至最优
贪婪的意思就是指仅采用某个动作,这个动作使得状态价值得到最大的行为(max(q(s,a)))
预测问题–策略评估(Policy Evaluation)
首先,我们来看如何使用动态规划来求解强化学习的预测问题,即求解给定策略的状态价值函数的问题。这个问题的求解过程我们通常叫做 策略评估(Policy Evaluation)
策略评估的 基本思路 是从任意一个状态价值函数开始,依据给定的策略,结合贝尔曼期望方程、状态转移概率和奖励,同步迭代更新状态价值函数,直至其 收敛,得到该策略下最终的状态价值函数
控制问题—策略迭代(Policy Iteration)
根据我们之前基于任意一个给定策略评估得到的 状态价值来及时调整我们的动作策略,这个方法我们叫做策略迭代(Policy Iteration)
如何调整呢?最简单的方法就是贪婪法,考虑一种如下的贪婪策略:个体在某个状态下选择的行为是其能够到达后续所有可能的状态中状态价值最大的那个状态
还是以Grid World为例,如下面的图右边。当我们计算出 最终的状态价值后,我们发现,第二行第一个格子周围的价值分别是0,-18,-20,此时我们用贪婪法,则我们调整行动策略为向状态价值为0的方向移动,而不是随机移动。也就是图中箭头向上。而此时第二行第二个格子周围的价值分别是-14,-14,-20, -20。那么我们整行动策略为向状态价值为-14的方向移动,也就是图中的向左向上
策略迭代过程中,我们循环进行两部分工作:
- 第一步是使用当前策略π∗评估计算当前策略的最终状态价值v∗
- 第二步是根据状态价值v∗根据一定的方法(比如贪婪法)更新策略π∗,接着回到第一步,一直迭代下去,最终得到收敛的策略π∗和状态价值v∗
控制问题—价值迭代
观察策略迭代的图发现,我们如果用贪婪法调整动作策略,那么当k=3的时候,我们就已经得到了最优的动作策略,而不用一直迭代到状态价值收敛才去调整策略,那么此时我们的 策略迭代优化为价值迭代
还是以Grid World为例,如下图。比如当k=2时,第二行第一个格子周围的价值分别是0,-2,-2,此时我们用贪婪法,则我们调整行动策略为向状态价值为0的方向移动,而不是随机移动。也就是图中箭头向上。而此时第二行第二个格子周围的价值分别是-1.7,-1.7,-2, -2。那么我们整行动策略为向状态价值为-1.7的方向移动,也就是图中的向左向上。
和策略迭代相比,我们没有等到状态价值收敛才调整策略,而是随着状态价值的迭代及时调整策略, 这样可以大大减少迭代次数。此时我们的状态价值的更新方法也和策略迭代不同。
现在的贝尔曼方程迭代式子如下:
传送门
系列
动态规划寻找最优策略之policy evaluation(策略估计)
动态规划寻找最优策略之Policy Iteration(策略迭代)
动态规划寻找最优策略之Value Iteration(值迭代)
补充系列
强化学习(三)用动态规划(DP)求解
强化学习总结(3)–动态规划
策略迭代与值迭代的区别