【上一篇 3 有限马尔可夫决策过程(Finite Markov Decision Processes)】
【下一篇 5 蒙特卡洛方法 (Monte Carlo Method) 】
之前介绍的知识都是基础,从这次开始才真正开始介绍增强学习的解法方法。
动态编程(Dynamic Programming, DP)这个词大家肯定都不陌生,在解决算法编程问题当中经常会用到,它的主要思想就是将一个复杂的问题分解成多个子问题,将子问题的解结合在一起就构成了原问题的解,它常常适合于解决具有如下两种属性的问题:
(1)优化的子结构:优化解常常可以分解成子问题;
(2)子问题有重叠:即子问题总是重复出现,该子问题的解可以保存下来重复利用。
而马尔可夫决策过程就完美的符合这两点特性:
(1)需要求解的 Bellman 方程提供了递归的分解形式;
(2)Value function 需要存储和重用之前的解。
因此可以说 DP 可以用于求解马尔可夫模型的优化策略,但是由于 DP 问题需要环境的动态模型,并且计算复杂度较高,因此在增强学习中的应用并不广泛,但是它的思想在理论上还是非常重要的,是以后学习的一个理论基础。DP 算法的主要思想就是利用 value function 来寻找好的策略。
这里先介绍一下后文中的符号表示(与之前的相同):
假设状态集合、行为集合和 reward 集合分别为 S \mathcal{S} S、 A ( s ) \mathcal{A}(s) A(s) 和 R \mathcal{R} R,动态性用概率 p ( s ′ , r ∣ s , a ) p(s',r|s,a) p(s′,r∣s,a) 来表示,其中 s ∈ S s\in\mathcal{S} s∈S、 a ∈ A ( s ) a\in\mathcal{A}(s) a∈A(s)、 r ∈ R r\in\mathcal{R} r∈R、 s ′ ∈ S + s'\in\mathcal{S}^+ s′∈S+(若问题为 episodic,则 S + \mathcal{S}^+ S+ 指的是 S \mathcal{S} S 加上终止状态)。
之前介绍过,若找到了满足 Bellman 优化方程的优化值函数 v ∗ v_* v∗ 或者 q ∗ q_* q∗,就可以容易的获得优化的策略, v ∗ v_* v∗ 与 q ∗ q_* q∗ 的表达式如下所示:
v ∗ ( s ) = max a E [ R t + 1 + γ v ∗ ( S t + 1 ) ∣ S t = s , A t = a ] = max a ∑ s ’ , r p ( s ′ , r ∣ s , a ) [ r + γ v ∗ ( s ′ ) ] \begin{aligned} v_{\ast}(s) &= \max_a{\Bbb E}[R_{t+1}+\gamma v_{\ast}(S_{t+1})|S_t=s,A_t=a] \\ &= \max_a\sum_{s’,r}{p(s',r|s,a)[r+\gamma v_{\ast}(s')]} \end{aligned} v∗(s)=amaxE[Rt+1+γv∗(St+1)∣St=s,At=a]=amaxs’,r∑p(s′,r∣s,a)[r+γv∗(s′)]
q ∗ ( s , a ) = E [ R t + 1 + γ max a ′ q ∗ ( S t + 1 , a ′ ) ∣ S t = s , A t = a ] = ∑ s ’ , r p ( s ′ , r ∣ s , a ) [ r + γ max a ′ q ∗ ( s ′ , a ′ ) ] \begin{aligned} q_{\ast}(s,a) &= {\Bbb E}[R_{t+1}+\gamma \max_{a'}q_{\ast}(S_{t+1},a') |S_t=s, A_t=a] \\ &= \sum_{s’,r}{p(s',r|s,a)[r+\gamma \max_{a'}q_{\ast}(s',a')]} \end{aligned} q∗(s,a)=E[Rt+1+γa′maxq∗(St+1,a′)∣St=s,At=a]=s’,r∑p(s′,r∣s,a)[r+γa′maxq∗(s