赞
踩
本文首发于行者AI
上一篇文章我们详细介绍了策略梯度算法(PG),ppo其实就是策略梯度的一种变形。首先介绍一下同策略(on-policy)与异策略(off-policy)的区别。
在强化学习里面,我们需要学习的其实就是一个智能体。如果要学习的智能体跟和环境互动的智能体是同一个的话,称之为同策略。如果要学习的智能体跟和环境互动的智能体不是同一个的话,称之为异策略。那么先给童鞋们提出一个问题,ppo算法是同策略还是异策略?
首先我们回顾一下PG的期望奖励值,公式如下。
∇ R ˉ θ = E τ ∼ p θ ( τ ) [ R ( τ ) ∇ log p θ ( τ ) ]
上面更新的公式中的 E τ ∼ p θ ( τ ) E_{\tau \sim p_{\theta}(\tau)} Eτ∼pθ(τ)是在策略 π θ \pi_{\theta} πθ的情况下, 所采样出来的轨迹 τ \tau τ做期望。但是如果更新了参数,从 θ \theta θ变成 θ ′ \theta^{\prime} θ′,概率 p θ ( τ ) p_{\theta}(\tau) pθ(τ)就不对了,之前采样出来的数据就不能用了。所以PG会花很多时间去采样数据,可以说大多数时间都在采样数据,智能体去跟环境做互动以后,接下来就要更新参数,只能用这些数据更新参数一次。接下来就要重新再去收集数据,才能再次更新参数。
策略梯度是同策略的算法,所以非常耗费时间,那么一个可能的改进思路是将同策略变成异策略。简单的思路就是用另外一个策略 π θ ′ \pi_{\theta^{\prime}} πθ′, 另外一个演员 θ ′ \theta^{\prime} θ′去跟环境做互动。用 θ ′ \theta^{\prime} θ′收集到的数据去训练 θ \theta θ。假设我们可以用 θ ′ \theta^{\prime} θ′收集到的数据去训练 θ \theta θ,意味着说我们可以把 θ ′ \theta^{\prime} θ′收集到的数据用很多次,也就是可以执行梯度上升好几次,更新参数好几次,这都只要用同一笔数据就可以实现。因为假设 θ \theta θ有能力学习另外一 个演员 θ ′ \theta^{\prime} θ′所采样出来的数据的话,那 θ ′ \theta^{\prime} θ′就只要采样一次,也许采样多一点的数据,让 θ \theta θ去更新很多次, 这样就会比较有效率。
那么问题来了, 我们怎么找到这样的一个演员 θ ′ \theta^{\prime} θ′,使其收集到的数据可以用于训练 θ \theta θ,且他们之间的差异可以被忽略不计呢?
首先我们先介绍一个名词,重要性采样(importance sampling)。 假设有一个函数 f ( x ) f(x) f(x), x x x需要从分布 p p p中采样。我们应该如何怎么计算 f ( x ) f(x) f(x)的期望值呢?假设分布 p p p不能做积分,那么我们可以从分布 p p p尽可能多采样更多的 x i x^{i} xi。这样就会得到更多的 f ( x ) f(x) f(x),取它的平均值就可以近似 f ( x ) f(x) f(x)的期望值。
现在另外一个问题也来了,假设我们不能在分布 p p p中采样数据,只能从另外一个分布 q q q中去采样数据, q q q可以是任何分布。我们从 q q q中采样 x i x^{i} xi的话就不能直接套下面的式子。
E x ∼ p [ f ( x ) ] ≈ 1 N ∑ i = 1 N f ( x i ) E_{x \sim p}[f(x)] \approx \frac{1}{N} \sum_{i=1}^{N} f\left(x^{i}\right) Ex∼p[f(x)]≈N1i=1∑Nf(xi)
因为上式是假设 x x x都是从 p p p采样出来的。如果我们想要在 q q q中采样的情况下带入上式,就需要做些变换。期望值 E x ∼ p [ f ( x ) ] E_{x \sim p}[f(x)] Ex∼p[f(x)]的另一种写法是 ∫ f ( x ) p ( x ) d x \int f(x) p(x) d x ∫f(x)p(x)dx,不知道的童鞋可以补习一下万能的学科–数学,对其进行变换,如下式所示,
∫ 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 ) ] \int f(x) p(x) d x=\int f(x) \frac{p(x)}{q(x)} q(x) d x=E_{x \sim q}\left[f(x) \frac{p(x)}{q(x)}\right] ∫f(x)p(x)dx=∫f(x)q(x)p(x)q(x)dx=Ex∼q[f(x)q(x)p(x)]
整理得下式,
E x ∼ p [ f ( x ) ] = E x ∼ q [ f ( x ) p ( x ) q ( x ) ] E_{x \sim p}[f(x)]=E_{x \sim q}\left[f(x) \frac{p(x)}{q(x)}\right] Ex∼p[f(x)]=Ex∼q[f(x)q(x)p(x)]
这样就可以对分布 q q q中采样的 x x x取期望值。具体来说,我们从 q q q中采样 x x x,再去计算 f ( x ) p ( x ) q ( x ) f(x) \frac{p(x)}{q(x)} f(x)q(x)p(x),最后取期望值。所以就算我们不能从 p p p里面去采样数据,只要能够从 q q q里面去采样数据,代入上式,就可以计算从分布 p p p采样 x x x代入 f ( x ) f(x) f(x)以后所算出来的期望值。
这边是从 q q q做采样,所以我们从 q q q里采样出来的每一笔数据,需要乘上一个重要性权重(importance weight) p ( x ) q ( x ) \frac{p(x)}{q(x)} q(x)p(x)来修正这两个分布的差异。 q ( x ) q(x) q(x)可以是任何分布。重要性采样有一些问题。虽然我们可以把 p p p换成任何的 q q q。但是在实现上, p p p和不 q q q能差太多。差太多的话,会有一些问题。两个随机变量的平均值一样,并不代表它的方差一样,这里不展开解释,感兴趣的童鞋可以带入方差公式 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推导一下。
现在要做的事情就是把重要性采样用在异策略的情况,把同策略训练的算法改成异策略训练的算法。 怎么改呢,如下式所示,我们用另外一个策略 π θ ′ \pi_{\theta^{\prime}} πθ′,它就是另外一个演员,与环境做互动,采样出轨迹 θ ′ \theta^{\prime} θ′,计算 R ( τ ) ∇ log p θ ( τ ) R(\tau) \nabla \log p_{\theta}(\tau) R(τ)∇logpθ(τ)。
∇ R ˉ θ = E τ ∼ p θ ′ ( τ ) [ p θ ( τ ) p θ ′ ( τ ) R ( τ ) ∇ log p θ ( τ ) ] \nabla \bar{R}_{\theta}=E_{\tau \sim p_{\theta^{\prime}(\tau)}}\left[\frac{p_{\theta}(\tau)}{p_{\theta^{\prime}}(\tau)} R(\tau) \nabla \log p_{\theta}(\tau)\right] ∇Rˉθ=Eτ∼pθ′(τ)[pθ′(τ)pθ(τ)R(τ)∇logpθ(τ)]
θ ′ \theta^{\prime} θ′的职责是要去示范给 θ \theta θ看。它去跟环境做互动,采样数据来训练 θ \theta θ。这两个分布虽然不一样,但其实没有关系。假设本来是从 p p p做采样,但发现不能从 p p p做采样,可以把 p p p换 q q q,在 后面补上一个重要性权重。同理,我们把 θ \theta θ换成 θ ′ \theta^{\prime} θ′后,要补上一个重要性权重 p θ ( τ ) p θ ′ ( τ ) \frac{p_{\theta}(\tau)}{p_{\theta^{\prime}}(\tau)} pθ′(τ)pθ(τ)。这个重要性权重就是某一个轨迹 θ ′ \theta^{\prime} θ′用 θ \theta θ算出来的概率除以这个轨迹 τ \tau τ用 θ ′ \theta^{\prime} θ′算出来的概率。
实际在做策略梯度的时候,并不是给整个轨迹 θ ′ \theta^{\prime} θ′都一样的分数,而是每一个状态-动作的对会分开来计算。具体可参考上一篇PG的文章。实际上更新梯度的时候,如下式所示。
E ( s t , a t ) ∼ π θ [ A θ ( s t , a t ) ∇ log p θ ( a t n ∣ s t n ) ] E_{\left(s_{t}, a_{t}\right) \sim \pi_{\theta}}\left[A^{\theta}\left(s_{t}, a_{t}\right) \nabla \log p_{\theta}\left(a_{t}^{n} \mid s_{t}^{n}\right)\right] E(st,at)∼πθ[Aθ(st,at)∇logpθ(atn∣stn)]
我们用演员 θ \theta θ去采样出 s t s_{t} st跟 a t a_{t} at ,采样出状态跟动作的对,并计算这个状态跟动作对的优势 A θ ( s t , a t ) A^{\theta}\left(s_{t}, a_{t}\right) Aθ(st,at)。 A θ ( s t , a t ) A^{\theta}\left(s_{t}, a_{t}\right) Aθ(st,at)就是累积奖励减掉偏置项,这一项是估测出来的。它要估测的是在状态 s t s_{t} st采取动作 a t a_{t} at 是好的还是不好的。也就是说如果 A θ ( s t , a t ) A^{\theta}\left(s_{t}, a_{t}\right) A
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。