基于值函数的方法(DQN)
基于策略的方法(REINFORCE)
Actor-Critic 算法本质上是基于策略的算法,这一系列算法的目标都是优化一个带参数的策略,只是会额外学习价值函数,从而帮助策略函数更好地学习。
在 REINFORCE 算法中,目标函数的梯度中有一项轨迹回报,用于指导策略的更新。
REINFORCE 算法用蒙特卡洛方法来估计$Q(s, a)$,考虑拟合一个值函数来指导策略进行学习?
在策略梯度中,可以把梯度写成下面这个更加一般的形式:
$g = \mathbb{E}\left[\sum_{t=0}^{T} \psi_t \nabla_{\theta} \log \pi_{\theta}(a_t|s_t)\right]$
<aside> 💡
$\psi_t$可以有很多种形式:
REINFORCE 通过蒙特卡洛采样的方法对策略梯度的估计是无偏的,但是方差非常大。
本章将着重介绍形式(6),即通过时序差分残差
$\\psi_t = r_t + \\gamma V^{\\pi}(s_{t+1}) - V^{\\pi}(s_t)$来指导策略梯度进行学习。事实上,用$Q$值或者$V$值本质上也是用奖励来进行指导,但是用神经网络进行估计的方法可以减小方差、提高鲁棒性。除此之外,REINFORCE 算法基于蒙特卡洛采样,只能在序列结束后进行更新,这同时也要求任务具有有限的步数,而 Actor-Critic 算法则可以在每一步之后都进行更新,并且不对任务的步数做限制。
我们将 Actor-Critic 分为两个部分:Actor (策略网络) 和 Critic (价值网络),如图 10-1 所示。
* **Actor** 要做的是与环境交互,并在 Critic 价值函数的指导下用策略梯度学习一个更好的策略。
* **Critic** 要做的是通过 Actor 与环境交互收集的数据学习一个价值函数,这个价值函数会用于判断在当前状态什么动作是好的,什么动作是不好的,进而帮助 Actor 进行策略更新。
本章将着重介绍形式(6),通过时序差分残差 $\psi_t = r_t + \gamma V^{\pi}(s_{t+1}) - V^{\pi}(s_t)$来指导策略梯度进行学习。
用$Q$值或者$V$值本质上也是用奖励来进行指导,但用神经网络进行估计的方法可以减小方差、提高鲁棒性。