3.深度强化学习 | 您所在的位置:网站首页 › 伪代码的特点 › 3.深度强化学习 |
文章地址: PPO: Proximal Policy Optimization Algorithms 一. PPO资料PPO原理讲解BLOG①:这篇blog详细讲了PPO算法的产生过程及原理,包含部分理论推导,看完这篇blog基本就理解PPO了。 PPO原理讲解BLOG②:可参考,其中包含部分tensorflow实现代码。 二. PPO原理简述 2.1 背景PPO是基于基本的Policy Gradient进行改进的算法,关于PG的更新过程这里不详细描述了,可以根据上述BLOG①或其他资料推导理解一下即可。总之,得到的关于PG的策略更新过程的loss可以写为: L ( θ ) = E [ l o g π ( a ∣ s , θ ) f ( s , a ) ] = ∑ l o g π ( a ∣ s , θ ) f ( s , a ) L(\theta) = \mathrm{E} [log\pi(a|s,\theta)f(s,a)]= \sum log\pi(a|s,\theta)f(s,a) L(θ)=E[logπ(a∣s,θ)f(s,a)]=∑logπ(a∣s,θ)f(s,a) L P G ( θ ) = E ^ t [ log π θ ( a t ∣ s t ) A ^ t ] L^{P G}(\theta)=\hat{\mathbb{E}}_{t}\left[\log \pi_{\theta}\left(a_{t} \mid s_{t}\right) \hat{A}_{t}\right] LPG(θ)=E^t[logπθ(at∣st)A^t] 其中 f ( s , a ) f(s,a) f(s,a)是对状态动作对的价值评估,计算该值有多种方式(可查看BLOG①),通常采用Advantage的方式更优,但为了更好的平衡偏差和方差的问题,一般采用GAE即 T D ( λ ) TD(\lambda) TD(λ)的形式 T D ( λ ) TD(\lambda) TD(λ)可以理解为对n个n-step 的估计值作加权平均得到的结果 2.2 原理 PG所存在的一个问题是在更新计算Advantage时并不准确,实际上是有偏差的,如果policy一次更新得太远,那么下次基于更新后的policy进行采样的动作就会存在很大的偏差,如此就会陷入一个恶性循环,TRPO的核心思想是将policy的更新约束在一个trust region内,这样就可保证policy整个更新过程是单调上升的。如下图所示: IS实际上实现的过程就是用一种分布的采样均值来代替另一种分布的期望 PPO的主要贡献是提出了clipped surrogate objective,如下所示 ϵ \epsilon ϵ通常来说是一个比较小的值,论文中作者设置为0.2时在比较好的实验效果,这个clip操作实际上是限制了策略更新的幅度,避免策略的一次更新偏离太远。 PPO论文中还给出了对TRPO方法的一种近似/替代 PPO最终的loss如下: openai dota five对sample reuse有不同的定义 先写到这里吧,后续有好的资料或者代码实现再更新 |
CopyRight 2018-2019 实验室设备网 版权所有 |