4 动态编程(Dynamic Programming, DP)

【上一篇 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,rs,a) 来表示,其中 s ∈ S s\in\mathcal{S} sS a ∈ A ( s ) a\in\mathcal{A}(s) aA(s) r ∈ R r\in\mathcal{R} rR s ′ ∈ S + s'\in\mathcal{S}^+ sS+(若问题为 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,rp(s,rs,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+γamaxq(St+1,a)St=s,At=a]=s,rp(s,rs,a)[r+γamaxq(s

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值