【深入浅出强化学习原理入门学习笔记】3.基于模型的动态规划方法
首先解释一下什么是有模型和无模型,马尔科夫决策过程用元组表示是 , 为有限状态集, 为有限动作集, 是状态转移概率(包含动作), 为回报函数, 为回报折扣因子。如果其中的 , 不知道的话,就是无模型了,反之为有模型。
有模型的强化学习问题可以利用动态规划求解。动态规划需要两个条件,一个是可以分解为子问题,另一个是子问题的解可以存储利用。马尔科夫决策过程刚好满足这两个条件。
状态值函数的贝尔曼方程为:
在状态
处的值函数
,可以利用后续状态的值函数
来表示(自举算法)。
在模型已知的情况下,未知数只有状态值函数,求解的是状态值函数,也就是说找到最优的值函数(注意这里通过最优值函数确定最优策略,而非直接搜索最优策略)。这个方程的求解可以通过雅各比迭代法和高斯-塞德尔迭代法求解,收敛性通过压缩映射证明(自行看书)。
,可以通过高斯-塞德尔迭代法得到状态值函数,迭代公式为:
计算状态值函数的目的是利用状态值函数找到最优策略,需要注意:状态值函数是某个特定策略的,寻找最优策略其实是对这一特定策略的改善。也就是说策略迭代算法(动态规划算法)包含策略评估(求状态值函数)和策略改善两个步骤。
- 策略迭代算法
策略迭代算法(代码实现见基于模型的策略迭代方法编程实现):
(1)初始化状态值函数和状态对应的动作(初始化可以采用随机策略,即随机选择状态下的动作)
(2)遍历状态,执行状态对应的动作,得到反馈,更新状态值函数,直到状态值函数收敛
(3)遍历状态下的动作,选出收益最大的动作,作为状态对应的最终动作(贪心策略),更新状态对应的动作
(4)返回(2)直到状态对应的动作不发生变化
进行策略改善之前不一定要等到策略值函数收敛,可以在评估一次后就进行策略改善,迭代的终止条件是值函数不再发生变化(就是每个状态下的值函数不再发生变化)。
- 值函数迭代算法(代码实现见3.2 基于模型的策略迭代方法编程实现):
(1)初始化状态值函数和状态对应的动作(初始化可以采用随机策略,即随机选择状态下的动作)
(2)遍历状态下的动作,选出收益最大的动作,作为状态对应的最终动作(贪心策略),更新状态对应的动作,并根据该动作得到的反馈更新状态值函数
(3)返回(2)直到状态值函数收敛。
参考书籍: