前面一篇博客讲了马尔科夫决策过程和贝尔曼方程,这一篇我们在此基础上用动态规划来求解强化学习问题。
1、动态规划和强化学习的联系
既然要用动态规划来解决问题,首先要明白什么是动态规划。动态规划是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。
动态规划的关键点有两个:一是问题的最优解可以由若干小问题的最优解构成,即通过寻找子问题的最优解来得到问题的最优解。第二是可以找到子问题状态之间的递推关系,通过较小的子问题状态递推出较大的子问题的状态。而强化学习的问题恰好是满足这两个条件的。
在用动态规划求解之前,我们先回顾一下之前我们讲过的强化学习的两个基本问题:预测(评估)问题和控制问题。
(1)预测问题,即给定强化学习的6个要素:状态集S, 动作集A, 模型状态转化概率矩阵P, 即时奖励R,衰减因子γ, 给定策略π, 求解该策略的状态价值函数v(π)。
(2)控制问题,也就是求解最优的价值函数和策略。给定强化学习的5个要素:状态集S, 动作集A, 模型状态转化概率矩阵P, 即时奖励R,衰减因子γ, 求解最优的状态价值函数v∗和最优策略π∗。
回顾一下前面MDP中讲的状态价值函数的贝尔曼方程。
分析这个函数表达式就可以发现:状态s的状态价值函数
v
π
(
s
)
v_π(s)
vπ(s)和状态为s’的状态驾驶函数
v
π
(
s
′
)
v_π(s')
vπ(s′)有关。我们可以利用迭代的方法,用上一个迭代周期内的s’的状态价值来计算更新当前迭代周期某状态s的状态价值。
假设我们在第k轮迭代已经计算出了所有的状态的状态价值,那么在第k+1轮我们可以利用第k轮计算出的状态价值计算出第k+1轮的状态价值。这是通过贝尔曼方程来完成的,即:
我们每一轮可以对计算得到的新的状态价值函数再次进行迭代,直至状态价值的值改变很小(收敛),那么我们就得出了预测问题的解,即给定策略的状态价值函数v(π)。
下面用一个具体的例子来讲解预测问题和控制问题。
2、用策略评估求解预测问题
我们有一个4x4的16宫格。只有左上和右下的格子是终止格子。该位置的价值固定为0,个体如果到达了该2个格子,则停止移动,此后每轮奖励都是0。个体在16宫格其他格的每次移动,得到的即时奖励R都是-1。注意个体每次只能移动一个格子,且只能上下左右4种移动选择,不能斜着走, 如果在边界格往外走,则会直接移动回到之前的边界格。衰减因子我们定义为γ=1。由于这里每次移动,下一格都是固定的,因此所有可行的的状态转化概率P=1。这里给定的策略是随机策略,即每个格子里有25%的概率向周围的4个格子移动。
首先我们初始化所有格子的状态价值为0,如上图k=0的时候。现在我们开始策略迭代了。由于终止格子的价值固定为0,我们可以不将其加入迭代过程。在k=1的时候,我们利用上面的贝尔曼方程先计算第二行第一个格子的价值:
v
1
(
21
)
v^{(21)}_1
v1(21)=14[(−1+0)+(−1+0)+(−1+0)+(−1+0)]=−1
第二行第二个格子的价值是:
v
1
(
22
)
v^{(22)}_1
v1(22)=14[(−1+0)+(−1+0)+(−1+0)+(−1+0)]=−1
其他的依次类推。第一轮的状态价值迭代的结果如上图k=1的时候。现在我们第一轮迭代完了。依照上面的公式我们可以算法k=2、3、4,等的情况,如上图所示。直到每个格子的策略价值改变很小为止。这时我们就得到了所有格子的基于随机策略的状态价值。
这就是一个简单的用动态规划求解预测问题。同时也可以发现,当这个表格非常大的时候,这个方法就不是那么适用了。
3、用策略迭代求解控制问题
首先看看策略迭代的算法步骤:
(1)初始化:随机初始化状态价值函数v(s)和动作价值函数q(s)。
(2)策略估计:利用贝尔曼公式
v
π
(
s
)
v_π(s)
vπ(s),迭代直到
v
π
(
s
)
v_π(s)
vπ(s)收敛。
(3)策略提升:根据贪心原则选取使v(s)最大的策略。
(4)直至状态价值函数v(s)收敛,不发生改变。
可以看出,策略迭代中包含着策略估计。
注意:这里是在函数收敛之后才更新策略,这也是和价值迭代最大的不同。
可以用一幅图来表示策略迭代,如下图:
回顾上面的那个简单例子发现:策略估值未收敛时(第3轮、第10轮)和最后收敛时(无穷轮),所对应的贪心策略是一样的,所以说可以提前结束策略估值进行策略提升,没必要到收敛后再进行策略提升选取最优策略。所以我们可以改进一下这个方法,用价值迭代来求解控制问题。
4、价值迭代求解控制问题
价值迭代的算法步骤为:
(1)初始化: 随机初始化状态价值函数v(s).
(2)直接选取使当前状态值函数v(s)最大的动作更新v(s)。
(3)直至状态价值函数v(s) 收敛,不发生改变。
(4)根据收敛的v(s) 得到π(s)。
现在贝尔曼方程迭代式为:
可见由于策略调整,我们现在价值每次更新倾向于贪婪法选择的最优策略对应的后续状态价值,这样收敛更快。
5、总结
动态规划求解强化学习问题的算法思路比较简单,主要就是利用贝尔曼方程来迭代更新状态价值,用贪婪法之类的方法迭代更新最优策略。其中我们主要解决了预测问题和控制问题,这两个问题将会在后面的文章中经常出现。
因为动态规划是依赖于递推公式。所以某一个中间状态改变后,所有依赖于该递推公式的后续状态的值都要重新计算一遍。
除非收敛了,即所有的中间状态不改变,收敛了,那么后续状态自然也不会改变了。
这种方式只适用于状态数较少的强化学习问题,当问题规模很大的时候,动态规划算法将会因贝尔曼维度灾难而无法使用。因此我们还需要寻找其他的针对复杂问题的强化学习问题求解方法。
下一篇会介绍蒙特卡罗算法来求解预测和控制问题。
下一篇:蒙特卡罗算法求解强化学习
参考文章:https://www.cnblogs.com/pinard/p/9463815.html,
https://blog.csdn.net/u013010889/article/details/81943628