PPO公式推导

Trajectory : \tau=\left\{s_1,a_1,s_2,a_2,\cdots,s_T,a_T \right\}
\tau为一串游戏的状态和动作序列。
p_\theta(\tau)=p(s_1)p_\theta(a_1|s_1)p(s_2|s_1,a_1)p_\theta(a_2|s_2)p(s_3|s_2,a_2)\cdots
\quad \quad \quad = p(s_1) \prod_{t=1}^T p_\theta(a_t|s_t)p(s_{t+1}|s_t,a_t)

\overline{R}_\theta = E_{\tau \sim p_\theta(\tau) }[R(\tau)] = \sum_{\tau} R(\tau)p_\theta(\tau), R(\tau) = \sum_{t=1}^T r_t
这里的\tau为一类序列,p_\theta(\tau)\tau的发生的概率。
\nabla\overline{R}_\theta = \sum_{\tau} R(\tau)\nabla p_\theta(\tau)
那这里是不是我们直接能用\nabla\overline{R}_\theta来获得最大值呢?
我们这里设之列有X\tau那么就有\nabla\overline{R}_\theta = \sum_{\tau = 1}^X R(\tau)\nabla p_\theta(\tau)这里的问题就在于X有多少种无法确定,所以无法直接求得\nabla\overline{R}_\theta
因为有\nabla f(x) = f(x)\nabla \log f(x)
所以
\begin{align} \nabla\overline{R}_\theta & =\sum_{\tau} R(\tau)p_\theta(\tau)\nabla \log p_\theta(\tau)\\ & = E_{\tau \sim p_\theta(\tau) }[R(\tau)\nabla \log p_\theta(\tau)]\\ & {\approx} \frac{1}{N} \sum_{n=1}^N R(\tau^n) \nabla \log p_\theta(\tau^n)\\ & = \frac{1}{N} \sum_{n=1}^N \sum_{t=1}^{T_n} R(\tau^n) \nabla \log p_\theta(a_t^n|s_t^n)\\ \end{align}
这里的\tau^n与之前的\tau不一样,\tau^n代表采样中的单独一次采样,\tau代表一类相同的采样。所以我们想要求的loss函数如下:
\begin{align} L^{PG}(\theta) & = \int\frac{1}{N} \sum_{n=1}^N \sum_{t=1}^{T_n} R(\tau^n) \nabla \log p_\theta(a_t^n|s_t^n)\\ & = \frac{1}{N} \sum_{n=1}^N \sum_{t=1}^{T_n} R(\tau^n) \log p_\theta(a_t^n|s_t^n)\\ \end{align}当然这里求的是loss得最大值。

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

推荐阅读更多精彩内容