基于策略的强化学习公式推导

基于策略的强化学习就是最大化平均收益 R ˉ \bar{R} Rˉ,公式如下:

R ˉ = ∑ τ P θ ( τ ) R ( τ ) \bar{R}=\sum_\tau P_{\theta}(\tau)R(\tau) Rˉ=τPθ(τ)R(τ)
其中, τ \tau τ为一个episode,可以写成{ s 1 , a 1 , r 1 , … , s H , a H , r H s_1,a_1,r_1,\dots,s_H,a_H,r_H s1,a1,r1,,sH,aH,rH}。 P θ ( τ ) P_{\theta}(\tau) Pθ(τ) τ \tau τ出现的概率,与参数 θ \theta θ有关, R ( τ ) R(\tau) R(τ)为episode τ \tau τ收益。

我们使用梯度上升求解,即: θ ← θ + η ▽ θ R ˉ \theta\leftarrow\theta+\eta\bigtriangledown_{\theta}\bar{R} θθ+ηθRˉ
首先对 R ˉ \bar{R} Rˉ关于 θ \theta θ求导:
▽ θ R ˉ = ∑ τ ▽ θ P θ ( τ ) R ( τ ) = ∑ τ R ( τ ) P θ ( τ ) ▽ θ log ⁡ P θ ( τ ) = E τ ∼ P θ ( τ ) [ R ( τ ) ▽ θ log ⁡ P θ ( τ ) ] ≈ 1 N ∑ τ R ( τ ) ▽ θ log ⁡ P θ ( τ ) \begin{aligned} \bigtriangledown_{\theta}\bar{R}&=\sum_\tau \bigtriangledown_{\theta}P_{\theta}(\tau)R(\tau)\\ &=\sum_\tau R(\tau)P_{\theta}(\tau)\bigtriangledown_{\theta}\log P_{\theta}(\tau)\\ &=E_{\tau\sim P_{\theta}(\tau)}\left[R(\tau)\bigtriangledown_{\theta}\log P_{\theta}(\tau)\right]\\ &\approx \frac{1}{N}\sum_{\tau} R(\tau)\bigtriangledown_{\theta}\log P_{\theta}(\tau) \end{aligned} θRˉ=τθPθ(τ)R(τ)=τR(τ)Pθ(τ)θlogPθ(τ)=EτPθ(τ)[R(τ)θlogPθ(τ)]N1τR(τ)θlogPθ(τ)
其中, P θ ( τ ) P_{\theta}(\tau) Pθ(τ)公式如下:
P θ = P ( s 1 ) ∏ t = 1 H π θ ( a t ∣ s t ) P ( s t + 1 ∣ s t , a t ) \begin{aligned} P_{\theta}=P(s_1)\prod_{t=1}^{H}\pi_{\theta}(a_t|s_t)P(s_{t+1}|s_t,a_t) \end{aligned} Pθ=P(s1)t=1Hπθ(atst)P(st+1st,at)
所以,
▽ θ log ⁡ P θ ( τ ) = ∑ t = 1 H ▽ θ log ⁡ π θ ( a t ∣ s t ) \bigtriangledown_{\theta}\log P_{\theta}(\tau)=\sum_{t=1}^{H}\bigtriangledown_{\theta}\log \pi_{\theta}(a_t|s_t) θlogPθ(τ)=t=1Hθlogπθ(atst)
代入上式得:
▽ θ R ˉ ≈ 1 N ∑ τ R ( τ ) ∑ t = 1 H ▽ θ log ⁡ π θ ( a t ∣ s t ) \bigtriangledown_{\theta}\bar{R}\approx \frac{1}{N}\sum_{\tau} R(\tau)\sum_{t=1}^{H}\bigtriangledown_{\theta}\log \pi_{\theta}(a_t|s_t) θRˉN1τR(τ)t=1Hθlogπθ(atst)
将我们的数据代入上式就可以得到 ▽ θ R ˉ \bigtriangledown_{\theta}\bar{R} θRˉ,然后更新参数 θ \theta θ

但是,这个流程是采样一批数据更新一下参数,再采样一批更新一下,每批数据利用一次,效率很低下,所以在PPO中用到了off-policy,即采样时的策略和更新的策略不是同一策略,其中用到重要性采样,这个不会的可以百度一下吧,我这边直接给出推导。

假设当前策略为 θ \theta θ,我们的数据是由 θ o l d \theta_{old} θold产生的。

刚刚我们得到:
▽ θ R ˉ = ∑ τ R ( τ ) P θ ( τ ) ▽ θ log ⁡ P θ ( τ ) = ∑ τ R ( τ ) P θ o l d ( τ ) P θ ( τ ) ▽ θ log ⁡ P θ ( τ ) P θ o l d ( τ ) = ∑ τ R ( τ ) P θ o l d ( τ ) ▽ θ P θ ( τ ) P θ o l d ( τ ) \begin{aligned} \bigtriangledown_{\theta}\bar{R}&=\sum_\tau R(\tau)P_{\theta}(\tau)\bigtriangledown_{\theta}\log P_{\theta}(\tau)\\ &=\sum_\tau R(\tau)P_{\theta_{old}}(\tau)\frac{P_{\theta}(\tau)\bigtriangledown_{\theta}\log P_{\theta}(\tau)}{P_{\theta_{old}}(\tau)} \\ &=\sum_\tau R(\tau)P_{\theta_{old}}(\tau)\frac{\bigtriangledown_{\theta} P_{\theta}(\tau)}{P_{\theta_{old}}(\tau)} \end{aligned} θRˉ=τR(τ)Pθ(τ)θlogPθ(τ)=τR(τ)Pθold(τ)Pθold(τ)Pθ(τ)θlogPθ(τ)=τR(τ)Pθold(τ)Pθold(τ)θPθ(τ)
那么,
R ˉ = ∑ τ R ( τ ) P θ o l d ( τ ) P θ ( τ ) P θ o l d ( τ ) = E τ ∼ P θ o l d ( τ ) [ R ( τ ) P θ ( τ ) P θ o l d ( τ ) ] ≈ 1 N ∑ τ R ( τ ) P θ ( τ ) P θ o l d ( τ ) \begin{aligned} \bar{R}&=\sum_\tau R(\tau)P_{\theta_{old}}(\tau)\frac{P_{\theta}(\tau)}{P_{\theta_{old}}(\tau)}\\ &=E_{\tau\sim P_{\theta_{old}}(\tau)}\left[\frac{R(\tau)P_{\theta}(\tau)}{P_{\theta_{old}}(\tau)}\right]\\ &\approx \frac{1}{N}\sum_{\tau}\frac{R(\tau)P_{\theta}(\tau)}{P_{\theta_{old}}(\tau)} \end{aligned} Rˉ=τR(τ)Pθold(τ)Pθold(τ)Pθ(τ)=EτPθold(τ)[Pθold(τ)R(τ)Pθ(τ)]N1τPθold(τ)R(τ)Pθ(τ)

当然, θ o l d \theta_{old} θold θ \theta θ也不能差太多,所以PPO算法实现的时候会考虑两个概率分布的相对熵或者考虑截断,如图,
基于策略的强化学习公式推导_第1张图片
其中, J θ k ( θ ) J^{\theta^k}(\theta) Jθk(θ)就是我们这边的 R ˉ \bar{R} Rˉ。最大化这个就可以得到 θ \theta θ的更新。

此外,PPO算法还考虑基线和折扣因子,这都是对我们公式中 R ( τ ) R(\tau) R(τ)进行改写的。这两个trick比较简单,我太懒了,不想写了,就到这儿吧。

代码可以参考这个。

你可能感兴趣的:(强化学习)