强化学习算法之Value Iteration(值迭代)
课程概述
本次是课程的第四次课,将介绍值迭代(value iteration)和策略迭代(policy iteration)这两个model base的强化学习算法。上节课介绍了贝尔曼最优公式,下节课会介绍第一个model free的算法,这三节课内容紧密相关。其中,值迭代算法在上节课已有所涉及,本节课会以更正式的方式介绍;策略迭代算法是下节课蒙特卡罗学习的基础。本次课主要内容分为三部分:值迭代、策略迭代、增量式策略迭代(incremental policy iteration),且值迭代和策略迭代是增量式策略迭代的两个极端情况。
值迭代算法(Value Iteration)
- 算法基础:基于上节课的贝尔曼最优公式(已给出matrix vector form),通过压缩映射定理(contraction mapping theorem)可知,使用值迭代算法能够求解出最优策略和最优状态值(state value)。该算法是一个迭代算法,公式右边为vkv_kvk,左边为vk+1v_{k + 1}vk+1。
- 算法步骤:
- 策略更新(policy update):给定vkv_kvk,处理右边的优化问题,得到策略πk+1\pi_{k + 1}πk+1。具体来说,对每一个状态sss,根据已知条件带入vkv_kvk计算出qkq_kqk,然后选取对应qkq_kqk最大的动作ak∗a_k^*ak∗作为最优策略,其他动作概率为零,这是一个确定性的贪婪策略(greedy policy)。
- 值更新(value update):将求出的πk+1\pi_{k + 1}πk+1带入式子,根据vkv_kvk计算出vk+1v_{k + 1}vk+1。由于πk+1\pi_{k + 1}πk+1的特性(对应qkq_kqk最大的为111,其他为000),vk+1v_{k + 1}vk+1就是qkq_kqk里最大的那个数。
- 算法伪代码及收敛条件:
- 伪代码:从初值vkv_kvk开始,当vkv_kvk还未收敛(即∣vk−vk−1∣|v_k - v_{k - 1}|∣vk−vk−1∣大于一个较小的数,如0.0010.0010.001)时,遍历所有状态sss,对每个状态sss再遍历其所有动作,计算每个状态-动作对的qkq_kqk,然后进行策略更新(选择qkq_kqk最大对应的动作)和值更新(vk+1v_{k + 1}vk+1为最大的qkq_kqk)。
- 收敛条件:当vkv_kvk与vk−1v_{k - 1}vk−1的差值小于一个很小的数时,认为vkv_kvk已经收敛,算法停止。
- 算法实例:
- 问题设定:有一个包含禁止区域(forbidden area)和目标区域(target area)的问题,使用值迭代算法求解最优策略,已知问题的一些基本设置。
- 迭代过程:
- 第一步(k=0k = 0k=0):选择v0v_0v0(为方便取全零值),带入qqq表(实际编程时不一定要有具体表格形式,但要能从vvv计算出qqq),得到每个状态-动作对对应的qqq值。进行策略更新,例如对于状态s1s_1s1,找到qqq值最大的动作(这里有两个最大,可任选一个,如选a5a_5a5),对其他状态类似操作(如状态s2s_2s2选a3a_3a3,s3s_3s3选a2a_2a2,s4s_4s4选a5a_5a5)。然后进行值更新,将最大的qkq_kqk作为新的v1v_1v1供下一步使用。绘制出此时的策略,发现s2s_2s2、s3s_3s3和s4s_4s4已达到最优,但s1s_1s1还未达到最优(此时是原地不动,而最优是往下走)。
- 第二步(k=1k = 1k=1):将上一步得到的v1v_1v1值重新带入qqq表,得到新的qqq表。针对每个状态,找到最大的qkq_kqk,新的策略为状态s1s_1s1选a3a_3a3,s2s_2s2选a2a_2a2,s3s_3s3选a5a_5a5,对应的新值也为相应最大的qkq_kqk值。绘制出此时的策略,发现已经是最优策略,即仅用两个步骤就找到了最优策略(由于此例子简单,复杂问题可能需要更多迭代步骤)。当vkv_kvk与vk−1v_{k - 1}vk−1的差值小于一个很小的数时,算法停止。
通过以上对值迭代算法的详细介绍和实例分析,希望能帮助理解该算法的原理、步骤以及如何通过迭代找到最优策略。后续还会介绍策略迭代等相关内容,进一步完善对强化学习算法的学习。
5484

被折叠的 条评论
为什么被折叠?



