手把手教你强化学习(十) 基于Stochastic Policy的深度强化学习方法
在开始说基于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
如果我们的Policy
用Neural 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′)1a′′∑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的深度强化学习方法相关推荐
- 【强化学习】变革尚未成功:深度强化学习研究的短期悲观与长期乐观
选自alexirpan 机器之心编译 参与:Nurhachu Null.刘晓坤 深度强化学习是最接近于通用人工智能(AGI)的范式之一.不幸的是,迄今为止这种方法还不能真正地奏效.在本文中,作者将为我 ...
- 强化学习《基于策略 - Policy Grident》
之前学习了机器学习,深度学习,NLP,都是均有涉猎,也不是贪心不足,而是保持着对新奇领域的好奇心,不断去学习,看看是啥样子的, 最近看了李宏毅老师的教学视频,感觉哈,要学习的东西好多,AI领域太广泛了 ...
- QUANT[14]强化学习RL论文1:通过深度强化学习实现人的层次控制
论文<通过深度强化学习实现人的层次控制>解读 目录 1. 摘要 2.模型 3. 实验设置 4. 结果 5. 结论 6.正文翻译 1. 摘要 The theory of reinforcem ...
- 《强化学习周刊》第10期:强化学习应用之计算机视觉
No.10 智源社区 强化学习组 强 化 学 习 研究 观点 资源 活动 关于周刊 强化学习作为人工智能领域研究热点之一,它在计算机视觉领域中的应用研究进展与成果也引发了众多关注.为帮助研究与工程人 ...
- 【强化学习】一文带你理清强化学习
整理不易,希望留个赞再走哦!! 学习路线 这个图描述的比较清晰,蓝框里是整个强化学习的一些概念基础了,橙色是一些学习方法,可以针对性的选择一些,废话不多说,接下来就按照这个路线图展开. 1. 马尔可夫 ...
- 强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)
在强化学习(十七) 基于模型的强化学习与Dyna算法框架中,我们讨论基于模型的强化学习方法的基本思路,以及集合基于模型与不基于模型的强化学习框架Dyna.本文我们讨论另一种非常流行的集合基于模型与不基 ...
- 强化学习(十九) AlphaGo Zero强化学习原理
在强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)中,我们讨论了MCTS的原理和在棋类中的基本应用.这里我们在前一节MCTS的基础上,讨论下DeepMind的AlphaGo Zero强化学 ...
- Colaboratory:手把手教你使用Google免费的云端IDE进行深度学习(免费的GPU加速)的详细攻略
Colaboratory:手把手教你使用Google免费的云端IDE进行深度学习(免费的GPU加速)的详细攻略 目录 Colaboratory简介 Colaboratory使用步骤 (1).首先登陆谷 ...
- 深度强化学习:基于Python的理论及实践(英文版)
深度强化学习结合了深度学习和强化学习,使人工智能体能够在没有监督的情况下学习如何解决顺序决策问题.在过去的十年中,深度强化学习在一系列问题上取得了显著的成果,涵盖从单机游戏和多人游戏到机器人技术等方方 ...
- 强化学习(十六) 深度确定性策略梯度(DDPG)
在强化学习(十五) A3C中,我们讨论了使用多线程的方法来解决Actor-Critic难收敛的问题,今天我们不使用多线程,而是使用和DDQN类似的方法:即经验回放和双网络的方法来改进Actor-Cri ...
最新文章
- 对于出差的看法_我对于挑选背包的一些小建议
- mysql select time,MySql查询时间段的方法
- php前端响应式框架,响应式css前端框架有哪些
- 查看mysql8的log位置
- 深入学习SAP UI5框架代码系列之六:SAP UI5控件数据绑定的实现原理
- 2018.12.11——全局变量与局部变量
- C# ListView用法详解
- 接口访问次数_如何基于spring开发自定义注解实现对接口访问频次限制?
- 俄罗斯方块控制台程序C++
- internet缓存Temp中的tmp文件
- sparksql处理mysql_Spark记录-SparkSQL远程操作MySQL和ORACLE
- 系统内核溢出漏洞提权之Windows Exploit Suggester
- ucml 连接虚字段
- coap php 发送,CoAP 客户端
- java数字格式化为货币字符串_Java把数字格式化为货币字符串实例代码
- 服务器搭建网站完整教程
- 手机2020 QQ 群文件下载存储路径
- Leetcode-数据结构-53.最大子数组和
- 小程序集成Three.js,使用npm安装gsap动画库
- 身为程序员,我敢和你打赌100块,这个数学符号你根本不会认不会写
热门文章
- python之optparse模块
- http://www.codeproject.com/Questions/117324/upload-file-in-c-with-HttpWebRequest
- 计算机网络数据链路层之点对点协议PPP
- 游戏筑基开发之C语言回调函数使用实例及其.h库封装实例
- Kubernetes之集群环境搭建
- 团队博客-第三周:需求改进系统设计(科利尔拉弗队)
- DDL DML DCL 简介
- ducument.ready不生效的问题 ruby on rails
- 〖Linux〗zigbee实验之cc2430的cc debugger固件升级实录
- 高性能tornado框架简单实现restful接口及运维开发实例