10.2-优势演员-评论性方法
现在我们介绍优势演员-评论家算法(advantage actor-critic, A2C)。该算法的核心思想是通过引入一个基准来降低估计的方差。
10.2.1 基准不变性¶
策略梯度有一个重要性质:它对额外的基线(baseline)是不变的,即
其中\(b(S)\)是基准函数,它是状态\(S\)的一个标量函数。上式表明了添加或者去掉基准函数\(b(S)\)不会影响策略梯度。下面回答两个重要问题。
-
第一,为什么式\((10.3)\)成立?
\((10.3)\)成立的充分必要条件如下:
\[\mathbb{E}_{S\sim\eta,A\sim\pi}\left[\nabla_\theta\ln\pi(A|S,\theta_t)b(S)\right]=0.\]该方程成立的条件是
\[\begin{aligned}\mathbb{E}_{S\sim\eta,A\sim\pi}\left[\nabla_{\theta}\ln\pi(A|S,\theta_{t})b(S)\right]&=\sum_{s\in\mathcal{S}}\eta(s)\sum_{a\in\mathcal{A}}\pi(a|s,\theta_{t})\nabla_{\theta}\ln\pi(a|s,\theta_{t})b(s)\\&=\sum_{s\in\mathcal{S}}\eta(s)\sum_{a\in\mathcal{A}}\nabla_{\theta}\pi(a|s,\theta_{t})b(s)\\&=\sum_{s\in\mathcal{S}}\eta(s)b(s)\sum_{a\in\mathcal{A}}\nabla_{\theta}\pi(a|s,\theta_{t})\\&=\sum_{s\in\mathcal{S}}\eta(s)b(s)\nabla_\theta\sum_{a\in\mathcal{A}}\pi(a|s,\theta_t)\\&=\sum_{s\in\mathcal{S}}\eta(s)b(s)\nabla_{\theta}1=0.\end{aligned}\] -
第二,为什么我们要引入基准函数?它有什么用?
基准函数的作用在于其能够降低我们使用随机样本近似真实梯度时的近似方差。具体而言,定义
\[X(S,A)\doteq\nabla_\theta\ln\pi(A|S,\theta_t)[q_\pi(S,A)-b(S)].\tag{10.4}\]此时真实的梯度为\(\mathbb{E}[X(S, A)]\)。由于我们需要使用一个随机样本\(x\)来近似\(\mathbb{E}[X]\)的值,我们希望方差\(\operatorname{var}(X)\)越小越好。如果\(\operatorname{var}(X)\)接近0,那么任何样本\(x\)都可以准确地近似\(\mathbb{E}[X]\);相反,如果\(\operatorname{var}(X)\)很大,样本\(x\)的值可能与\(\mathbb{E}[X]\)有较大差距,此时用\(x\)来近似\(\mathbb{E}[X]\)可能很不准确。
尽管\(\mathbb{E}[X]\)对于基线是不变的,但方差\(\text{var}(X)\)却是会随着基准变化的。因此,我们可以设计一个好的基线从而最小化\(\text{var}(X)\)。在REINFORCE和QAC算法中,我们设置了\(b =0\),而这不一定是一个好的基准函数。
事实上,能够最小化\(\text{var}(X)\)的最优基线为
\[b^*(s)=\frac{\mathbb{E}_{A\sim\pi}\left[\|\nabla_\theta\ln\pi(A|s,\theta_t)\|^2q_\pi(s,A)\right]}{\mathbb{E}_{A\sim\pi}\left[\|\nabla_\theta\ln\pi(A|s,\theta_t)\|^2\right]},\quad s\in\mathcal{S}.\tag{10.5}\]证明过程见Box 10.1。
尽管\((10.5)\)中的基线是最优的,但由于其复杂度过高而难以实际应用。如果从\((10.5)\)中移除权重\(\|\nabla_\theta \ln \pi(A|s, \theta_t)\|^2\),就可以得到一个次优的基准,它有一个简洁的表达式:
\[b^\dagger(s)=\mathbb{E}_{A\sim\pi}[q_\pi(s,A)]=v_\pi(s),\quad s\in\mathcal{S}.\]值得注意的是,这个次优的基准函数就是状态值函数。
10.2.2 算法描述¶
当\(b(s) = v_\pi(s)\)时,\((10.1)\)中的梯度上升算法就变为可
其中
该函数被称为优势函数(advantage function),它反应了一个行动相比于其他行动的优势。具体来说,由于状态值\(v_\pi(s) = \sum_{a\in\mathcal{A}} \pi(a|s)q_\pi(s, a)\)表示平均行动值。因此\(\delta_\pi(s, a) >0\),表明响应的行动值大于均值,具有一定的优势。
如果把\((10.7)\)式中的真实梯度替换成随机梯度,可以得到
Note
可以看到,这种stochastic gradient的方法可以很好的平衡探索和利用
步长与\(\delta_t\)成比例,而不是与绝对值\(q_t\)成比例,当\(\delta_t\)较大时,步长也会变大,那么朝着那个方向走的也会变多,因此\(\pi(a_t|s_t)\)也会变大。通俗来说就是,我知道当前这个动作会有比较大的动作值,那么下个时刻就要给更大的概率去选择它,这就是充分利用。
如果分母对应的策略较小,那么步长也会变大,所得到下一时刻的\(\pi\)的概率也会比较大,通俗来说,上一时刻我选择这个行动的概率较小,但下一时刻我会给选择这个行动更大的概率,从而增加探索。
其中\(s_t\),\(a_t\)分别为时刻\(t\)时状态空间\(\mathcal{S}\)与动作空间\(\mathcal{A}\)的采样值。这里\(q_t(s_t,a_t)\)和 \(v_t(s_t)\)分别是\(q_{\pi(\theta_t)}(s_t,a_t)\)和\(v_{\pi(\theta_t)}(s_t)\)的估计值。式\((10.8)\)中的算法是基于\(q_t-v_t\)这个相对值(而非\(q_t\)的绝对值)更新策略的。这种设计从直观上是合理的,因为当我们在一个状态下选择一个行动时,我们只关注哪个动作相对于其他动作的具有更大的价值。而不关心其绝对行动值
如果通过蒙特卡洛方法估计\(q_t(s_t, a_t)\)和\(v_t(s_t)\),那么式\((10.8)\)中的算法被称为带基准的REINFORCE(REINFORCE with baseline)。如果通过时序差分方法估计\(q_t(s_t, a_t)\)和\(v_t(s_t)\),该算法通常称为Advantage Actor-Critic(A2C)。算法\(10.2\)给出了A2C算法的流程。应该注意的是,算法\(10.2\)中的优势函数是通过时序差分误差近似的,即:
这个近似是合理的,因为
上式根据\(q_\pi(s_t, a_t)\)的定义而得到。使用时序差分(TD)误差的一个优势在于,我们仅需使用一个神经网络来表示 \(v_\pi(s)\)。相反,若设 \(\delta_t = q_t(s_t, a_t) - v_t(s_t)\),则需要使用两个网络分别表示 \(v_\pi(s)\)和 \(q_\pi(s, a)\)。当我们使用时序差分误差时,该算法也可称为TD Actor-Critic。此外需要注意的是,策略 \(\pi(\theta_t)\)是一个随机策略,因此它具有一定的探索性,所以它可以直接用来生成经验样本,而无需依赖外部机制(如\(\varepsilon\)-贪婪)。A2C存在若干变体,例如asynchronous advantage actor-critic(A3C)。感兴趣的读者可参阅[71,72]。

算法\(10.2\):Advantage Actor-Critic或TD Actor-Critic