PG算法是对整个马尔科夫链(也就是每个trajectory)进行期望计算,最终推导的得到的公式如下: ▽ θ R θ ‾ = E τ ∼ π θ ( τ ) { ∑ t = 1 T ▽ θ l o g [ π θ ( a t ∣ s t ) ] } ∗ { ∑ t = 1 T r ( s t , a t ) } (1) \tag{1} \triangledown_{\theta} \overline{R_\theta}= E_{\tau \sim \pi_{\theta}(\tau)}\{\sum_{t=1}^T \triangledown_{\theta}log[\pi_{\theta}(a_t|s_t)]\}*\{\sum_{t=1}^Tr(s_t,a_t)\} ▽θRθ=Eτ∼πθ(τ){t=1∑T▽θlog[πθ(at∣st)]}∗{t=1∑Tr(st,at)}(1) 观察改式,可以看出,其实对于每个trajectory中的每个step更新的时候,评价每个step的好坏参考的是整个轨迹的总回报,但从实际现实来将,每个step的好坏只跟当前step后的回报有关,与当前step之前的回报式无关的,因此我们可以将上式修改为: ▽ θ R θ ‾ = E τ ∼ π θ ( τ ) { ∑ t = 1 T ▽ θ l o g [ π θ ( a t ∣ s t ) ] } ∗ { ∑ t ′ = t T r ( s t ′ , a t ′ ) } (2) \tag{2} \triangledown_{\theta} \overline{R_\theta}= E_{\tau \sim \pi_{\theta}(\tau)}\{\sum_{t=1}^T \triangledown_{\theta}log[\pi_{\theta}(a_t|s_t)]\}*\{\sum_{t'=t}^Tr(s_{t'},a_{t'})\} ▽θRθ=Eτ∼πθ(τ){t=1∑T▽θlog[πθ(at∣st)]}∗{t′=t∑Tr(st′,at′)}(2) 其中的 t ′ t' t′标示从当前时刻开始,到游戏的最后结束。 在实际中,我们评估每一步的好坏,对于近期的收益可能会考虑更多,但对离当前时刻更远的收益较少,因此我们可以添加一个衰减系数 γ ∈ ( 0 , 1 ] \gamma \in (0, 1] γ∈(0,1]来控制,那么 ( 2 ) (2) (2)式可以修改为: ▽ θ R θ ‾ = E τ ∼ π θ ( τ ) { ∑ t = 1 T ▽ θ l o g [ π θ ( a t ∣ s t ) ] } ∗ { γ t ′ − t ∑ t ′ = t T r ( s t ′ , a t ′ ) } (3) \tag{3} \triangledown_{\theta} \overline{R_\theta}= E_{\tau \sim \pi_{\theta}(\tau)}\{\sum_{t=1}^T \triangledown_{\theta}log[\pi_{\theta}(a_t|s_t)]\}*\{\gamma^{t'-t} \sum_{t'=t}^Tr(s_{t'},a_{t'})\} ▽θRθ=Eτ∼πθ(τ){t=1∑T▽θlog[πθ(at∣st)]}∗{γt′−tt′=t∑Tr(st′,at′)}(3)
从 ( 3 ) (3) (3)式来看,其中的 γ t ′ − t ∑ t ′ = t T r ( s t ′ , a t ′ ) \gamma^{t'-t} \sum_{t'=t}^Tr(s_{t'},a_{t'}) γt′−t∑t′=tTr(st′,at′)从形态看其实当前状态采取某个动作的价值(这里的价值只是当前轨迹的后续价值),但实际中,我们需要的是一个动作价值期望,因为期望比实际的当前轨迹单个样本更稳定和参考价值,这样我们可以想到在Q-learning和sarsa算法中的 Q π ( s , a ) Q_\pi(s,a) Qπ(s,a)函数,那么这里我们不妨采用动作价值函数来作为策略梯度中的动作评价函数,那么上式可以修改为: ▽ θ R θ ‾ = E τ ∼ π θ ( τ ) { ∑ t = 1 T ▽ θ l o g [ π θ ( a t ∣ s t ) ] } ∗ Q π w ( s t , a t ) (4) \tag{4} \triangledown_{\theta} \overline{R_\theta}= E_{\tau \sim \pi_{\theta}(\tau)}\{\sum_{t=1}^T \triangledown_{\theta}log[\pi_{\theta}(a_t|s_t)]\}*Q_{\pi_w}(s_{t},a_{t}) ▽θRθ=Eτ∼πθ(τ){t=1∑T▽θlog[πθ(at∣st)]}∗Qπw(st,at)(4) 从 ( 4 ) (4) (4)我们可以看出,我们只需要将PG算法中对在状态 s s s下采用动作 a a a的评价函数换成动作价值函数 Q w ( s t , a t ) Q_w(s_t,a_t) Qw(st,at)来进行求解,在实际操作中,我们需要一个Actor网络来选择动作,采用Q网络来评价动作的好坏,这就是AC架构,其主要是解决了PG算法当中无法单步更新的问题,看看 γ t ′ − t ∑ t ′ = t T r ( s t ′ , a t ′ ) \gamma^{t'-t} \sum_{t'=t}^Tr(s_{t'},a_{t'}) γt′−t∑t′=tTr(st′,at′)如果真个轨迹没有走完,后面的reward你都不知道,怎么可能计算出这个式子的值呢?而AC架构通过以往轨迹的经验,可以初略评估当前状态采取某个行动的价值,因此选择动作后就可以即刻更新参数,不用等到整个轨迹完成后再来更新。
AC架构实现了策略梯度的单步更新,但是在PG算法中,如果得到的reward正负比例不平衡,在采样不足的情况下,有可能坏的动作选择也会正向更新其被选中的概率,因此,我们在策略梯度中加入baseline的动作,即每个状态下选择某个动作的价值,需要减去当前状态的价值(直观一点的解释及时当前的动作使价值提升则为好的动作,使价值减小则为坏的动作),因此 ( 4 ) (4) (4)可以转换为: ▽ θ R θ ‾ = E τ ∼ π θ ( τ ) { ∑ t = 1 T ▽ θ l o g [ π θ ( a t ∣ s t ) ] } ∗ [ Q π w ( s t , a t ) − V ( s t ) ] = E τ ∼ π θ ( τ ) { ∑ t = 1 T ▽ θ l o g [ π θ ( a t ∣ s t ) ] } ∗ [ r t + γ V ( s t + 1 ) − V ( s t ) ] (5) \tag{5} \begin{aligned} \triangledown_{\theta} \overline{R_\theta}&= E_{\tau \sim \pi_{\theta}(\tau)}\{\sum_{t=1}^T \triangledown_{\theta}log[\pi_{\theta}(a_t|s_t)]\}*[Q_{\pi_w}(s_{t},a_{t}) - V(s_t)] \\ &= E_{\tau \sim \pi_{\theta}(\tau)}\{\sum_{t=1}^T \triangledown_{\theta}log[\pi_{\theta}(a_t|s_t)]\}*[r_t+\gamma V(s_{t+1}) - V(s_t)] \end{aligned} ▽θRθ=Eτ∼πθ(τ){t=1∑T▽θlog[πθ(at∣st)]}∗[Qπw(st,at)−V(st)]=Eτ∼πθ(τ){t=1∑T▽θlog[πθ(at∣st)]}∗[rt+γV(st+1)−V(st)](5) 这里的 Q π w ( s t , a t ) − V ( s t ) Q_{\pi_w}(s_t,a_t)-V(s_t) Qπw(st,at)−V(st)就是所谓的优势函数.