Actor-Critic

Actor-Critic 及其基线变种

Actor-Critic

由于 REINFORCE 算法使用蒙特卡洛方法对 qπθ(s, a)q_{\pi_{\theta}}(s,\ a) 进行估计,估计的方差较大,算法的稳定性较差。在 actor-critic 算法中使用 Q 网络 qw(s, a)q_{w}(s,\ a) 来近似 qπθ(s, a)q_{\pi_{\theta}}(s,\ a) 并通过时序差分进行更新,近似的策略梯度为:

θJ(θ)t=0Tγtθlnπθ(atst)qw(st, at)γ=1t=0Tθlnπθ(atst)qw(st, at)\nabla_{\theta} J(\theta) \approx \sum_{t = 0}^{\mathrm{T}} \gamma^{t} \nabla_{\theta} \ln \pi_{\theta}(a_{t} \mid s_{t}) q_{w}(s_{t},\ a_{t}) \overset{\gamma = 1}{\longrightarrow} \sum_{t = 0}^{\mathrm{T}} \nabla_{\theta} \ln \pi_{\theta}(a_{t} \mid s_{t}) q_{w}(s_{t},\ a_{t})

使用时序差分方法对 Q 网络进行更新,损失函数即时序差分误差的平方,例如单步时序差分下:

(w)=12[gt(1)qw(st, at)]2=12[rt+1+γqw(st+1, at+1)qw(st, at)]2\ell(w) = \frac{1}{2} \Big[ g_{t}^{(1)} - q_{w}(s_{t},\ a_{t}) \Big]^{2} = \frac{1}{2} \Big[ r_{t + 1} + \gamma q_{w}(s_{t + 1},\ a_{t + 1}) - q_{w}(s_{t},\ a_{t}) \Big]^{2}

固定时序差分目标 gt(1)g_{t}^{(1)}(不考虑该项对 ww 的梯度)后求损失函数 (w)\ell(w) 对 Q 网络参数 ww 的梯度:

w(w)=[qw(st, at)gt(1)]wqw(st, at)=[qw(st, at)rt+1γqw(st+1, at+1)]wqw(st, at)\nabla_{w} \ell(w) = \Big[ q_{w}(s_{t},\ a_{t}) - g_{t}^{(1)} \Big] \nabla_{w} q_{w}(s_{t},\ a_{t}) = \Big[ q_{w}(s_{t},\ a_{t}) - r_{t + 1} - \gamma q_{w}(s_{t + 1},\ a_{t + 1}) \Big] \nabla_{w} q_{w}(s_{t},\ a_{t})

在实现时利用梯度在线地交替进行 Q 网络的更新(策略评估)和策略参数的更新(策略提升)

wwαw(w)θθ+βqw(st, at)θlnπθ(atst)w \leftarrow w - \alpha \nabla_{w} \ell(w) \qquad \theta \leftarrow \theta + \beta q_{w}(s_{t},\ a_{t}) \nabla_{\theta} \ln \pi_{\theta}(a_{t} \mid s_{t})

同时考虑到自举带来的偏差累计和传播,可以加入目标网络 q~w(s, a)\tilde{q}_{w^{-}}(s,\ a) 来切断自举,从而缓解偏差:

w(w)=[qw(st, at)rt+1γq~w(st+1, at+1)]wqw(st, at)\nabla_{w} \ell(w) = \Big[ q_{w}(s_{t},\ a_{t}) - r_{t + 1} - \gamma \tilde{q}_{w^{-}}(s_{t + 1},\ a_{t + 1}) \Big] \nabla_{w} q_{w}(s_{t},\ a_{t})

Advantage Actor-Critic(A2C)

将带基线的策略梯度改写为优势函数的形式:

θJ(θ)t=0Tγtθlnπθ(atst)[qπθ(t)(st, at)vπθ(t)(st)]γ=1t=0Tθlnπθ(atst)dπθ(t)(st, at)\nabla_{\theta} J(\theta) \approx \sum_{t = 0}^{\mathrm{T}} \gamma^{t} \nabla_{\theta} \ln \pi_{\theta}(a_{t} \mid s_{t}) \Big[ q_{\pi_{\theta}}^{(t)}(s_{t},\ a_{t}) - v_{\pi_{\theta}}^{(t)}(s_{t}) \Big] \overset{\gamma = 1}{\longrightarrow} \sum_{t = 0}^{\mathrm{T}} \nabla_{\theta} \ln \pi_{\theta}(a_{t} \mid s_{t}) d_{\pi_{\theta}}^{(t)}(s_{t},\ a_{t})

其中优势函数可以写作:

dπθ(t)(st, at)=qπθ(t)(st, at)vπθ(t)(st)=Ert+1rt+1+γEst+1vπθ(t+1)(st+1)vπθ(t)(st)d_{\pi_{\theta}}^{(t)}(s_{t},\ a_{t}) = q_{\pi_{\theta}}^{(t)}(s_{t},\ a_{t}) - v_{\pi_{\theta}}^{(t)}(s_{t}) = \mathcal{E}_{r_{t + 1}} r_{t + 1} + \gamma \mathcal{E}_{s_{t + 1}} v_{\pi_{\theta}}^{(t + 1)}(s_{t + 1}) - v_{\pi_{\theta}}^{(t)}(s_{t})

因此策略梯度可以通过采样轨迹和价值网络 vw(s)v_{w}(s) 近似为:

θJ(θ)t=0Tθlnπθ(atst)[rt+1+γvπθ(t+1)(st+1)vπθ(t)(st)]t=0Tθlnπθ(atst)[rt+1+γvw(st+1)vπθ(st)]\nabla_{\theta} J(\theta) \approx \sum_{t = 0}^{\mathrm{T}} \nabla_{\theta} \ln \pi_{\theta}(a_{t} \mid s_{t}) \Big[ r_{t + 1} + \gamma v_{\pi_{\theta}}^{(t + 1)}(s_{t + 1}) - v_{\pi_{\theta}}^{(t)}(s_{t}) \Big] \approx \sum_{t = 0}^{\mathrm{T}} \nabla_{\theta} \ln \pi_{\theta}(a_{t} \mid s_{t}) \Big[ r_{t + 1} + \gamma v_{w}(s_{t + 1}) - v_{\pi_{\theta}}(s_{t}) \Big]

而对价值网络 vw(s)v_{w}(s) 进行训练时采用时序差分误差作为损失函数,例如单步时序差分下:

(w)=12[gt(1)vw(st)]2=12[rt+1+γvw(st+1)vw(st)]2\ell(w) = \frac{1}{2} \Big[ g_{t}^{(1)} - v_{w}(s_{t}) \Big]^{2} = \frac{1}{2} \Big[ r_{t + 1} + \gamma v_{w}(s_{t + 1}) - v_{w}(s_{t}) \Big]^{2}

固定时序差分目标 gt(1)g_{t}^{(1)}(不考虑该项对 ww 的梯度)后求损失函数 (w)\ell(w) 对 V 网络参数 ww 的梯度:

w(w)=[vw(st)gt(1)]wvw(st)=[vw(st)rt+1γvw(st+1)]wvw(st)\nabla_{w} \ell(w) = \Big[ v_{w}(s_{t}) - g_{t}^{(1)} \Big] \nabla_{w}v_{w}(s_{t}) = \Big[ v_{w}(s_{t}) - r_{t + 1} - \gamma v_{w}(s_{t + 1}) \Big] \nabla_{w}v_{w}(s_{t})

在实现时利用梯度在线地交替进行 V 网络的更新(策略评估)和策略参数的更新(策略提升)

wwαw(w)θθ+β[rt+1+γvw(st+1)vw(st)]θlnπθ(atst)w \leftarrow w - \alpha \nabla_{w} \ell(w) \qquad \theta \leftarrow \theta + \beta \Big[ r_{t + 1} + \gamma v_{w}(s_{t + 1}) - v_{w}(s_{t}) \Big] \nabla_{\theta} \ln \pi_{\theta}(a_{t} \mid s_{t})

同样地,可以引入目标价值网络 v~w(s)\tilde{v}_{w^{-}}(s) 来缓解自举偏差问题:

w(w)=[vw(st)gt(1)]wvw(st)=[vw(st)rt+1γv~w(st+1)]wvw(st)\nabla_{w} \ell(w) = \Big[ v_{w}(s_{t}) - g_{t}^{(1)} \Big] \nabla_{w}v_{w}(s_{t}) = \Big[ v_{w}(s_{t}) - r_{t + 1} - \gamma \tilde{v}_{w^{-}}(s_{t + 1}) \Big] \nabla_{w}v_{w}(s_{t})

相应地,策略参数更新方式需要调整为:

θθ+β[rt+1+γv~w(st+1)vw(st)]θlnπθ(atst)\theta \leftarrow \theta + \beta \Big[ r_{t + 1} + \gamma \tilde{v}_{w^{-}}(s_{t + 1}) - v_{w}(s_{t}) \Big] \nabla_{\theta} \ln \pi_{\theta}(a_{t} \mid s_{t})

相比于带基线的 REINFORCE 算法,A2C 算法利用估计得到的状态价值函数 vw(s)v_{w}(s) 进一步估计了动作价值函数,减小了估计的方差,同时实现了采样过程中的在线更新,但引入了额外的偏差项。


Actor-Critic
http://example.com/2024/07/19/AC/
Author
木辛
Posted on
July 19, 2024
Licensed under