REINFORCEREINFORCE算法

我们已知策略梯度J(θ)θ\frac{\partial \mathcal{J}(\theta)}{\partial \theta}的计算公式为:

J(θ)θ=Eτpθ(τ)[t=0T1(θlogπθ(atst)γtG(τt:T))]\frac{\partial \mathcal{J}(\theta)}{\partial \theta}=\mathbb{E}_{\tau \sim p_{\theta}(\tau)}\left[\sum_{t=0}^{T-1}\left(\frac{\partial}{\partial \theta} \log \pi_{\theta}\left(a_{t} | s_{t}\right) \gamma^{t} G\left(\tau_{t : T}\right)\right)\right]

其中,期望可以通过采样的方法来进行近似。对于当前策略πθ\pi_{\theta},可以随机游走采集多个轨迹τ(1),τ(2),,τ(N)\tau^{(1)}, \tau^{(2)}, \cdots, \tau^{(N)},每一条轨迹τ(n)=s0(n),a0(n),s1(n),a1(n),\tau^{(n)}=s_{0}^{(n)}, a_{0}^{(n)}, s_{1}^{(n)}, a_{1}^{(n)}, \cdots,其梯度定义为

J(θ)θ1Nn=1N(t=0T1θlogπθ(at(n)st(n))γtGτt:T(n))\frac{\partial \mathcal{J}(\theta)}{\partial \theta} \approx \frac{1}{N} \sum_{n=1}^{N}\left(\sum_{t=0}^{T-1} \frac{\partial}{\partial \theta} \log \pi_{\theta}\left(a_{t}^{(n)} | s_{t}^{(n)}\right) \gamma^{t} G_{\tau_{t : T}^{(n)}}\right)

结合随机梯度上升算法,我们可以每次采集一条轨迹,计算每个时刻的梯度并更新参数,称为REINFORCEREINFORCE算法。

REINFORCEREINFORCE算法通用框架:一个示例

带基准线的REINFORCEREINFORCE算法

REINFORCEREINFORCE算法的一个主要缺点是不同路径之间的方差很大,导致训练不稳定,这是在高维空间中使用蒙特卡罗方法的的通病。一种减少方差的通用方法是引入一个控制变量。