强化学习-李(四):PPO(Proximal Policy Optimization近端策略优化)【用离线数据训练的PolicyGradient算法;重要性采样:On->Off;前提:两者分布差别小】

强化学习算法 { Value-Based Approach: Critic { State value function  V π ( s ) State-Action value function  Q π ( s , a )      ⟹     Q-Learning算法【训练Critic/值函数的参数:基于值函数结果来“间接”挑选最优 π】 Policy-Based Approach:Policy Gradient算法【“直接”训练  Actor /Policy π 的参数】    ⟹     PPO算法 Actor+Critic【使用Critic(比如Q-Learning)作为Policy Gradient算法(包括PPO)中评估策略好坏(Advantage)的手段】 \begin{aligned} \text{强化学习算法} \begin{cases} \text{Value-Based Approach:\color{violet}{Critic}} \begin{cases} \text{State value function $V^π(s)$}\\[2ex] \text{State-Action value function $Q^π(s,a)$ $\implies$ Q-Learning算法【训练Critic/值函数的参数:基于值函数结果来“间接”挑选最优 π】} \end{cases} \\[6ex] \text{Policy-Based Approach:Policy Gradient算法【“直接”训练 \color{violet}{Actor}\color{black}{/Policy π 的参数】}} \text{$\implies$ PPO算法} \\[2ex] \text{Actor+Critic}【\text{使用Critic(比如Q-Learning)作为Policy Gradient算法(包括PPO)中评估策略好坏(Advantage)的手段}】 \end{cases} \end{aligned} 强化学习算法 Value-Based ApproachCritic State value function Vπ(s)State-Action value function Qπ(s,a)  Q-Learning算法【训练Critic/值函数的参数:基于值函数结果来间接挑选最优 πPolicy-Based ApproachPolicy Gradient算法【直接训练 Actor/Policy π 的参数】 PPO算法Actor+Critic使用Critic(比如Q-Learning)作为Policy Gradient算法(包括PPO)中评估策略好坏(Advantage)的手段
在这里插入图片描述
OpenAI 把PPO当作他们默认强化学习算法

一、On-policy v.s. Off-policy

The on-policy approach in the preceding section is actually a compromise—it learns action values not for the optimal policy, but for a near-optimal policy that still explores. on-policy算法是在保证跟随最优策略的基础上同时保持着对其它动作的探索性,对于on-policy算法来说如要保持探索性则必然会牺牲一定的最优选择机会。

A more straightforward approach is to use two policies, one that is learned about and that becomes the optimal policy, and one that is more exploratory and is used to generate behavior. 有一个更加直接的办法就是在迭代过程中允许存在两个policy,一个用于生成学习过程的动作,具有很强的探索性,另外一个则是由值函数产生的最优策略,这个方法就被称作off-policy。

The policy being learned about is called the target policy, and the policy used to generate behavior is called the behavior policy.In this case we say that learning is from data “off” the target policy, and the overall process is termed off-policy learning.

1、On-policy Algorithm

  • “要训练的Agent” 跟 “和环境互动的Agent” 是同一个的话,这个叫做 on-policy。即:要训练的Agent,它是一边跟环境互动,一边做学习这个叫 on-policy。比如:Policy Gradient。Policy Gradient 是一个会花很多时间来取样的算法。Policy Gradient 算法的大多数时间都在取样,Agent/Actor跟环境做互动取样后update参数一次(只能 update 参数一次),接下来就要重新再去环境里取样,然后才能再次 update 参数一次,这非常花时间。

2、Off-policy Algorithm

  • “要训练的Agent” 跟 “和环境互动的Agent” 不是同一个的话,这个叫做 off-policy。如果它是在旁边看别人玩,透过看别人玩,来学习的话,这个叫做 Off-policy。
  • 在迭代过程中允许存在两个policy, π θ π_θ πθ π θ ′ π_{θ'} πθ。其中 π θ ′ π_{θ'} πθ 一个用于生成学习过程的动作,具有很强的探索性,另外一个 π θ π_θ πθ 则是由值函数产生的最优策略,这个方法就被称作off-policy。
  • 从 on-policy 变成 off-policy 的好处就是:用 π θ ′ π_{θ'} πθ 去跟环境做互动,用 π θ ′ π_{θ'} πθ 采样到的数据集去训练 π θ π_θ πθ
  • π θ ′ π_{θ'} πθ 从环境中取样去训练 π θ π_θ πθ 意味着 π θ ′ π_{θ'} πθ 从环境中取的样可以用非常多次, π θ π_θ πθ 在做梯度上升的时候,就可以执行梯度上升好几次,, π θ π_θ πθ 可以 update 参数好几次,都只要用同一笔取样数据。,这样就会比较有效率

二、Importance Sampling(重要性采样)

1、Importance Sampling介绍

  • off-policy与重要性采样(Importance Sampling)密不可分
  • Importance Sampling主要的作用在于通过一个简单的可预测的分布去估计一个服从另一个分布的随机变量的均值。
  • 在实际应用off-policy时,迭代过程通常会有两个策略,一个是Behavior policy,用于生成学习过程所需要选择的动作,这一个简单的,探索性非常强的关于动作选择的分布;另一个是Target policy,这是我们最终希望得到的最优动作选择分布。
  • 应用Importance Sampling之处在于通过Behavior policy去估计Target policy可能反馈回来的收益的均值,即用一个简单分布去估计服从另一个分布的随机变量的均值。
  • 如果可以从 p ( x ) p(x) p(x) 分布取样时,
    E x ∼ p [ f ( x ) ] ≈ 1 N ∑ i = 1 N f ( x i ) \begin{aligned} \mathbb{E}_{x\sim p}[f(x)]≈\cfrac1N\sum^N_{i=1}f(x_i) \end{aligned} Exp[f(x)]N1i=1Nf(xi)
    你要计算这个 f ( x ) f(x) f(x) 的期望值 E x ∼ p [ f ( x ) ] \mathbb{E}_{x\sim p}[f(x)] Exp[f(x)],怎么做呢?假设你没有办法对 p p p 这个 distribution 做积分的话,那你可以从 p p p 这个 distribution去sample 一些 data,记为 x i x_i xi,那么 f ( x ) f(x) f(x) 的期望值就等同是你 sample 到的 x i x_i xi,把 x i x_i xi 带到 f ( x ) f(x) f(x) 里面,然后取它的平均值 1 N ∑ i = 1 N f ( x i ) \begin{aligned}\cfrac1N\sum^N_{i=1}f(x_i)\end{aligned} N1i=1Nf(xi) 来近似这个期望值 E x ∼ p [ f ( x ) ] \mathbb{E}_{x\sim p}[f(x)] Exp[f(x)]
    简而言之:假设你知道怎么从 p p p 这个 distribution 做 sample 的话,你只需要从 p p p 这个 distribution,做 sample 来通过平均 1 N ∑ i = 1 N f ( x i ) \begin{aligned}\cfrac1N\sum^N_{i=1}f(x_i)\end{aligned} N1i=1Nf(xi)计算这个期望值 E x ∼ p [ f ( x ) ] \mathbb{E}_{x\sim p}[f(x)] Exp[f(x)]
  • 如果无法从 p ( x ) p(x) p(x) 分布取样,但是可以从 q ( x ) q(x) q(x) 分布取样时
    E x ∼ p [ f ( x ) ] = ∫ f ( x ) p ( x ) d x = ∫ f ( x ) p ( x ) q ( x ) q ( x ) d x = E x ∼ q [ p ( x ) q ( x ) f ( x ) ] \begin{aligned} \mathbb{E}_{x\sim p}[f(x)]=\int f(x)p(x)dx=\int f(x)\cfrac{p(x)}{q(x)}q(x)dx=\mathbb{E}_{x\sim q}[\color{violet}{\cfrac{p(x)}{q(x)}}\color{black}{f(x)]} \end{aligned} Exp[f(x)]=f(x)p(x)dx=f(x)q(x)p(x)q(x)dx=Exq[q(x)p(x)f(x)]
    其中的 p ( x ) q ( x ) \color{violet}{\cfrac{p(x)}{q(x)}} q(x)p(x) 称为 Important Weight。
  • 原则上, p ( x ) p(x) p(x) q ( x ) q(x) q(x) 可以任意取,但是实践中, p ( x ) p(x) p(x) q ( x ) q(x) q(x) 两分布要尽可能像,否则效果不好。因为 f ( x ) f(x) f(x) f ( x ) p ( x ) q ( x ) f(x)\cfrac{p(x)}{q(x)} f(x)q(x)p(x) 的分布式不同的,如果取样无限次,则两者结果相同。但是在有限次取样后的结果是不同的

2、Issue of Importance Sampling【 p ( x ) p(x) p(x) q ( x ) q(x) q(x) 分布差距导致的问题】

f ( x ) f(x) f(x) f ( x ) p ( x ) q ( x ) f(x)\cfrac{p(x)}{q(x)} f(x)q(x)p(x)这两个 random variable 它的 mean 一样,并不代表他们的 方差(var)一样。

通过公式:
VAR ⁡ [ X ] = E [ X 2 ] − ( E [ X ] ) 2 \operatorname{VAR}[X]=E\left[X^{2}\right]-(E[X])^{2} VAR[X]=E[X2](E[X])2
可计算得到:
Var ⁡ x ∼ p [ f ( x ) ] = E x ∼ p [ f ( x ) 2 ] − ( E x ∼ p [ f ( x ) ] ) 2 ( 1 ) \begin{aligned} \color{red}{\operatorname{Var}_{x \sim p}[f(x)]=\mathbb{E}_{x \sim p}\left[f(x)^{2}\right]-\left(\mathbb{E}_{x \sim p}[f(x)]\right)^{2}} \quad (1) \end{aligned} Varxp[f(x)]=Exp[f(x)2](Exp[f(x)])21

Var ⁡ x ∼ q [ f ( x ) p ( x ) q ( x ) ] = E x ∼ q [ ( f ( x ) p ( x ) q ( x ) ) 2 ] − ( E x ∼ q [ f ( x ) p ( x ) q ( x ) ] ) 2 = E x ∼ q [ p ( x ) q ( x ) ⋅ f ( x ) 2 ⋅ p ( x ) q ( x ) ] − ( E x ∼ q [ f ( x ) p ( x ) q ( x ) ] ) 2 \begin{aligned} \operatorname{Var}_{x \sim q}\left[f(x) \cfrac{p(x)}{q(x)}\right] &=\mathbb{E}_{x \sim q}\left[\left(f(x) \cfrac{p(x)}{q(x)}\right)^{2}\right]-\left(\mathbb{E}_{x \sim q}\left[f(x) \cfrac{p(x)}{q(x)}\right]\right)^{2}\\ &=\mathbb{E}_{x \sim q}\left[\cfrac{p(x)}{q(x)}·f(x)^{2}·\cfrac{p(x)}{q(x)}\right]-\left(\mathbb{E}_{x \sim q}\left[f(x) \cfrac{p(x)}{q(x)}\right]\right)^{2}\\ \end{aligned} Varxq[f(x)q(x)p(x)]=Exq (f(x)q(x)p(x))2 (Exq[f(x)q(x)p(x)])2=Exq[q(x)p(x)f(x)2q(x)p(x)](Exq[f(x)q(x)p(x)])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 [ p ( x ) q ( x ) f ( x ) ] \begin{aligned} \mathbb{E}_{x\sim p}[f(x)]=\int f(x)p(x)dx=\int f(x)\cfrac{p(x)}{q(x)}q(x)dx=\mathbb{E}_{x\sim q}[\color{violet}{\cfrac{p(x)}{q(x)}}\color{black}{f(x)]} \end{aligned} Exp[f(x)]=f(x)p(x)dx=f(x)q(x)p(x)q(x)dx=Exq[q(x)p(x)f(x)]

∴ ∴
E x ∼ q [ p ( x ) q ( x ) ⋅ f ( x ) 2 ⋅ p ( x ) q ( x ) ] = E x ∼ p [ f ( x ) 2 p ( x ) q ( x ) ] \mathbb{E}_{x \sim q}\left[\cfrac{p(x)}{q(x)}·f(x)^{2}·\cfrac{p(x)}{q(x)}\right]=\mathbb{E}_{x \sim p}\left[f(x)^{2} \cfrac{p(x)}{q(x)}\right] Exq[q(x)p(x)f(x)2q(x)p(x)]=Exp[f(x)2q(x)p(x)]

∴ ∴
Var ⁡ x ∼ q [ f ( x ) p ( x ) q ( x ) ] = E x ∼ p [ f ( x ) 2 p ( x ) q ( x ) ] − ( E x ∼ p [ f ( x ) ] ) 2 ( 2 ) \begin{aligned} \color{red}{\operatorname{Var}_{x \sim q}\left[f(x) \cfrac{p(x)}{q(x)}\right]=\mathbb{E}_{x \sim p}\left[f(x)^{2} \cfrac{p(x)}{q(x)}\right]-\left(\mathbb{E}_{x \sim p}[f(x)]\right)^{2}}\quad (2) \end{aligned} Varxq[f(x)q(x)p(x)]=Exp[f(x)2q(x)p(x)](Exp[f(x)])22

通过式(1)、(2)可看出:如果 p ( x ) q ( x ) \cfrac{p(x)}{q(x)} q(x)p(x) 很大的话,那么实际采样的 Var ⁡ x ∼ q [ f ( x ) p ( x ) q ( x ) ] \operatorname{Var}_{x \sim q}\left[f(x) \cfrac{p(x)}{q(x)}\right] Varxq[f(x)q(x)p(x)] 就会与希望的 Var ⁡ x ∼ p [ f ( x ) ] \operatorname{Var}_{x \sim p}[f(x)] Varxp[f(x)] 差别很大。

虽然理论上如果 f ( x ) f(x) f(x) f ( x ) p ( x ) q ( x ) f(x)\cfrac{p(x)}{q(x)} f(x)q(x)p(x)这两个 random variable 它的 mean/Expectation 一样,那么只要对 p p p q q q这两个分布采样足够多次的话,你得到的结果会是一样的。

但是假设你 sample 的次数不够多,因为它们的 various 差距是很大的,所以你就有可能得到非常大的差别。
在这里插入图片描述
假设:

  • 蓝色的曲线代表 p p p 的 distribution;
  • 绿色的曲线代表 q q q 的 distribution;
  • 红色的曲线代表 f ( x ) f(x) f(x)

通过 p p p 分布采样:

  • 如果我们要计算 f ( x ) f(x) f(x) 的期望值,它的 distribution 是从 p p p 这个 distribution 做 sample,那显然这一项是负的,因为 f ( x ) f(x) f(x) 在负数区域
    的机率很高,所以要 sample 的话,都会 sample 到这个地方 而 f ( x ) f(x) f(x) 在这个区域是负的, 所以理论上这一项算出来会是负的。

通过 q q q 分布采样:

  • 接下来我们改成从 q q q 这边做 sample,那因为 q q q 在右边这边的机率比较高,所以如果你 sample 的点不够的话 那你可能都只 sample 到右侧,如果你都只 sample 到右侧的话,你会发现算起来右边这一项,搞不好还应该是正的。因为:你这边 sample 到这些点 x i x_i xi 都是正的,然后你去计算它们的 f ( x ) p ( x ) q ( x ) f(x) \cfrac{p(x)}{q(x)} f(x)q(x)p(x) 都是正的, 所以你取期望值 E x ∼ q [ f ( x ) p ( x ) q ( x ) ] \mathbb{E}_{x \sim q}\left[f(x) \cfrac{p(x)}{q(x)}\right] Exq[f(x)q(x)p(x)] 也都是正的。
    那为什么会这样,那是因为你 sample 的次数不够多,因为假设你 sample 次数很少,你只能 sample 到右边的 x i x_i xi,左边 x i x_i xi虽然机率很低,但也不是没有可能被 sample 到,假设你今天好不容易 sample 到左边的点,因为对于左边的点 x i x_i xi p ( x i ) q ( x i ) \cfrac{p(x_i)}{q(x_i)} q(xi)p(xi) 很大,所以好不容易终于 sample 到一个负的 x i x_i xi,这个负的 f ( x ) f(x) f(x) 就会被乘上一个非常巨大的 weight p ( x i ) q ( x i ) \cfrac{p(x_i)}{q(x_i)} q(xi)p(xi),就可以平衡掉大多数情况下 sample 到 positive 的 value 的情况。Eventually, 你就可以算出这一项的期望值,终究还是负的。但问题就是,这个前提是你要 sample 够多次 这件事情才会发生,但有可能 sample 不够,左式跟右式就有可能有很大的差距,所以这是 importance sampling 的问题。

三、On-policy算法(Policy Gradient) ⇒ I m p o r t a n c e   S a m p l i n g \xRightarrow{Importance\ Sampling} Importance Sampling Off-policy算法

在这里插入图片描述

利用 Importance SamplingPolicy Gradient 这个 On-policy算法 转为 Off-policy算法

Policy Gradient 可知:将 Policy Gradient 经过 “Add a Baseline”、“Assign Suitable Credit” 处理后的梯度为:
在这里插入图片描述
∇ θ R ‾ θ ≈ 1 N ∑ i = 1 N ∑ t = 1 T i [ A θ ( s t , a t ) ∇ θ l o g p θ ( a t i ∣ s t i ) ] = E ( s t , a t ) ∼ π θ [ A θ ( s t , a t ) ∇ θ l o g P θ ( a t ∣ s t ) ] \begin{aligned} \nabla_θ\overline{R}_θ&≈\cfrac1N\sum^N_{i=1}\sum^{T_i}_{t=1}[A^θ(s_t,a_t)\nabla_θ logp_θ(a^i_t|s^i_t)]\\ &=\mathbb{E}_{(s_t,a_t)\sim π_θ}[A^θ(s_t,a_t)\nabla_θ logP_θ(a_t|s_t)] \end{aligned} θRθN1i=1Nt=1Ti[Aθ(st,at)θlogpθ(atisti)]=E(st,at)πθ[Aθ(st,at)θlogPθ(atst)]

这边 A ( s t , a t ) A(s_t,a_t) A(st,at) 有一个上标 θ \theta θ 代表这个 A A A actor θ \text{actor}^{\theta} actorθ 跟环境互动的时候所计算出来的 A A A。 但是实际上我们今天从 θ \theta θ 换到 θ ′ \theta^{\prime } θ 的时候, A θ ( s t , a t ) A^{\theta}(s_t,a_t) Aθ(st,at) 其实应该改成 A θ ′ ( s t , a t ) A^{\theta^{\prime }}(s_t,a_t) Aθ(st,at),为什么?这个 A ( s t , a t ) A(s_t,a_t) A(st,at) 这一项是怎么来的? A ( s t , a t ) A(s_t,a_t) A(st,at) 这一项是想要估测说现在在某一个 state采取某一个 action 接下来 会得到 accumulated reward 的值减掉 base line。你怎么估这一项 advantage A A A,你就会看 在这个 state s t s_t st 采取这个 action a t a_t at 接下来会得到的 reward 的总和 再减掉 baseline。之前是 参数为 θ \theta θ 的Actor π π π 在跟环境做互动,所以你观察到的是 θ \theta θ 得到的 reward。但现在不是参数为 θ \theta θ 的Actor π π π 跟环境做互动,现在是参数为 θ ′ \theta^{\prime } θ 的Actor π π π 在跟环境做互动。所以你得到的这个 advantage, 其实是根据 θ ′ \theta^{\prime } θ 所 estimate 出来的 advantage A A A

∴ ∴
∇ θ R ‾ θ = E ( s t , a t ) ∼ π θ [ A θ ( s t , a t ) ∇ θ l o g P θ ( a t ∣ s t ) ] = E ( s t , a t ) ∼ π θ ′ [ P θ ( s t , a t ) P θ ′ ( s t , a t ) A ( θ ′ ) ( s t , a t ) ∇ θ l o g P θ ( a t ∣ s t ) ] = E ( s t , a t ) ∼ π θ ′ [ P θ ( a t ∣ s t ) P θ ( s t ) P θ ′ ( a t ∣ s t ) P θ ′ ( s t ) A ( θ ′ ) ( s t , a t ) ∇ θ l o g P θ ( a t ∣ s t ) ] \begin{aligned} \nabla_θ\overline{R}_θ &=\mathbb{E}_{(s_t,a_t)\sim π_θ}[A^θ(s_t,a_t)\nabla_θ logP_θ(a_t|s_t)]\\ &=\mathbb{E}_{(s_t,a_t)\sim π_{θ'}}\left[\cfrac{P_θ(s_t,a_t)}{P_{θ'}(s_t,a_t)}A^{(θ')}(s_t,a_t)\nabla_θ logP_θ(a_t|s_t)\right]\\ &=\color{black}{\mathbb{E}_{(s_t,a_t)\sim π_{θ'}}\left[\cfrac{P_θ(a_t|s_t)\color{violet}{P_θ(s_t)}}{P_{θ'}(a_t|s_t)\color{violet}{P_{θ'}(s_t)}}A^{(θ')}(s_t,a_t)\nabla_θ logP_θ(a_t|s_t)\right]} \end{aligned} θRθ=E(st,at)πθ[Aθ(st,at)θlogPθ(atst)]=E(st,at)πθ[Pθ(st,at)Pθ(st,at)A(θ)(st,at)θlogPθ(atst)]=E(st,at)πθ[Pθ(atst)Pθ(st)Pθ(atst)Pθ(st)A(θ)(st,at)θlogPθ(atst)]

上式子中假设模型是 θ θ θ 时看到 s t s_t st 的几率 P θ ( s t ) P_θ(s_t) Pθ(st) 与模型是 θ ′ θ' θ 时看到 s t s_t st 的几率 p θ ′ ( s t ) p_{θ'}(s_t) pθ(st) 是一样的,举例来说,会看到什么 state 往往跟你会采取什么样的 action 是没有太大的关系的。

比如说你玩不同的 Atari 的游戏,那其实你看到的游戏画面都是差不多的,所以也许不同的 θ θ θ s t s_t st 是没有影响的。但是有一个更直觉的理由就是,这一项到时候真的要你算,你会算吗? 你不觉得这项你不太能算吗?因为想想看这项要怎么算,这一项表示有一个参数为 θ θ θ A c t o r θ Actor_θ Actorθ,然后拿 A c t o r θ Actor_θ Actorθ去跟环境做互动去算 s t s_t st 出现的机率,这个你根本很难算,尤其是你如果 input 是 image 的话, 同样的 s t s_t st 根本就不会出现第二次,所以你根本没有办法估这一项, 所以干脆就无视这个问题。

但是 P θ ( a t ∣ s t ) P_θ(a_t|s_t) Pθ(atst) 这一项是可以计算的,你手上有参数为 θ θ θ 的神经网络,你就把 s t s_t st 带进去(比如 s t s_t st 就是游戏画面),你把游戏画面带进去, 参数为 θ θ θ 的神经网络就会告诉你某一个 state s t s_t st a t a_t at 机率是多少。

也就是说我们其实有个 policy 的 network π θ π_θ πθ,把 s t s_t st 带进去, π θ π_θ πθ会告诉我们每一个 a t a_t at 的机率是多少,所以这一项 P θ ( a t ∣ s t ) P_θ(a_t|s_t) Pθ(atst) 你只要知道 π θ π_θ πθ 的参数 θ θ θ ,知道 π θ ′ π_{θ'} πθ 的参数 θ ′ θ' θ,这个 P θ ( a t ∣ s t ) P_θ(a_t|s_t) Pθ(atst) P θ ′ ( a t ∣ s t ) P_{θ'}(a_t|s_t) Pθ(atst)就可以算。

∴ ∴
P θ ( s t ) = P θ ′ ( s t ) P_θ(s_t)=P_{θ'}(s_t) Pθ(st)=Pθ(st),得 “梯度”:

∇ θ R ‾ θ = E ( s t , a t ) ∼ π θ ′ [ P θ ( a t ∣ s t ) P θ ′ ( a t ∣ s t ) A ( θ ′ ) ( s t , a t ) ∇ θ l o g P θ ( a t ∣ s t ) ] \begin{aligned} \nabla_θ\overline{R}_θ = \mathbb{E}_{(s_t,a_t)\sim π_{θ'}}\left[\cfrac{P_θ(a_t|s_t)}{P_{θ'}(a_t|s_t)}A^{(θ')}(s_t,a_t)\nabla_θ logP_θ(a_t|s_t)\right] \end{aligned} θRθ=E(st,at)πθ[Pθ(atst)Pθ(atst)A(θ)(st,at)θlogPθ(atst)]

可以根据 gradient/梯度 去反推原来的 objective function/目标函数:

∇ θ R ‾ θ = E ( s t , a t ) ∼ π θ ′ [ P θ ( a t ∣ s t ) P θ ′ ( a t ∣ s t ) A ( θ ′ ) ( s t , a t ) ∇ θ l o g P θ ( a t ∣ s t ) ] = E ( s t , a t ) ∼ π θ ′ { [ P θ ( a t ∣ s t ) P θ ′ ( a t ∣ s t ) A ( θ ′ ) ( s t , a t ) ] ∇ θ l o g [ P θ ( a t ∣ s t ) P θ ′ ( a t ∣ s t ) A ( θ ′ ) ( s t , a t ) ] } 紫色部分与θ无关 \begin{aligned} \nabla_θ\overline{R}_θ &= \mathbb{E}_{(s_t,a_t)\sim π_{θ'}}\left[\cfrac{P_θ(a_t|s_t)}{P_{θ'}(a_t|s_t)}A^{(θ')}(s_t,a_t)\nabla_θ logP_θ(a_t|s_t)\right]\\ &=\mathbb{E}_{(s_t,a_t)\sim π_{θ'}}\{\left[\cfrac{P_θ(a_t|s_t)}{P_{θ'}(a_t|s_t)}A^{(θ')}(s_t,a_t)\right]\nabla_θ log[\color{black}{\cfrac{P_θ(a_t|s_t)}{\color{violet}{P_{θ'}(a_t|s_t)}}\color{violet}{A^{(θ')}(s_t,a_t)}}]\} \text{紫色部分与θ无关}\\ \end{aligned} θRθ=E(st,at)πθ[Pθ(atst)Pθ(atst)A(θ)(st,at)θlogPθ(atst)]=E(st,at)πθ{[Pθ(atst)Pθ(atst)A(θ)(st,at)]θlog[Pθ(atst)Pθ(atst)A(θ)(st,at)]}紫色部分与θ无关

∵ ∇ x l o g f ( x ) = 1 f ( x ) ∇ x f ( x ) ∴ ∇ x f ( x ) = f ( x ) ∇ x l o g f ( x ) \textbf{∵} \quad \nabla_xlogf(x)=\cfrac{1}{f(x)}\nabla_xf(x) \qquad \textbf{∴} \quad \nabla_xf(x)=f(x)\nabla_xlogf(x) xlogf(x)=f(x)1xf(x)xf(x)=f(x)xlogf(x)

∴ \textbf{∴} 目标函数为:

J ( θ ′ ) ( θ ) = R ‾ ( θ ′ ) ( θ ) = E ( s t , a t ) ∼ π θ ′ [ P θ ( a t ∣ s t ) P θ ′ ( a t ∣ s t ) A ( θ ′ ) ( s t , a t ) ] \begin{aligned} J^{(θ')}(θ)=\overline{R}^{(θ')}(θ)=\mathbb{E}_{(s_t,a_t)\sim π_{θ'}}\left[\cfrac{P_θ(a_t|s_t)}{P_{θ'}(a_t|s_t)}A^{(θ')}(s_t,a_t)\right] \end{aligned} J(θ)(θ)=R(θ)(θ)=E(st,at)πθ[Pθ(atst)Pθ(atst)A(θ)(st,at)]

其中:

  • θ θ θ 表示待优化的参数; θ θ θ不与环境互动;
  • θ ′ θ' θ 表示用 θ ′ θ' θ 去做demonstration, θ ′ θ' θ 与环境互动后取样 ( s t , a t ) (s_t,a_t) (st,at),计算 A ( θ ′ ) ( s t , a t ) A^{(θ')}(s_t,a_t) A(θ)(st,at)

θ ′ θ' θ 去跟环境做互动,sample 出 ( s t , a t ) (s_t,a_t) (st,at) 以后,去计算 ( s t , a t ) (s_t,a_t) (st,at) 的 advantage A ( θ ′ ) ( s t , a t ) A^{(θ')}(s_t,a_t) A(θ)(st,at), 然后在计算 P θ ( a t ∣ s t ) P θ ′ ( a t ∣ s t ) A ( θ ′ ) ( s t , a t ) \cfrac{P_θ(a_t|s_t)}{P_{θ'}(a_t|s_t)}A^{(θ')}(s_t,a_t) Pθ(atst)Pθ(atst)A(θ)(st,at),其中:

  • P θ ( a t ∣ s t ) P_θ(a_t|s_t) Pθ(atst) P θ ′ ( a t ∣ s t ) P_{θ'}(a_t|s_t) Pθ(atst) 是容易计算的;
  • A ( θ ′ ) ( s t , a t ) A^{(θ')}(s_t,a_t) A(θ)(st,at) 是可以从这个 sample 的结果里面估测出来的;

所以这一整项 P θ ( a t ∣ s t ) P θ ′ ( a t ∣ s t ) A ( θ ′ ) ( s t , a t ) \cfrac{P_θ(a_t|s_t)}{P_{θ'}(a_t|s_t)}A^{(θ')}(s_t,a_t) Pθ(atst)Pθ(atst)A(θ)(st,at) 是可以算的。

实际上在 update 参数的时候,就是按照上面这个式子去 update 参数。所以,通过上面的式子可以把 on-policy 换成 off-policy。

但是我们会遇到的问题是,importance sampling 有一个 issue,就是 P θ P_θ Pθ P θ ′ P_{θ'} Pθ 不能差太多,差太多的话,importance sampling 结果就会不好。怎么避免它差太多呢?这个就是 PPO 在做的事情

四、Off-policy算法 ⇒ A d d   C o n s t r a i n t \xRightarrow{Add\ Constraint} Add Constraint PPO/TRPO

由 “Importance Sampling” 的讨论可知,实践中,在公式 E x ∼ p [ f ( x ) ] = E x ∼ q [ f ( x ) p ( x ) q ( x ) ] \begin{aligned}\mathbb{E}_{x\sim p}[f(x)]=\mathbb{E}_{x\sim q}[f(x)\color{violet}{\cfrac{p(x)}{q(x)}}]\end{aligned} Exp[f(x)]=Exq[f(x)q(x)p(x)] 中的 p ( x ) p(x) p(x) q ( x ) q(x) q(x) 两分布要尽可能像,否则效果不好。为了实现这个约束,需要在目标函数上加上一个约束条件。

PPO 与 TRPO 的效果差不多,但是在实操时, 使用PPO算法 比 使用 TRPO 算法更容易操作。

1、PPO (Proximal Policy Optimization)

虽然 PPO 或 TRPO(PPO 的前身) 原始的 Paper 里面写了很多的数学式,但它它实际上做的事情就是:
原来在 off-policy 的方法里面说,我们要 optimize 的是这个 objective function,但是我们又说这个 objective function 又牵涉到 importance sampling。在做 importance sampling 的时候 P θ P_θ Pθ 不能跟 P θ ′ P_{θ'} Pθ 差太多,你做 demonstration 的 model 不能够跟真正的 model 差太多,差太多的话 importance sampling 的结果就会不好。

所以:我们在 training 的时候 多加一个 constrain。这个 constrain 是 π θ π_θ πθ 跟 t π θ ′ π_{θ'} πθ两个 model 输出的结果(输出结果为action)的 KL diversions,即: K L ( θ , θ ′ ) KL(θ,θ') KL(θ,θ)

J P P O ( θ ′ ) ( θ ) = J ( θ ′ ) ( θ ) − β K L ( θ , θ ′ ) = E ( s t , a t ) ∼ π θ ′ [ P θ ( a t ∣ s t ) P θ ′ ( a t ∣ s t ) A ( θ ′ ) ( s t , a t ) ] − β K L ( θ , θ ′ ) \begin{aligned} J^{(θ')}_{PPO}(θ)&=J^{(θ')}(θ)-βKL(θ,θ')\\ &=\mathbb{E}_{(s_t,a_t)\sim π_{θ'}}\left[\cfrac{P_θ(a_t|s_t)}{P_{θ'}(a_t|s_t)}A^{(θ')}(s_t,a_t)\right]-βKL(θ,θ') \end{aligned} JPPO(θ)(θ)=J(θ)(θ)βKL(θ,θ)=E(st,at)πθ[Pθ(atst)Pθ(atst)A(θ)(st,at)]βKL(θ,θ)
其中:

  • K L ( θ , θ ′ ) KL(θ,θ') KL(θ,θ) 用来衡量 θ θ θ θ ′ θ' θ 的相似度。
  • K L ( θ , θ ′ ) KL(θ,θ') KL(θ,θ) 并不是表示 θ θ θ θ ′ θ' θ 参数分布的距离,而是这两个参数所代表的神经网络模型的 behavior 的KL距离,即:采用 θ θ θ θ ′ θ' θ这两个参数的两个Model的 Output 的 Action 的分布(即: π θ π_θ πθ π θ ′ π_{θ'} πθ 的输出的概率分布) 的 KL-Divergence。
  • 所以这里要注意一下,在做 PPO 的时候,所谓的 KL diversions 并不是参数的距离,而是 action 的距离。
  • 先给参数为 θ θ θ的模型一个 state s s s,然后 θ θ θ 的模型会 output 一个action 的probility distribution;将同样的 state s s s 在输入给参数为 θ ′ θ' θ 的模型,然后 θ ′ θ' θ的模型同样会 output 一个action 的 distribution。把多个不同的 state s i s_i si都分别输入给 θ θ θ θ ′ θ' θ 参数模型,这两个模型的 output 的这两个 distribution 的 KL diversions 平均起来才是我这边所指的这两个 Actor 间的 KL diversions。
  • 之所以考虑的不是参数分布的KL-Divergence,而是利用各个参数产生的各个Action分布间的KL-Divergence,因为参数的变化与对应的Action的变化不一定完全一致。有时候你参数小小变了一下,它可能 output 的行为就差很多;或是参数变很多,但 output 的行为可能没什么改变。所以我们真正在意的是这个 actor 它的行为上的差距,而不是它们参数上的差距。

在这里插入图片描述
其中:

  • 在“Update parameters”这一步,是跟原来的 Policy Gradient 算法 不一样,原来的 Policy Gradient 算法 你只能 update 一次参数,update 完以后 你就要重新 sample data。但是现在不用,你拿 θ k θ_k θk 去跟环境做互动,sample 到这组 data 以后 你就努力去train θ θ θ,你可以让 θ θ θupdate 很多次,想办法去 maximize 你的 objective function。你让 θ θ θ update 很多次,这边 θ θ θ update 很多次没有关系,因为我们已经有做 importance sampling。所以这些 experience( state-action pairs) 是从 θ k θ_k θk sample 出来的没有关系, θ θ θ 可以 update 很多次,它跟 θ k θ_k θk 变得不太一样也没有关系,你还是可以照样训练 θ θ θ
  • 在 PPO 的 paper 里面 这边还有一个 adaptive 的 KL diversions。因为这边会遇到一个问题就是这个 β \beta β 要设多少?它就跟那个 regularization 一样,regularization 前面也要乘一个 weight。所以这个 KL diversions 前面也要乘一个 weight,但是 β \beta β 要设多少呢?
    所以有个动态调整 beta 的方法,这个调整方法也是蛮直观的:
    • 先设一个 KL diversions 可以接受的最大值,然后假设你发现说 你 optimize 完这个式子以后KL diversions 的项太大,那就代表说后面这个 penalize 的 term 没有发挥作用,那就把 β \beta β 调大,
    • 在设定一个 KL diversions 的最小值,如果发现 optimize 完上面这个式子以后,得到 KL diversions 比最小值还要小,那代表后面这一项 β K L ( θ , θ k ) \beta K L\left(\theta, \theta_{k}\right) βKL(θ,θk) 的效果太强了,那你怕它都只关注 β K L ( θ , θ k ) \beta K L\left(\theta, \theta_{k}\right) βKL(θ,θk) 这一项,那优化到最后 θ θ θ θ k θ_k θk 都一样,这不是你要的。所以你这个时候你叫要减少 β \beta β
  • 所以这个 β \beta β 是可以动态调整的,这个叫做 Adaptive KL penalty

2、TRPO (Trust Region Policy Optimization)

PPO 的前身TRPO:
J T R P O ( θ ′ ) ( θ ) = E ( s t , a t ) ∼ π θ ′ [ P θ ( a t ∣ s t ) P θ ′ ( a t ∣ s t ) A ( θ ′ ) ( s t , a t ) ] K L ( π θ , π θ ′ ) < δ \begin{aligned} J^{(θ')}_{TRPO }(θ)=\mathbb{E}_{(s_t,a_t)\sim π_{θ'}}\left[\cfrac{P_θ(a_t|s_t)}{P_{θ'}(a_t|s_t)}A^{(θ')}(s_t,a_t)\right]_{KL(π_θ,π_{θ'})<δ} \end{aligned} JTRPO(θ)(θ)=E(st,at)πθ[Pθ(atst)Pθ(atst)A(θ)(st,at)]KL(πθ,πθ)<δ

PPO 与 TRPO唯一不一样的地方就是 constrain K L ( θ , θ ′ ) KL(θ,θ') KL(θ,θ) 摆的位置不一样。

PPO 直接把 constrain 放到你要 optimize 的式子 J P P O ( θ ′ ) ( θ ) = J ( θ ′ ) ( θ ) − β K L ( θ , θ ′ ) J^{(θ')}_{PPO}(θ)=J^{(θ')}(θ)-βKL(θ,θ') JPPO(θ)(θ)=J(θ)(θ)βKL(θ,θ) 里面,然后接下来你就可以用 gradient ascent 的方法去 maximize 这个式子。

TRPO是把 KL diversions 当作 constrain,他希望 θ θ θ θ ′ θ' θ 的 KL diversions 小于一个 δ \delta δ,那你知道你在做那种 optimization 如果你是用 gradient based optimization 的时候,有 constrain 是很难处理的。就是因为它是把这一个 KL diversions constrain 当做一个额外的 constrain,没有放 objective 里面,所以它很难算。

看文献上的结果是,PPO 跟 TRPO 可能 performance 差不多,但是 PPO 在实际操作上,比 TRPO 容易的多。

3、PPO2

Policy Gradient:
J ( θ ′ ) ( θ ) = R ‾ ( θ ′ ) ( θ ) = E ( s t , a t ) ∼ π θ ′ [ P θ ( a t ∣ s t ) P θ ′ ( a t ∣ s t ) A ( θ ′ ) ( s t , a t ) ] \begin{aligned} J^{(θ')}(θ)=\overline{R}^{(θ')}(θ)=\mathbb{E}_{(s_t,a_t)\sim π_{θ'}}\left[\cfrac{P_θ(a_t|s_t)}{P_{θ'}(a_t|s_t)}A^{(θ')}(s_t,a_t)\right] \end{aligned} J(θ)(θ)=R(θ)(θ)=E(st,at)πθ[Pθ(atst)Pθ(atst)A(θ)(st,at)]

TRPO:
J T R P O ( θ ′ ) ( θ ) = E ( s t , a t ) ∼ π θ ′ [ P θ ( a t ∣ s t ) P θ ′ ( a t ∣ s t ) A ( θ ′ ) ( s t , a t ) ] K L ( π θ , π θ ′ ) < δ \begin{aligned} J^{(θ')}_{TRPO }(θ)=\mathbb{E}_{(s_t,a_t)\sim π_{θ'}}\left[\cfrac{P_θ(a_t|s_t)}{P_{θ'}(a_t|s_t)}A^{(θ')}(s_t,a_t)\right]_{KL(π_θ,π_{θ'})<δ} \end{aligned} JTRPO(θ)(θ)=E(st,at)πθ[Pθ(atst)Pθ(atst)A(θ)(st,at)]KL(πθ,πθ)<δ

PPO:
J P P O ( θ ′ ) ( θ ) = J ( θ ′ ) ( θ ) − β K L ( θ , θ ′ ) = E ( s t , a t ) ∼ π θ ′ [ P θ ( a t ∣ s t ) P θ ′ ( a t ∣ s t ) A ( θ ′ ) ( s t , a t ) ] − β K L ( θ , θ ′ ) \begin{aligned} J^{(θ')}_{PPO}(θ)&=J^{(θ')}(θ)-βKL(θ,θ')\\ &=\mathbb{E}_{(s_t,a_t)\sim π_{θ'}}\left[\cfrac{P_θ(a_t|s_t)}{P_{θ'}(a_t|s_t)}A^{(θ')}(s_t,a_t)\right]-βKL(θ,θ') \end{aligned} JPPO(θ)(θ)=J(θ)(θ)βKL(θ,θ)=E(st,at)πθ[Pθ(atst)Pθ(atst)A(θ)(st,at)]βKL(θ,θ)
PPO 实际上在算这个 KL 的时候,也是有点麻烦的。因为这个 KL 理论上应该 sample 一大堆不同的 state,每一个state都输入到 参数为 θ θ θ θ ′ θ' θ 的两个模型来计算KL散度。PPO 要计算 KL diversions,很复杂,PPO2 的式子里面就没有什么 KL 了。

PPO2:
J P P O 2 θ k ( θ ) ≈ ∑ ( s t , a t ) m i n [ P θ ( a t ∣ s t ) P θ k ( a t ∣ s t ) A θ k ( s t , a t ) , c l i p ( P θ ( a t ∣ s t ) P θ k ( a t ∣ s t ) , 1 − ε , 1 + ε ) A θ k ( s t , a t ) ] \begin{aligned} J^{θ_k}_{PPO2}(θ)≈\sum_{(s_t,a_t)}min\left[\cfrac{P_θ(a_t|s_t)}{P_{θ_k}(a_t|s_t)}A^{θ_k}(s_t,a_t), clip\left(\cfrac{P_θ(a_t|s_t)}{P_{θ_k}(a_t|s_t)},1-ε,1+ε\right)A^{θ_k}(s_t,a_t)\right] \end{aligned} JPPO2θk(θ)(st,at)min[Pθk(atst)Pθ(atst)Aθk(st,at),clip(Pθk(atst)Pθ(atst),1ε,1+ε)Aθk(st,at)]

PPO2 要去 maximize 的 objective function 如上所示。

在这里插入图片描述
在这里插入图片描述

  • PPO2算法的想法很直接,就是让 P θ P_θ Pθ P θ k P_{θ_k} Pθk 不要差距太大。也就是你拿来与环境互动做 demonstration 的那个 model,跟实际上 learn 的 model 最后在 optimize 以后,不要差距太大。
  • 如果 A ( θ ′ ) ( s t , a t ) > 0 A^{(θ')}(s_t,a_t)>0 A(θ)(st,at)>0,也就意味着该 ( s t , a t ) (s_t,a_t) (st,at) 是好的,所以希望增加该 ( s t , a t ) (s_t,a_t) (st,at) 的机率,所以想让 p θ ( s t , a t ) p_θ(s_t,a_t) pθ(st,at) 越大越好。但是 p θ ( s t , a t ) p θ k ( s t , a t ) \cfrac{p_θ(s_t,a_t)}{p_{θ_k}(s_t,a_t)} pθk(st,at)pθ(st,at) 比值不可以超过 1 + ε 1+ ε 1+ε,如果超过 1 + ε 1+ ε 1+ε 的话, p θ ( s t , a t ) p_θ(s_t,a_t) pθ(st,at) p θ k ( s t , a t ) p_{θ_k}(s_t,a_t) pθk(st,at) 的差距就太大,就没有 benefit 了。所以今天在 train 的时候, p θ ( s t , a t ) p_θ(s_t,a_t) pθ(st,at)只会被 train 到比 p θ k ( s t , a t ) p_{θ_k}(s_t,a_t) pθk(st,at) 1 + ε 1+ ε 1+ε 倍就会停止
  • 如果 A ( θ ′ ) ( s t , a t ) < 0 A^{(θ')}(s_t,a_t)<0 A(θ)(st,at)<0,也就意味着该 ( s t , a t ) (s_t,a_t) (st,at) 是坏的,所以希望减小该 ( s t , a t ) (s_t,a_t) (st,at) 的机率,所以想让 p θ ( s t , a t ) p_θ(s_t,a_t) pθ(st,at) 越小越好。但是 p θ ( s t , a t ) p θ k ( s t , a t ) \cfrac{p_θ(s_t,a_t)}{p_{θ_k}(s_t,a_t)} pθk(st,at)pθ(st,at) 比值不可以小于 1 − ε 1- ε 1ε,如果超过 1 − ε 1- ε 1ε 的话, p θ ( s t , a t ) p_θ(s_t,a_t) pθ(st,at) p θ k ( s t , a t ) p_{θ_k}(s_t,a_t) pθk(st,at) 的差距就太大,就没有 benefit 了。所以今天在 train 的时候, p θ ( s t , a t ) p_θ(s_t,a_t) pθ(st,at)只会被 train 到比 p θ k ( s t , a t ) p_{θ_k}(s_t,a_t) pθk(st,at) 1 − ε 1- ε 1ε 倍就会停止

4、PPO 跟其它方法的比較

在多数的 cases 里面,PPO 都是不错的,不是最好的,就是第二好的
在这里插入图片描述




参考资料:
深度增强学习PPO(Proximal Policy Optimization)算法源码走读
【RL系列】强化学习之On-Policy与Off-Policy
Sutton的Google硬盘
Proximal Policy Optimization Algorithms
Proximal Policy Optimization (PPO)
PPO论文笔记
强化学习的近端策略优化(PPO)中,近端(Proximal)是什么意思?
强化学习与ChatGPT:PPO 算法介绍和实际应用(中文介绍)
李宏毅深度强化学习笔记(一)Proximal Policy Optimization (PPO)
Proximal Policy Optimization(PPO)算法原理及实现!
Proximal Policy Optimization (PPO) 算法理解:从策略梯度开始
【强化学习】PPO的理论推导

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Proximal Policy OptimizationPPO)是一种目前被广泛应用于强化学习领域的优化算法。它起源于OpenAI公司的研究者们的努力,旨在解决现有的基于策略梯度方法在采样效率和训练稳定性方面的问题。 在过去,基于策略梯度的方法在训练过程中存在一些挑战。首先,传统的策略梯度方法通常需要采样大量的样本来进行训练,导致训练的时间开销较大。其次,在训练过程中,梯度更新的幅度可能过大,导致策略的变化太过剧烈,进而影响训练的稳定性。 为了解决这些问题,OpenAI的研究者提出了PPO算法PPO算法通过引入“”以及“裁剪”机制来控制策略更新的大小,从而保证了训练过程的稳定性。具体来说,PPO算法通过在每一次训练迭代中进行多次策略更新,并使用一种优化方法来限制每次更新的大小。这样可以防止梯度的剧烈变化,同时提升采样效率。 PPO算法的提出为强化学习领域带来了重要的突破。它的优势在于训练过程中不仅更加稳定,而且具有较高的采样效率。这使得PPO算法成为了广泛应用于各类强化学习问题的解决方案。同时,PPO算法的思想也为其他相关的优化算法提供了启示,为这一领域的发展做出了重要贡献。 总而言之,PPO算法的起源源于OpenAI公司研究者们对基于策略梯度方法的改进探索,它通过引入优化和裁剪机制来提高训练稳定性和采样效率,为强化学习领域带来了重要的突破。 ### 回答2: Proximal Policy Optimization(简称PPO)是由OpenAI于2017年提出的一种强化学习算法。这个算法的灵感来自前人提出的TRPO(Trust Region Policy Optimization算法。TRPO算法是一种基于策略梯度的算法,它通过限制策略更新的步长,保持原始策略与更新策略的KL散度在可接受范围内,从而确保策略更新的稳定性。 然而,TRPO算法的计算复杂度较高,且在实际应用中存在一些不足之处。鉴于这些问题,OpenAI团队对TRPO进行改进而提出了PPO算法PPO算法提出了一个新的目标函数,在保证更新策略不会离原始策略太远的前提下,最大化策略梯度并通过剪切来调节步长。这样,PPO算法在计算效率和稳定性上都比TRPO有所提升。此外,PPO还引入了重要性比率修正项,用于抵消由采样引入的偏差,提高更新的准确性。 PPO算法的起源可以追溯到强化学习的研究和应用需求。在过去几年中,强化学习在各个领域取得了巨大的进展,包括机器人控制、游戏AI等。然而,现有的算法在性能和效率上仍然存在着一些问题。因此,PPO算法的提出是为了解决这些问题,进一步推动强化学习的发展。 总之,PPO算法的起源可以归结为对既有算法的改进和创新。通过提出新的目标函数和修正项,PPO算法在计算效率和稳定性上有了明显的改进,使得强化学习能够更好地应用于各个领域。 ### 回答3: Proximal Policy OptimizationPPO)是一种由OpenAI提出的强化学习算法,其起源可以追溯到自然策略梯度(Natural Policy Gradient)算法策略梯度定理。 自然策略梯度算法是一种基于策略梯度的方法,其主要思想是对策略进行优化,以最大化预期回报。然而,自然策略梯度算法在实际应用中存在一些问题,例如训练不稳定和采样效率低下。 为了解决这些问题,OpenAI团队在2017年提出了PPO算法PPO算法的核心观点是尽量改善策略,但同时保持策略似保持不变(approximately keeping policy)。 PPO的基本原理是,通过执行多个策略更新步骤,每个更新步骤都在同样的时间内执行多个策略,以最大限度地改善策略,并且通过一种称为"clipping"的技术来约束策略更新的幅度。"clipping"技术可以控制策略改进的幅度,以防止策略更新过大而导致训练不稳定。 通过这样的方式,PPO可以在保持较大的更新幅度的同时,避免过度更新策略,从而提高训练的稳定性和采样效率。 总结起来,Proximal Policy Optimization的起源可以追溯到对自然策略梯度算法的改进和优化。它通过多种策略更新步骤和"clipping"技术,使得训练更加稳定和高效。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值