1、前言
个人感觉这里讲的非常好:https://spinningup.openai.com/en/latest/algorithms/ppo.html
Proximal Policy Optimization(PPO)是 Policy Gradient 的一种变形,关于 Policy Gradient 有兴趣的同学可以去看我另一篇博:强化学习系列之Policy Gradient
首先我们需要了解两个概率:On-policy 和 Off-policy。我们知道在强化学习里面,我们要学习的就是一个 Agent 。如果我们要学习的 Agent 和与环境互动的 Agent 是同一个的话,那么这样叫做 On-policy,反之就是 Off-policy。更形象地来说,就是要学习的那个 Agent 一边与环境互动一边学习,这样就是 On-policy;如果他在旁边看别人玩,来学习的话,叫做 off-policy。
在 Policy Gradient 中,我们知道,每一次更新,我们都需要 sample 很多 data,更新后,这些 data 就没有用了,Proximal Policy Optimization就是解决的这个问题。
2、重要性采样
重要性采样是一个通用的方法,因为后面需要用到,所以在这写一下,这个我也有单独写一个博客,有兴趣的可以去看一下。
重要性采样是用一个新的采样分布来代替原有的采样分布,使得采样更加容易或高效。
E x ∼ p [ f ( x ) ] = ∫ f ( x ) p ( x ) d x = ∫ f ( x ) p ( x ) q ( x ) q ( x ) d x = E x ∼ q [ f ( x ) p ( x ) q ( x ) ] \begin{aligned} E_{x \sim p}[f(x)] &= \int f(x)p(x)dx\\\\ &= \int f(x) \frac{p(x)}{q(x)}q(x)dx \\\\ &= E_{x \sim q}[f(x) \frac{p(x)}{q(x)}] \end{aligned} Ex∼p[f(x)]=∫f(x)p(x)dx=∫f(x)q(x)p(x)q(x)dx=Ex∼q[f(x)q(x)p(x)]
从式子中我们可以看出,我们不直接从 p ( x ) p(x) p(x) 里面采样,而是从 q ( x ) q(x) q(x) 里面采样,但是由于两个分布之间有差异,所以我们乘以一个 p ( x ) q ( x ) \frac{p(x)}{q(x)} q(x)p(x) 以消除这两个分布间的差异。
3、公式推导
在 Policy Gradient 中,我们对 Reward 的期望求梯度:
∇ R θ ‾ = E τ ∼ p θ ( τ ) [ R ( τ ) ∇ log p θ ( τ ) ] \begin{aligned} \nabla \overline{R_\theta} &= E_{
{\tau} \sim {p_{\theta}(\tau)}} [R(\tau) \nabla \log p_\theta (\tau)] \\\\ \end{aligned} ∇Rθ=Eτ∼pθ(τ)[R(τ)∇logpθ(τ)]
根据重要性采样变换后:
∇ R θ ‾ = E τ ∼ p θ ′ ( τ ) [ p θ ( τ ) p θ ′ ( τ ) R ( τ ) ∇ log p θ ( τ ) ] \begin{aligned} \nabla \overline{R_\theta} &= E_{
{\tau} \sim {p_{
{\theta}'}(\tau)}} [\frac{p_{\theta}(\tau)}{p_{
{\theta}'}(\tau)} R(\tau) \nabla \log p_\theta (\tau)] \\\\ \end{aligned} ∇Rθ=Eτ∼pθ′(τ)[

本文深入讲解了Proximal Policy Optimization (PPO)算法,一种基于Policy Gradient的改进方法。通过重要性采样和限制策略更新的策略,PPO解决了数据重复使用的问题,提高了学习效率。文章详细介绍了PPO的数学原理,包括公式推导和与TRPO的关系。
最低0.47元/天 解锁文章
3554

被折叠的 条评论
为什么被折叠?



