【强化学习笔记】3.1 基于模型的动态规划方法

【深入浅出强化学习原理入门学习笔记】3.基于模型的动态规划方法

首先解释一下什么是有模型和无模型,马尔科夫决策过程用元组表示是 ( S , A , P , R , γ ) , S 为有限状态集, A 为有限动作集, P 是状态转移概率(包含动作), R 为回报函数, γ 为回报折扣因子。如果其中的 P R 不知道的话,就是无模型了,反之为有模型。

有模型的强化学习问题可以利用动态规划求解。动态规划需要两个条件,一个是可以分解为子问题,另一个是子问题的解可以存储利用。马尔科夫决策过程刚好满足这两个条件。

状态值函数的贝尔曼方程为:
υ π ( s ) = a A π ( a | s ) ( R s a + γ s S P s s a υ ( s )
在状态 s 处的值函数 υ π ( s ) ,可以利用后续状态的值函数 υ ( s ) 来表示(自举算法)。

在模型已知的情况下,未知数只有状态值函数,求解的是状态值函数,也就是说找到最优的值函数(注意这里通过最优值函数确定最优策略,而非直接搜索最优策略)。这个方程的求解可以通过雅各比迭代法和高斯-塞德尔迭代法求解,收敛性通过压缩映射证明(自行看书)。

,可以通过高斯-塞德尔迭代法得到状态值函数,迭代公式为:
υ k + 1 ( s ) = a A π ( a | s ) ( R s a + γ s S P s s a υ k ( s )

计算状态值函数的目的是利用状态值函数找到最优策略,需要注意:状态值函数是某个特定策略的,寻找最优策略其实是对这一特定策略的改善。也就是说策略迭代算法(动态规划算法)包含策略评估(求状态值函数)和策略改善两个步骤。

  • 策略迭代算法

策略迭代算法(代码实现见基于模型的策略迭代方法编程实现):
(1)初始化状态值函数和状态对应的动作(初始化可以采用随机策略,即随机选择状态下的动作)
(2)遍历状态,执行状态对应的动作,得到反馈,更新状态值函数,直到状态值函数收敛
(3)遍历状态下的动作,选出收益最大的动作,作为状态对应的最终动作(贪心策略),更新状态对应的动作
(4)返回(2)直到状态对应的动作不发生变化

进行策略改善之前不一定要等到策略值函数收敛,可以在评估一次后就进行策略改善,迭代的终止条件是值函数不再发生变化(就是每个状态下的值函数不再发生变化)。

  • 值函数迭代算法(代码实现见3.2 基于模型的策略迭代方法编程实现):
    (1)初始化状态值函数和状态对应的动作(初始化可以采用随机策略,即随机选择状态下的动作)
    (2)遍历状态下的动作,选出收益最大的动作,作为状态对应的最终动作(贪心策略),更新状态对应的动作,并根据该动作得到的反馈更新状态值函数
    (3)返回(2)直到状态值函数收敛。

参考书籍:

  1. 深入浅出强化学习原理入门

猜你喜欢

转载自blog.csdn.net/bigheadyushan/article/details/79465197