Proximal Policy Optimization

参考链接:Proximal Policy Optimization(PPO)算法原理及实现! - 简书

李宏毅老师的视频地址:李宏毅深度强化学习(国语)课程(2018)_哔哩哔哩_bilibili

PPO算法是Policy Gradient方法的一种改进版本

Policy Gradient算法回顾

在PG算法中,我们的Agent又被称为Actor,Actor对于一个特定的任务,都有自己的一个策略\pi ,策略\pi 通常用一个神经网络表示,其参数为\theta 。从一个特定的状态state出发,一直到任务的结束,被称为一个完整的eposide,在每一步,我们都能获得一个奖励r,一个完整的任务所获得的最终奖励被称为R。这样,一个有T个时刻的eposide,Actor不断与环境交互,形成如下的序列\tau

这样一个序列\tau 是不确定的,因为Actor在不同state下所采取的action可能是不同的,一个序列\tau 发生的概率为:

p_{\theta } (\tau )

=p(s_{1} )p_{\theta } (a_{1} \vert s_{1}  )p_{\theta } (s_{2}\vert s_{1}  ,a_{1} )p_{\theta } (a_{2} \vert s_{2}  )p_{\theta } (s_{3}\vert s_{2}  ,a_{2} )...

=p(s_{1} )\prod_{t=1}^T p_{\theta } (a_{t} \vert s_{t}  )p_{\theta } (s_{t+1}\vert s_{t}  ,a_{t} )

序列τ所获得的奖励为每个阶段所得到的奖励的和,称为R(\tau )。因此,在Actor的策略为\pi 的情况下,所能获得的期望奖励为:

\tilde{R_{\theta } } =\sum_{\tau }R(\tau )p_{\theta } (\tau )=E_{\tau-p_{\theta }(\tau )  } [R(\tau )]

而我们的期望是调整Actor的策略\pi ,使得期望奖励最大化,于是我们有了策略梯度的方法,既然我们的期望函数已经有了,我们只要使用梯度提升的方法更新我们的网络参数\theta (即更新策略\theta )就好了,所以问题的重点变为了求参数的梯度。梯度的求解过程如下:

上面的过程中,我们首先利用log函数求导的特点进行转化,随后用N次采样的平均值来近似期望,最后,我们将p_{\theta } 展开,将与\theta 无关的项去掉,即得到了最终的结果。

一个PG方法的完整过程如下:

Policy Gradient算法概述

我们首先采集数据,然后基于前面得到的梯度提升的式子更新参数,随后再根据更新后的策略再采集数据,再更新参数,如此循环进行。注意到图中的大红字only used once,因为在更新参数后,我们的策略已经变了,而先前的数据是基于更新参数前的策略得到的。

Policy Gradient的一个缺点就是参数更新缓慢,因为每更新一次参数就要进行一次重新采样,而PPO算法就是将Policy Gradient算法中On Policy的做法改成Off Policy,达到采样数据的可重复使用。

On Policy和Off Policy的区别

On Policy要训练的神经网络和与环境交互的神经网络是同一个网络,而Off Policy要训练的神经网络与环境交互的神经网络不是同一个网络

PPO算法思路

使用策略\pi _{\dot{\theta }  } 来与环境交互,并更新策略\pi _{\theta }

Importance Sampling

当概率分布p(x)q(x)分布差别不是很大时,有

E_{x\rightarrow p}[f(x)] =E_{x\rightarrow q}[f(x)\frac{p(x) }{q(x) } ]

PPO算法概述

PPO算法概述
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容