在开始说基于Stochastic Policy的方法之前,我们需要了解一下Policy Gradient的方法。在Policy Gradient里面有一个非常重要的定理:Policy Gradient Theorem。

  • Theorem

  For any differentiable policy πθ(a∣s)\pi_{\theta}(a|s)πθ​(a∣s), for any of policy objective function J=J1,JavR,JavVJ = J_{1},J_{avR},J_{avV}J=J1​,JavR​,JavV​, the policy gradient is:

∂J(θ)∂θ=Eπθ[∂logπθ(a∣s)∂θQπθ(s,a)]\frac{\partial J(\theta)}{\partial \theta} = \mathbb{E}_{\pi_{\theta}}[\frac{\partial \text{log}\pi_{\theta}(a|s)}{\partial \theta}Q^{\pi_{\theta}}(s,a)] ∂θ∂J(θ)​=Eπθ​​[∂θ∂logπθ​(a∣s)​Qπθ​(s,a)]

  上面这个式子也是Stochastic Policy里面的核心梯度公式,你可以不需要证明怎么来的,但是需要理解它背后的思想。

Policy Network Gradients

  如果我们的PolicyNeural Network来近似拟合,最后一层使用Softmax的话,那输出的动作概率可表示为如下函数形式:

πθ(a∣s)=efθ(s,a)∑a′efθ(s,a′)\pi_{\theta}(a | s)=\frac{e^{f_{\theta}(s, a)}}{\sum_{a^{\prime}} e^{f_{\theta}\left(s, a^{\prime}\right)}} πθ​(a∣s)=∑a′​efθ​(s,a′)efθ​(s,a)​

  其中fθ(s,a)f_{\theta}(s,a)fθ​(s,a) is the score function of a state-action pair parametrized by θ\thetaθ, which can be implemented with a neural net

  The gradient of its log-form可表示为:

∂log⁡πθ(a∣s)∂θ=∂fθ(s,a)∂θ−1∑a′efθ,a′)∑a′′efθ(s,a′′)∂fθ(s,a′′)∂θ=∂fθ(s,a)∂θ−Ea′∼πθ(a′∣s)[∂fθ(s,a′)∂θ]\begin{aligned} \frac{\partial \log \pi_{\theta}(a | s)}{\partial \theta} &=\frac{\partial f_{\theta}(s, a)}{\partial \theta}-\frac{1}{\left.\sum_{a^{\prime}} e^{f_{\theta}, a^{\prime}}\right)} \sum_{a^{\prime \prime}} e^{f_{\theta}\left(s, a^{\prime \prime}\right)} \frac{\partial f_{\theta}\left(s, a^{\prime \prime}\right)}{\partial \theta} \\ &=\frac{\partial f_{\theta}(s, a)}{\partial \theta}-\mathbb{E}_{a^{\prime} \sim \pi_{\theta}\left(a^{\prime} | s\right)}\left[\frac{\partial f_{\theta}\left(s, a^{\prime}\right)}{\partial \theta}\right] \end{aligned} ∂θ∂logπθ​(a∣s)​​=∂θ∂fθ​(s,a)​−∑a′​efθ​,a′)1​a′′∑​efθ​(s,a′′)∂θ∂fθ​(s,a′′)​=∂θ∂fθ​(s,a)​−Ea′∼πθ​(a′∣s)​[∂θ∂fθ​(s,a′)​]​

  上述公式中最后一个等式很有意思,它是score function对某一个具体的动作aaa 求梯度,然后减去对所有动作的梯度的期望。(可以思考一下其背后的含义)。

Looking into Policy Gradient

  在Policy Network Gradients里面我们将策略引入Softmax函数进行了拆解求导,得到一个梯度,这个梯度还需要去乘上优势函数再拿去做更新,所以这里需要回顾一下Policy Gradient方法。

  • Let R(π)R(\pi)R(π) denote the expected return of π\piπ:

R(π)=Es0∼ρ0,at∼π(⋅∣st)[∑t=0∞γtrt]R(\pi) = \mathbb{E}_{s_{0} \sim \rho_{0},a_{t} \sim \pi(\cdot|s_{t})} [\sum_{t=0}^{\infty} \gamma^{t}r_{t}] R(π)=Es0​∼ρ0​,at​∼π(⋅∣st​)​[t=0∑∞​γtrt​]

  • We collect experience data with another policy πold\pi_{old}πold​ ,and want to optimize some objective to get a new better policy π\piπ。

  由于强化学习的学习过程需要大量数据,所以我们必须从提高数据使用率,因此过去的policy采集所得到的数据,还是要拿过来用,由此也是off-policy的一种方法。

  • Note that a useful identity

R(π)=R(πold)+Eτ∼π[∑t=0∞γtAπold(st,at)]R(\pi) = R(\pi_{old}) + \mathbb{E}_{\tau \sim \pi}[\sum_{t=0}^{\infty}\gamma^{t} A^{\pi_{old}}(s_{t},a_{t})] R(π)=R(πold​)+Eτ∼π​[t=0∑∞​γtAπold​(st​,at​)]

  其中的Eτ∼π\mathbb{E}_{\tau \sim \pi}Eτ∼π​可以Trajectories sampled from π\piπ。AπoldA^{\pi_{old}}Aπold​ 表示的是优势函数。

  Advantage function展开表示如下:

Aπold(s,a)=Es′∼ρ(s′∣s,a)[r(s)+γVπold(s′)−Vπold(s)]A^{\pi_{old}}(s,a) = \mathbb{E}_{s^{\prime} \sim \rho(s^{\prime}|s,a)}[r(s) + \gamma V^{\pi_{old}}(s^{\prime} )-V^{\pi_{old}}(s)] Aπold​(s,a)=Es′∼ρ(s′∣s,a)​[r(s)+γVπold​(s′)−Vπold​(s)]

很多时候你也会看到一些简洁的表达,比如A(s,a)=Q(s,a)−V(s)A(s,a) = Q(s,a) -V(s)A(s,a)=Q(s,a)−V(s),其中V(s)V(s)V(s)描述的是baseline的思想,而A(s,a)A(s,a)A(s,a)表达的是每个动作选择的好坏,而 Vπ(s)=∑aπ(a∣s)Qπ(s,a)V^{\pi}(s) = \sum_{a}\pi(a|s)Q^{\pi}(s,a)Vπ(s)=∑a​π(a∣s)Qπ(s,a)。

Proof

R(π)=R(πold)+Eτ∼π[∑t=0∞γtAπold(st,at)]R(\pi) = R(\pi_{old}) + \mathbb{E}_{\tau \sim \pi}[\sum_{t=0}^{\infty}\gamma^{t} A^{\pi_{old}}(s_{t},a_{t})] R(π)=R(πold​)+Eτ∼π​[t=0∑∞​γtAπold​(st​,at​)]

  对上述等式证明:

Eτ∼π[∑t=0∞γtAπold(st,at)]=Eτ∼π[∑t=0∞γt(r(st)+γVπold(st+1)−Vπold(st))]=Eτ∼π[−Vπold(s0)+∑t=0∞γtr(st)]=−Es0[Vπold(s0)]+Eτ∼π[∑t=0∞γtr(st)]=−R(πold)+R(π)\begin{aligned} \mathbb{E}_{\tau \sim \pi}\left[\sum_{t=0}^{\infty} \gamma^{t} A^{\pi_{\mathrm{old}}}\left(s_{t}, a_{t}\right)\right] &=\mathbb{E}_{\tau \sim \pi}\left[\sum_{t=0}^{\infty} \gamma^{t}\left(r\left(s_{t}\right)+\gamma V^{\pi_{\mathrm{old}}}\left(s_{t+1}\right)-V^{\pi_{\mathrm{old}}\left(s_{t}\right)}\right)\right] \\ &=\mathbb{E}_{\tau \sim \pi}\left[-V^{\pi_{\mathrm{old}}}\left(s_{0}\right)+\sum_{t=0}^{\infty} \gamma^{t} r\left(s_{t}\right)\right] \\ &=-\mathbb{E}_{s_{0}}\left[V^{\pi_{\mathrm{old}}}\left(s_{0}\right)\right]+\mathbb{E}_{\tau \sim \pi}\left[\sum_{t=0}^{\infty} \gamma^{t} r\left(s_{t}\right)\right]\\ &=-R\left(\pi_{\mathrm{old}}\right)+R(\pi) \end{aligned} Eτ∼π​[t=0∑∞​γtAπold​(st​,at​)]​=Eτ∼π​[t=0∑∞​γt(r(st​)+γVπold​(st+1​)−Vπold​(st​))]=Eτ∼π​[−Vπold​(s0​)+t=0∑∞​γtr(st​)]=−Es0​​[Vπold​(s0​)]+Eτ∼π​[t=0∑∞​γtr(st​)]=−R(πold​)+R(π)​

  那上述公式的直观理解是什么样子的呢?相当于是在老的policy基础之上做一点改进,而改进的优势函数又是基于old policy所得出来的,但action是基于新的策略π\piπ选出来的,所以及时奖励会去修正原来Old policy得出来的VVV。

  • S. Kakadeand J. Langford. Approximately optimal approximate reinforcement learning. ICML. 2002.
More for the Policy Expected Return

  我们再来分析一下advantage function:

Aπold(s,a)=Es′∼ρ(s′∣s,a)[r(s)+γVπold(s′)−Vπold(s)]A^{\pi_{old}}(s,a) = \mathbb{E}_{s^{\prime} \sim \rho(s^{\prime}|s,a)}[r(s) + \gamma V^{\pi_{old}}(s^{\prime} )-V^{\pi_{old}}(s)] Aπold​(s,a)=Es′∼ρ(s′∣s,a)​[r(s)+γVπold​(s′)−Vπold​(s)]

  Want to manipulate R(π)R(\pi)R(π) into an objective that can be estimated from data :

R(π)=R(πold )+Eτ∼π[∑t=0∞γtAπold (st,at)]=R(πold )+∑t=0∞∑sP(st=s∣π)∑aπ(a∣s)γtAπold (s,a)=R(πold )+∑s∑t=0∞γtP(st=s∣π)∑aπ(a∣s)Aπold (s,a)=R(πold )+∑sρπ(s)∑aπ(a∣s)Aπold (s,a)\begin{aligned} R(\pi) &=R\left(\pi_{\text {old }}\right)+\mathbb{E}_{\tau \sim \pi}\left[\sum_{t=0}^{\infty} \gamma^{t} A^{\pi_{\text {old }}}\left(s_{t}, a_{t}\right)\right] \\ &=R\left(\pi_{\text {old }}\right)+\sum_{t=0}^{\infty} \sum_{s} P\left(s_{t}=s | \pi\right) \sum_{a} \pi(a | s) \gamma^{t} A^{\pi_{\text {old }}}(s, a) \\ &=R\left(\pi_{\text {old }}\right)+\sum_{s} \sum_{t=0}^{\infty} \gamma^{t} P\left(s_{t}=s | \pi\right) \sum_{a} \pi(a | s) A^{\pi_{\text {old }}}(s, a) \\ &=R\left(\pi_{\text {old }}\right)+\sum_{s} \rho_{\pi}(s) \sum_{a} \pi(a | s) A^{\pi_{\text {old }}}(s, a) \end{aligned} R(π)​=R(πold ​)+Eτ∼π​[t=0∑∞​γtAπold ​(st​,at​)]=R(πold ​)+t=0∑∞​s∑​P(st​=s∣π)a∑​π(a∣s)γtAπold ​(s,a)=R(πold ​)+s∑​t=0∑∞​γtP(st​=s∣π)a∑​π(a∣s)Aπold ​(s,a)=R(πold ​)+s∑​ρπ​(s)a∑​π(a∣s)Aπold ​(s,a)​

  其中ρπ(s)\rho_{\pi}(s)ρπ​(s)表示的是基于当前策略π\piπ,sss被采样采中的概率,乘以它是哪一次被采中的概率 γt\gamma^{t}γt。

  但是上述等式依然要从新的策略π\piπ里面去sample数据,当策略改变之后,要重新sample数据才可以更新。为了解决这个问题,引入重要性采样。

R(π)=R(πold )+∑sρπ(s)∑aπ(a∣s)Aπold (s,a)=R(πold )+Es∼π,a∼π[Aπold (s,a)]=R(πold )+Es∼π,a∼πold [π(a∣s)πold (a∣s)Aπold (s,a)]\begin{aligned} R(\pi) &=R\left(\pi_{\text {old }}\right)+\sum_{s} \rho_{\pi}(s) \sum_{a} \pi(a | s) A^{\pi_{\text {old }}}(s, a) \\ &=R\left(\pi_{\text {old }}\right)+\mathbb{E}_{s \sim \pi, a \sim \pi}\left[A^{\pi_{\text {old }}}(s, a)\right] \\ &=R\left(\pi_{\text {old }}\right)+\mathbb{E}_{s \sim \pi, a \sim \pi_{\text {old }}}\left[\frac{\pi(a | s)}{\pi_{\text {old }}(a | s)} A^{\pi_{\text {old }}}(s, a)\right] \end{aligned} R(π)​=R(πold ​)+s∑​ρπ​(s)a∑​π(a∣s)Aπold ​(s,a)=R(πold ​)+Es∼π,a∼π​[Aπold ​(s,a)]=R(πold ​)+Es∼π,a∼πold ​​[πold ​(a∣s)π(a∣s)​Aπold ​(s,a)]​

  也就是state sss 从新的policy采样,aaa从old policy采样。上面这一步是完全恒等,但是 sss 依然需要从新的policy上面来采样。

Surrogate Loss Function
  • Define a surrogate loss function based on sampled data that ignores change in state distribution :

L(π)=Es∼πold,a∼πold [π(a∣s)πold (a∣s)Aπold (s,a)]L(\pi) = \mathbb{E}_{s \sim \pi_{old}, a \sim \pi_{\text {old }}}\left[\frac{\pi(a | s)}{\pi_{\text {old }}(a | s)} A^{\pi_{\text {old }}}(s, a)\right] L(π)=Es∼πold​,a∼πold ​​[πold ​(a∣s)π(a∣s)​Aπold ​(s,a)]

  此时数据可以完全由old ploicy采样得到。这个可替代(surrogate)的loss function与之前的loss function区别就在于state是从哪个policy sample出来的。上述等式能够替代的条件是old policy和新的policy差距不要太大。

  • 小节

  现在我们来对上述过程做一个小结:

  开始我们是有一个Target function

R(π)=R(πold )+Es∼π,a∼π[π(a∣s)Aπold (s,a)]R(\pi) =R\left(\pi_{\text {old }}\right)+\mathbb{E}_{s \sim \pi, a \sim \pi}[ \pi(a | s) A^{\pi_{\text {old }}}(s, a) ] R(π)=R(πold ​)+Es∼π,a∼π​[π(a∣s)Aπold ​(s,a)]

  之后通过重要性采样,使得其在old policy上采样:

L(π)=Es∼πold,a∼πold [π(a∣s)πold (a∣s)Aπold (s,a)]L(\pi) = \mathbb{E}_{s \sim \pi_{old}, a \sim \pi_{\text {old }}}\left[\frac{\pi(a | s)}{\pi_{\text {old }}(a | s)} A^{\pi_{\text {old }}}(s, a)\right] L(π)=Es∼πold​,a∼πold ​​[πold ​(a∣s)π(a∣s)​Aπold ​(s,a)]

  然后我们对其进行求导:

∇θL(πθ)∣θold =Es∼πold ,a∼πold [∇θπθ(a∣s)πold (a∣s)Aπold (s,a)]∣θold =Es∼πold ,a∼πold [πθ(a∣s)∇θlog⁡πθ(a∣s)πold (a∣s)Aπold (s,a)]∣θold =Es∼πold ,a∼πθ[∇θlog⁡πθ(a∣s)Aπold (s,a)]∣θold =∇θR(πθ)∣θold \begin{aligned} \left.\nabla_{\theta} L\left(\pi_{\theta}\right)\right|_{\theta_{\text {old }}} &=\left.\mathbb{E}_{s \sim \pi_{\text {old }}, a \sim \pi_{\text {old }}}\left[\frac{\nabla_{\theta} \pi_{\theta}(a | s)}{\pi_{\text {old }}(a | s)} A^{\pi_{\text {old }}}(s, a)\right]\right|_{\theta_{\text {old }}} \\ &=\left.\mathbb{E}_{s \sim \pi_{\text {old }}, a \sim \pi_{\text {old }}}\left[\frac{\pi_{\theta}(a | s) \nabla_{\theta} \log \pi_{\theta}(a | s)}{\pi_{\text {old }}(a | s)} A^{\pi_{\text {old }}}(s, a)\right]\right|_{\theta_{\text {old }}} \\ &=\left.\mathbb{E}_{s \sim \pi_{\text {old }}, a \sim \pi_{\theta}}\left[\nabla_{\theta} \log \pi_{\theta}(a | s) A^{\pi_{\text {old }}}(s, a)\right]\right|_{\theta_{\text {old }}} \\ &=\left.\nabla_{\theta} R\left(\pi_{\theta}\right)\right|_{\theta_{\text {old }}} \end{aligned} ∇θ​L(πθ​)∣θold ​​​=Es∼πold ​,a∼πold ​​[πold ​(a∣s)∇θ​πθ​(a∣s)​Aπold ​(s,a)]∣∣∣∣​θold ​​=Es∼πold ​,a∼πold ​​[πold ​(a∣s)πθ​(a∣s)∇θ​logπθ​(a∣s)​Aπold ​(s,a)]∣∣∣∣​θold ​​=Es∼πold ​,a∼πθ​​[∇θ​logπθ​(a∣s)Aπold ​(s,a)]∣θold ​​=∇θ​R(πθ​)∣θold ​​​

我的微信公众号名称:深度学习与先进智能决策
微信公众号ID:MultiAgent1024
公众号介绍:主要研究分享深度学习、机器博弈、强化学习等相关内容!期待您的关注,欢迎一起学习交流进步!

手把手教你强化学习(十) 基于Stochastic Policy的深度强化学习方法相关推荐

  1. 【强化学习】变革尚未成功:深度强化学习研究的短期悲观与长期乐观

    选自alexirpan 机器之心编译 参与:Nurhachu Null.刘晓坤 深度强化学习是最接近于通用人工智能(AGI)的范式之一.不幸的是,迄今为止这种方法还不能真正地奏效.在本文中,作者将为我 ...

  2. 强化学习《基于策略 - Policy Grident》

    之前学习了机器学习,深度学习,NLP,都是均有涉猎,也不是贪心不足,而是保持着对新奇领域的好奇心,不断去学习,看看是啥样子的, 最近看了李宏毅老师的教学视频,感觉哈,要学习的东西好多,AI领域太广泛了 ...

  3. QUANT[14]强化学习RL论文1:通过深度强化学习实现人的层次控制

    论文<通过深度强化学习实现人的层次控制>解读 目录 1. 摘要 2.模型 3. 实验设置 4. 结果 5. 结论 6.正文翻译 1. 摘要 The theory of reinforcem ...

  4. 《强化学习周刊》第10期:强化学习应用之计算机视觉

    No.10 智源社区 强化学习组 强 化 学  习 研究 观点 资源 活动 关于周刊 强化学习作为人工智能领域研究热点之一,它在计算机视觉领域中的应用研究进展与成果也引发了众多关注.为帮助研究与工程人 ...

  5. 【强化学习】一文带你理清强化学习

    整理不易,希望留个赞再走哦!! 学习路线 这个图描述的比较清晰,蓝框里是整个强化学习的一些概念基础了,橙色是一些学习方法,可以针对性的选择一些,废话不多说,接下来就按照这个路线图展开. 1. 马尔可夫 ...

  6. 强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)

    在强化学习(十七) 基于模型的强化学习与Dyna算法框架中,我们讨论基于模型的强化学习方法的基本思路,以及集合基于模型与不基于模型的强化学习框架Dyna.本文我们讨论另一种非常流行的集合基于模型与不基 ...

  7. 强化学习(十九) AlphaGo Zero强化学习原理

    在强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)中,我们讨论了MCTS的原理和在棋类中的基本应用.这里我们在前一节MCTS的基础上,讨论下DeepMind的AlphaGo Zero强化学 ...

  8. Colaboratory:手把手教你使用Google免费的云端IDE进行深度学习(免费的GPU加速)的详细攻略

    Colaboratory:手把手教你使用Google免费的云端IDE进行深度学习(免费的GPU加速)的详细攻略 目录 Colaboratory简介 Colaboratory使用步骤 (1).首先登陆谷 ...

  9. 深度强化学习:基于Python的理论及实践(英文版)

    深度强化学习结合了深度学习和强化学习,使人工智能体能够在没有监督的情况下学习如何解决顺序决策问题.在过去的十年中,深度强化学习在一系列问题上取得了显著的成果,涵盖从单机游戏和多人游戏到机器人技术等方方 ...

  10. 强化学习(十六) 深度确定性策略梯度(DDPG)

    在强化学习(十五) A3C中,我们讨论了使用多线程的方法来解决Actor-Critic难收敛的问题,今天我们不使用多线程,而是使用和DDQN类似的方法:即经验回放和双网络的方法来改进Actor-Cri ...

最新文章

  1. 对于出差的看法_我对于挑选背包的一些小建议
  2. mysql select time,MySql查询时间段的方法
  3. php前端响应式框架,响应式css前端框架有哪些
  4. 查看mysql8的log位置
  5. 深入学习SAP UI5框架代码系列之六:SAP UI5控件数据绑定的实现原理
  6. 2018.12.11——全局变量与局部变量
  7. C# ListView用法详解
  8. 接口访问次数_如何基于spring开发自定义注解实现对接口访问频次限制?
  9. 俄罗斯方块控制台程序C++
  10. internet缓存Temp中的tmp文件
  11. sparksql处理mysql_Spark记录-SparkSQL远程操作MySQL和ORACLE
  12. 系统内核溢出漏洞提权之Windows Exploit Suggester
  13. ucml 连接虚字段
  14. coap php 发送,CoAP 客户端
  15. java数字格式化为货币字符串_Java把数字格式化为货币字符串实例代码
  16. 服务器搭建网站完整教程
  17. 手机2020 QQ 群文件下载存储路径
  18. Leetcode-数据结构-53.最大子数组和
  19. 小程序集成Three.js,使用npm安装gsap动画库
  20. 身为程序员,我敢和你打赌100块,这个数学符号你根本不会认不会写

热门文章

  1. python之optparse模块
  2. http://www.codeproject.com/Questions/117324/upload-file-in-c-with-HttpWebRequest
  3. 计算机网络数据链路层之点对点协议PPP
  4. 游戏筑基开发之C语言回调函数使用实例及其.h库封装实例
  5. Kubernetes之集群环境搭建
  6. 团队博客-第三周:需求改进系统设计(科利尔拉弗队)
  7. DDL DML DCL 简介
  8. ducument.ready不生效的问题 ruby on rails
  9. 〖Linux〗zigbee实验之cc2430的cc debugger固件升级实录
  10. 高性能tornado框架简单实现restful接口及运维开发实例