强化学习导论(Reinforcement Learning: An Introduction)读书笔记(四):动态规划

写在前面

        ~~~~~~~        由于专业学习的需要,最近开始学习强化学习的课程。目前看的书本是被誉为强化学习圣经的《Reinforcement Learning: An Introduction》,在学习过程中看到了两篇很好的笔记,强化学习导论(Reinforcement Learning: An Introduction)读书笔记(一):强化学习介绍.
强化学习导论(Reinforcement Learning: An Introduction)读书笔记(二):多臂赌博机(Multi-arm Bandits).
        ~~~~~~~        也用同样的风格写下第三章。
强化学习导论(Reinforcement Learning: An Introduction)读书笔记(三):有限马尔可夫决策过程.
        ~~~~~~~        但是由于水平有限,只能作为模仿,自我整理,向大佬致敬。这是第四章的读书笔记。
        ~~~~~~~        非常感谢强化学习系列(四):动态规划对于书中内容的整理,以及忆臻.文章,让我对动态规划有了更加深入的理解。

1.动态规划算法的核心

        ~~~~~~~        动态规划算法是为了在给定完整的环境模型的情况下,对马尔可夫决策过程MDP计算求解,得到最优策略的算法集合。其核心方法就是通过价值函数(value function)去寻求最优策略(optimal policy)
        ~~~~~~~        在前一章我们得到了关于最优价值函数(optimal value function) 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_*(s) &= \max_a\mathbb{E}[R_{t+1}+\gamma v_*(S_{t+1}) | S_t=s,A_t=a] \\ &= \max_a\sum_{s',r}p(s',r|s,a)[r+\gamma v_*(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_*(s,a)& = \mathbb{E}[R_{t+1}+\gamma \max_{a'} q_*(S_{t+1},a') | S_t=s,A_t=a]\\ &=\sum_{s',r}p(s',r|s,a)[r+\gamma\max_{a'} q_*(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,a)],
        ~~~~~~~        其中 s ∈ S s\in\mathcal{S} sS a ∈ A ( s ) a\in\mathcal{A}(s) aA(s),以及 s ′ ∈ S + s^\prime\in\mathcal{S^+} sS+动态规划算法(Dynamic Programming) 就是将贝尔曼方程(Bellman equation) 改写为迭代更新的格式。

2. 策略价值评估

DP中,对某种策略(policy) π \pi π的情况下,状态价值函数(state-value function) 的计算方式在MDP 过程中已经给出。针对于所有的 s ∈ S s\in\mathcal{S} sS:

v π ( s ) ≐ E π [ G t ∣ S t = s ] = E π [ R t + 1 + γ G t + 1 ∣ S t = s ] = E π [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s ] = ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] \begin{aligned} v_\pi(s) & \doteq \mathbb{E_\pi}[G_t | S_t=s] \\ &= \mathbb{E_\pi}[R_{t+1} + \gamma G_{t+1} | S_t=s] \\ &= \mathbb{E_\pi}[R_{t+1}+\gamma v_\pi(S_{t+1}) | S_t=s] \\ &= \sum_a\pi(a|s)\sum_{s',r}p(s',r|s,a)[r+\gamma v_\pi(s')] \end{aligned} vπ(s)Eπ[GtSt=s]=Eπ[Rt+1+γGt+1St=s]=Eπ[Rt+1+γvπ(St+1)St=s]=aπ(as)s,rp(s,rs,a)[r+γvπ(s)]

        ~~~~~~~        该方程是一个同时存在 ∣ S ∣ |\mathcal{S}| S个线性方程以及 ∣ S ∣ |\mathcal{S}| S个未知数的的线性方程组,其计算过程非常直白,但是计算量可能会非常大。因此,我们采用迭代的方式将价值函数进行更新。利用上述式子中的Bellman 方程 更新的规则为:
v k + 1 ( s ) = ⋅ E [ R t + 1 + γ v k ( S t + 1 ) ∣ S t = s ] = ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v k ( s ′ ) ] , \begin{aligned} v_{k+1}(s)& \overset{\cdot}{=}\mathbb{E}[R_{t+1}+\gamma v_k(S_{t+1}) | S_t=s] \\ &= \sum_{a}\pi(a|s)\sum_{s',r}p(s',r|s,a)[r+\gamma{v_k(s')}], \end{aligned} vk+1(s)=E[Rt+1+γvk(St+1)St=s]=aπ(as)s,rp(s,rs,a)[r+γvk(s)],

        ~~~~~~~        其中, s ∈ S s\in\mathcal{S} sS。随着 k k k值的不断变大, k → ∞ k\rightarrow\infty k { v k } \{v_k\} {vk}序列可以保证在广泛意义下收敛到 v π v_\pi vπ。该方法被称为 迭代策略评估 (iterative policy evaluation)


expected update: 状态 s s s新的价值(new value) 是基于旧价值(old value) 的期望得到的,所以这种更新也被称为期望的更新。


2.1 两种迭代方式

两个数组: 两个数组是指在迭代过程中使用两个数组,一个用来存储旧的价值函数值,一个用来存储新的价值函数值。若第二数组被更新后,下一次更新继续覆盖第一个数组。该种更新方式就是整体得算价值函数,更新是全部的 s s s状态一起更新的。
一个数组: 一个数组的迭代就是,针对于任何一个状态 s s s,其状态价值更新后立刻覆盖旧的值。这样的计算收敛速度更快。

2.2 政策价值评估的算法

政策价值评估的算法流程图如下所示。其过程如下:


图1 政策价值评估的算法

        ~~~~~~~        需要注意的是,其他状态的初始值都是任意给定的,对于最终状态的价值,必须给0。

2.3 举例说明

        ~~~~~~~        下图为一个4X4的矩阵,代表了一个gridword,其规则如下:


图2 格子世界的展示
  1. 每个奖励的折扣因子 γ \gamma γ1
  2. 格子1,2,3,…,14为非终止状态
  3. 两个灰色的格子为终止状态
  4. 到达非终止状态的奖励 (reward)-1,终止状态奖励为 0
  5. 在非终止状态可以选择的动作为 A = { u p , d o w n , r i g h t , l e f t } \mathcal{A}=\{up, down, right, left\} A={up,down,right,left},四个动作的概率相同。
  6. 若执行动作后离开边界,下一个状态位置仍在原来保持不变。

基于这样的规则,可以迭代计算状态值来自知乎:叶强.


图3 迭代状态的计算

3.策略的改进与提升

3.1 如何提升策略

        ~~~~~~~        制定策略的目的是为了寻找最好的策略 π ∗ \pi_{*} π,但是在刚刚开始时,由于我们对每个状态 (states) 的价值 (value) 并不了解,策略是随机制定的。在对策略进行评估 (Policy Evaluation) 后,才有改进策略的可能。
        ~~~~~~~        讨论这样一种情况,有一个新的策略 π ′ \pi' π,其和策略 π \pi π只在状态 s s s处不同,其余均一致。在状态 s s s下,动作价值函数的定义为:
q π ( s , a ) ≐ E [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s , A t = a ] = ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] \begin{aligned} q_\pi(s,a)& \doteq \mathbb{E}[R_{t+1}+\gamma v_\pi(S_{t+1}) | S_t=s,A_t=a] \\ &= \sum_{s',r}p(s',r|s,a)[r+\gamma v_\pi(s')] \end{aligned} qπ(s,a)E[Rt+1+γvπ(St+1)St=s,At=a]=s,rp(s,rs,a)[r+γvπ(s)]
        ~~~~~~~        假设新策略满足:
q π ( s , π ′ ( s ) ) ≥ v π ( s ) q_\pi(s,\pi'(s)) \geq v_\pi(s) qπ(s,π(s))vπ(s)
        ~~~~~~~        那么策略 π ′ \pi' π 必须与策略 π \pi π同样好或者比策略 π \pi π更好,即:
v π ′ ( s ) ≥ v π ( s ) v_\pi'(s) \geq v_\pi(s) vπ(s)vπ(s)
        ~~~~~~~        这样,我们就实现了我们的需求,我们的策略实现了提升 (policy improvement)

3.2 策略提升的证明

        ~~~~~~~        策略提升理论的证明过程如下:

v π ( s ) ≤ q π ( s , π ′ ( s ) ) = E [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s , A t = π ′ ( s ) ] = E π ′ [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s ] ≤ E π ′ [ R t + 1 + γ q π ( S t + 1 , π ′ ( S t + 1 ) ) ∣ S t = s ] = E π ′ [ R t + 1 + γ E π ′ [ R t + 2 + γ v π ( S t + 2 ) ∣ S t + 1 , A t = π ′ ( s + 1 ) ] ∣ S t = s ] = E π ′ [ R t + 1 + γ R t + 2 + γ 2 v π ( S t + 2 ) ∣ S t = s ] ≤ E π ′ [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + γ 3 v π ( S t + 3 ) ∣ S t = s ] ⋮ ≤ E π ′ [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + γ 3 R t + 4 + ⋯ ∣ S t = s ] = v π ′ ( s ) \begin{aligned} v_\pi(s)& \leq q_\pi(s,\pi'(s))\\ &= \mathbb{E}[R_{t+1}+\gamma v_\pi(S_{t+1}) | S_t=s,A_t=\pi'(s)] & \\ &= \mathbb{E}_{\pi'}[R_{t+1}+\gamma v_\pi(S_{t+1}) | S_t=s] \\ & \leq\mathbb{E}_{\pi'}[R_{t+1}+\gamma q_\pi(S_{t+1},\pi'(S_{t+1})) | S_t=s] & \\ &= \mathbb{E}_{\pi'}[R_{t+1}+\gamma \mathbb{E}_{\pi'}[R_{t+2}+\gamma v_\pi(S_{t+2})| S_{t+1},A_t=\pi'(s+1) ] | S_t=s] \\ &= \mathbb{E}_{\pi'}[R_{t+1}+\gamma R_{t+2}+\gamma^2 v_\pi(S_{t+2}) | S_t=s] \\ & \leq\mathbb{E}_{\pi'}[R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3}+\gamma^3 v_\pi(S_{t+3}) | S_t=s] \\ & \vdots \\ & \leq \mathbb{E}_{\pi'}[R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+\gamma^3R_{t+4}+\cdots | S_t=s] \\ &=v_{\pi'}(s) \end{aligned} vπ(s)qπ(s,π(s))=E[Rt+1+γvπ(St+1)St=s,At=π(s)]=Eπ[Rt+1+γvπ(St+1)St=s]Eπ[Rt+1+γqπ(St+1,π(St+1))St=s]=Eπ[Rt+1+γEπ[Rt+2+γvπ(St+2)St+1,At=π(s+1)]St=s]=Eπ[Rt+1+γRt+2+γ2vπ(St+2)St=s]Eπ[Rt+1+γRt+2+γ2Rt+3+γ3vπ(St+3)St=s]Eπ[Rt+1+γRt+2+γ2Rt+3+γ3Rt+4+St=s]=vπ(s)
公式解读:
q π ( s , π ′ ( s ) ) = E [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s , A t = π ′ ( s ) ] q_\pi(s,\pi'(s))= \mathbb{E}[R_{t+1}+\gamma v_\pi(S_{t+1}) | S_t=s,A_t=\pi'(s)] qπ(s,π(s))=E[Rt+1+γvπ(St+1)St=s,At=π(s)]
        ~~~~~~~        这部分将价值函数展开,采用不等式: q π ( s , π ′ ( s ) ) ≥ v π ( s ) q_\pi(s,\pi'(s)) \geq v_\pi(s) qπ(s,π(s))vπ(s)。将 v π ( s ) v_\pi(s) vπ(s)替换为 q π ( s , π ′ ( s ) ) q_\pi(s,\pi'(s)) qπ(s,π(s)),之后对每个状态 s s s都进行替换,得到策略提升的证明结果!

4. 策略迭代

        ~~~~~~~        综合上面两部分讲,为了得到更好的策略,策略的评估 (Evaluation) 以及策略的提升 (improvement) 都非常重要。寻求一个最优策略意味着要反复利用这两点。
        ~~~~~~~        两者的反复组合就是策略迭代 (policy iteraction) 的过程。其变化过程可以表示为:
π 0 → E v π 0 → I π 1 → E v π 1 → I π 2 → E ⋯ → I π ∗ → E v ∗ \pi_0 \overset{E}{\rightarrow} v_{\pi_0} \overset{I}{\rightarrow} \pi_1 \overset{E}{\rightarrow} v_{\pi_1} \overset{I}{\rightarrow} \pi_2 \overset{E}{\rightarrow} \cdots \overset{I}{\rightarrow} \pi_* \overset{E}{\rightarrow} v_{*} π0Evπ0Iπ1Evπ1Iπ2EIπEv
公式解读: 本质上来说,策略迭代包括了两个部分,第一部分是针对给的的策略 π \pi π,可以通过 Bellman 方程评估最优的价值函数,而通过上章内容,借助最优价值函数,我们可以对重新制定更好的策略 π ′ \pi' π…如此重复,就可以得到最优价值函数。
        ~~~~~~~        策略迭代的流程图 如下所示:


图4 策略迭代的流程图

5. 价值迭代

        ~~~~~~~        策略迭代的缺陷在于策略评估需要进行多次迭代。而我们其实是不需要等带价值函数 收敛的,对价值函数的迭代仅进行一次的迭代行为称为 价值迭代 (policy evaluation is stopped after just one sweep),价值迭代的示意图如下:


价值迭代的流程图

6.动态规划的扩展

原位动态规划(In-place dynamic programming)
        ~~~~~~~        直接原地更新下一个状态的v值,而不像同步迭代那样需要额外存储新的v值。在这种情况下,按何种次序更新状态价值有时候会比较有意义。
重要状态优先更新(Priortised Sweeping)
        ~~~~~~~        对于那些重要的状态先更新

写在最后

        ~~~~~~~        关于这本《Reinforcement Learning: An Introduction》的英文原书,确实很难,自己看的也比较慢,希望可以继续坚持。希望能够和更多人一起交流!

链接: 这是《Reinforcement Learning: An Introduction》习题答案的链接,是一个博主自己写的。
链接: 这是《Reinforcement Learning: An Introduction》的代码示例,这个比较厉害.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值