跳转至

10.3-异策略演员-评论性方法

迄今为止,我们介绍的策略梯度方法,包括REINFORCE、QAC和A2C,都属于同策略(on-policy)的。其原因可从真实梯度的表达式中看出:

\[\nabla_\theta J(\theta)=\mathbb{E}_{S\sim\eta,A\sim\pi}\left[\nabla_\theta\ln\pi(A|S,\theta_t)(q_\pi(S,A)-v_\pi(S))\right].\]

为了使用随机梯度来近似这个真实梯度,我们必须按照 \(\pi(\theta)\)来生成动作样本。因此,\(\pi(\theta)\)是行为策略。同时\(\pi(\theta)\)也是我们要改进的目标策略,所以策略梯度方法属于同策略(on-policy)方法。

如果我们已经有一些由其他行为策略生成的样本,那么策略梯度方法仍然可以使用这些样本来得到最优策略,此时方法就变成了异策略(off-policy),不过此时需要采用一种称为重要性采样(importance sampling)的技术。值得一提的是,重要性采样技术并不仅限于强化学习领域,它是通过使用根据某一个概率分布得到的样本来估计另一个概率分布的期望值的一种通用技术。

10.3.1 重要性采样

Note

重要性采样重点看一下

考虑一个随机变量\(X \in \mathcal{X}\),假设\(p_0(X)\)是一个概率分布。我们的目标是估计\(\mathbb{E}_{X\sim p_0}[X]\)。假设我们有一些独立同分布的样本\(\{x_i\}_{i=1}^n\)

  • 第一个场景,样本\(\{x_i\}_{i=1}^n\)是根据\(p_0\)分布生成的,此时平均值\(\bar{x} = \frac{1}{n}\sum_{i=1}^n x_i\)可以用来近似\(\mathbb{E}_{X\sim p_0}[X]\)。这是因为\(\bar{x}\)\(\mathbb{E}_{X\sim p_0}[X]\)的无偏估计,并且估计的方差随着\(n \to \infty\)收敛于零(详见Box 5.1中的大数定律)。

  • 第二个场景,样本\(\{x_i\}_{i=1}^n\)并不是根据\(p_0\)生成的,而是根据另一个概率分布\(p_1\)生成的。我们是否仍然可以使用这些样本来近似\(\mathbb{E}_{X\sim p_0}[X]\)呢?答案是肯定的。然而,我们不能再使用\(\bar{x} = \frac{1}{n}\sum_{i=1}^n x_i\)来近似\(\mathbb{E}_{X\sim p_0}[X]\),这是因为\(\bar{x} \approx \mathbb{E}_{X\sim p_1}[X]\)而非\(\mathbb{E}_{X\sim p_0}[X]\)

在第二种情景下,我们就需要通过重要性采样技术来估计\(E_{X∼p_0}[X]\)。具体而言,\(E_{X∼p_0}[X]\)满足下式:

\[\mathbb{E}_{X\sim p_0}[X]=\sum_{x\in X}p_0(x)x=\sum_{x\in X}p_1(x)\underbrace{\frac{p_0(x)}{p_1(x)}x}_{f(x)}=\mathbb{E}_{X\sim p_1}[f(X)].\tag{10.9}\]

上式表明,估计\(\mathbb{E}_{X\sim p_0}[X]\)被转化为估计\(\mathbb{E}_{X\sim p_1}[f(X)]\)的问题。此时设

\[\bar{f}\doteq\frac{1}{n}\sum_{i=1}^nf(x_i).\]

由于\(\bar{f}\)可以有效近似\(\mathbb{E}_{X\sim p_1}[f(X)]\),因此由式\((10.9)\)可得

\[\mathbb{E}_{X\sim p_{0}}[X]=\mathbb{E}_{X\sim p_{1}}[f(X)]\approx\bar{f}=\frac{1}{n}\sum_{i=1}^{n}f(x_{i})=\frac{1}{n}\sum_{i=1}^{n}\underbrace{\frac{p_{0}(x_{i})}{p_{1}(x_{i})}}_{importance \; weight}x_{i}.\tag{10.10}\]

\((10.10)\)表明\(E_{X\sim p_0}[X]\)可以通过\(x_i\)的加权平均来近似。其中\(\frac{p_0(x_i)}{p_1(x_i)}\)称为重要性权重(importance weight)。当\(p_1 = p_0\)时,重要性权重为1,此时\(\bar{f}\)就变成了\(\bar{x}\)。若\(p_0(x_i) \geqslant p_1(x_i)\),意味着\(x_i\)\(p_0\)下更频繁地被采样到,而在\(p_1\)下较少地被采样到,此时的重要性权重大于\(1\),突出该样本的重要性。

部分读者可能会提出以下疑问:为了计算\(\mathbb{E}_{X\sim p_0}[X]\),式\((10.10)\)需要知道\(p_0(x)\),如果我们已经知道了\(p_0(x)\),为什么不直接使用期望值的定义\(\mathbb{E}_{X\sim p_0}[X] = \sum_{x\in\mathcal{X}} p_0(x)x\)来计算呢?原因是,实际上,如果使用该定义来计算\(\mathbb{E}_{X\sim p_0}[X]\),我们需要知道\(p_0\)的解析表达式或者对于每个\(x \in \mathcal{X}\)\(p_0(x)\)的值。然而,当概率分布由一个神经网络表示时,我们难以获得\(p_0\)的解析表达式;或者当\(\mathcal{X}\)很大时,也难以获得对于每一个\(x\in\mathcal{X}\)\(p_0(x)\)值。相比之下,\((10.10)\)仅需一些样本的\(p_0(x_i)\)值,因此在实践中更容易实施。

Note

适用于\(p_0\)无法采样或者连续性函数时

例子

下面我们通过一个例子来更好地理解重要性采样技术。考虑\(X \in \mathcal{X} = \{+1, -1\}\),即每次采样只能得到\(+1\)或者\(-1\)的样本并假设\(p_0\)满足概率分布:

\[p_0(X=+1)=0.5,\quad p_0(X=-1)=0.5.\]

根据期望值的定义,我们知道\(X\)\(p_0\)上的真实期望值是

\[\mathbb{E}_{X\sim p_0}[X]=(+1)\cdot0.5+(-1)\cdot0.5=0.\]

假设另一个概率分布\(p_1\)满足

\[p_1(X=+1)=0.8,\quad p_1(X=-1)=0.2.\]

根据期望值的定义,我们知道\(X\)\(p_1\)上的真实期望值是

\[\mathbb{E}_{X\sim p_1}[X]=(+1)\cdot0.8+(-1)\cdot0.2=0.6.\]

假设我们有一些从分布 \(p_1\)采样得到的样本\(\{x_i\}\),我们的目标是利用这些样本估计\(\mathbb{E}_{X\sim p_0}[X]\)。如图\(10.2\)展示了采集到的样本,其中样本中\(+1\)的数量远多于\(-1\),这是因为\(p_1(X=+1)=0.8 > p_1(X=-1)=0.2\)。此时如果我们直接计算样本的平均值\(\sum_{i=1}^n x_i/n\),那么这个值会收敛到\(\mathbb{E}_{X\sim p_1}[X]=0.6\)(见图\(10.2\)虚线);如果我们利用式\((10.10)\)计算加权平均值,该值可以成功地收敛到\(\mathbb{E}_{X\sim p_0}[X]=0\)(见图\(10.2\)实线)。

\(10.2\):重要性采样技术的演示示例。此处定义\(X \in \{+1, -1\}\)\(p_0(X = +1) = p_0(X = -1) =0.5\)。样本根据\(p_1\)分布生成,其中\(p_1(X = +1) =0.8\)\(p_1(X = -1) =0.2\)。样本均值收敛于\(\mathbb{E}_{X\sim p_1}[X] =0.6\),但通过式\((10.10)\)重要性采样技术计算的加权均值收敛于\(\mathbb{E}_{X\sim p_0}[X] =0\)

最后需要注意的是,由于式\((10.10)\)中的\(p_1(x)\)位于分母,因此用于生成样本的分布\(p_1\)必须满足当\(p_0(x) \neq0\)时,\(p_1(x) \neq0\)。否则,若\(p_1(x) =0\)\(p_0(x) \neq0\),估计结果可能出现问题。例如,假设

\[p_1(X=+1)=1,\quad p_1(X=-1)=0.\]

那么由\(p_1\)生成的样本均为正值:\(\{x_i\} = \{+1, +1, \ldots, +1\}\)。显然这些样本无法正确估计\(\mathbb{E}_{X\sim p_0}[X] =0\),因为无论\(n\)有多大都会是

\[\frac{1}{n}\sum_{i=1}^n\frac{p_0(x_i)}{p_1(x_i)}x_i=\frac{1}{n}\sum_{i=1}^n\frac{p_0(+1)}{p_1(+1)}1=\frac{1}{n}\sum_{i=1}^n\frac{0.5}{1}1\equiv0.5,\]

无论\(n\)取值多大。

10.3.2 off-policy策略梯度定理

借助重要性采样技术,我们可以推导出Off-policy策略梯度定理。假设\(\beta\)是一个行为策略,我们的目标是通过由\(\beta\)生成的样本来得到一个目标策略\(\pi\),使其能最大化以下目标函数:

\[J(\theta)=\sum_{s\in\mathcal{S}}d_\beta(s)v_\pi(s)=\mathbb{E}_{S\sim d_\beta}[v_\pi(S)],\]

其中\(d_\beta\)为策略\(\beta\)下的稳态分布,\(v_\pi\)为策略\(\pi\)下的状态值。这个目标函数的梯度由以下定理给出。

Info

定理10.1 (off-policy策略梯度定理).如果折扣因子\(\gamma\in(0,1)\),那么目标函数\(J(\theta)\)的梯度为

\[\nabla_{\theta}J(\theta)=\mathbb{E}_{S\sim\rho,A\sim\beta}\left[\underbrace{\frac{\pi(A|S,\theta)}{\beta(A|S)}}_{importance \; weight}\nabla_{\theta}\ln\pi(A|S,\theta)q_{\pi}(S,A)\right],\tag{10.11}\]

其中状态分布\(\rho\)满足

\[\rho(s)=\sum_{s^{\prime}\in\mathcal{S}}d_\beta(s^{\prime})\mathrm{Pr}_\pi(s|s^{\prime}),\quad s\in\mathcal{S},\]

其中\(Pr^\pi(s|s') = \sum_{k=0}^\infty \gamma^k[P^k_\pi]_{s's} = [(I - \gamma P_\pi)^{-1}]_{s's}\)表示在策略\(\pi\)下从状态\(s'\)转移到状态\(s\)的折扣总概率。

\((10.11)\)式中的Off-policy梯度与定理9.1的On-policy梯度相似,但有两个区别:第一个区别是重要性权重;第二个区别在于\(A \sim \beta\)而不是\(A \sim \pi\)。因此我们可以使用由\(\beta\)采样得到的样本来近似真实梯度。该定理的证明见Box \(10.2\)

10.3.3 算法描述

基于Off-policy策略梯度定理,我们现可介绍Off-policy Actor-Critic算法。由于Off-policy Actor-Critic与On-policy Actor-Critic高度相似,此处仅展示一些关键步骤。

第一,Off-policy策略梯度对额外的基准函数\(b(s)\)也是不变的。具体而言,因为\(\mathbb{E}\left[{\frac{\pi(A|S,\theta)}{\beta(A|S)}}\nabla_{\theta}\ln\pi(A|S,\theta)b(S)\right]=0\),我们有

\[\nabla_{\theta}J(\theta)=\mathbb{E}_{S\sim\rho,A\sim\beta}\left[\frac{\pi(A|S,\theta)}{\beta(A|S)}\nabla_{\theta}\ln\pi(A|S,\theta)\left(q_{\pi}(S,A)-b(S)\right)\right],\]

第二,为了降低估计方差,我们可以选择基线函数为\(b(S) = v_\pi(S)\)。此时策略梯度为

\[\nabla_{\theta}J(\theta)=\mathbb{E}\left[{\frac{\pi(A|S,\theta)}{\beta(A|S)}}\nabla_{\theta}\ln\pi(A|S,\theta)\left(q_{\pi}(S,A)-v_{\pi}(S)\right)\right].\]

第三,此时对应的随机梯度算法为

\[\theta_{t+1}=\theta_t+\alpha_\theta\frac{\pi(a_t|s_t,\theta_t)}{\beta(a_t|s_t)}\nabla_\theta\ln\pi(a_t|s_t,\theta_t)\left(q_t(s_t,a_t)-v_t(s_t)\right),\]

其中 \(\alpha_\theta >0\)。与On-policy情况类似,优势函数\(q_t(s, a) - v_t(s)\)可替换为时序差分误差,即

\[q_t(s_t,a_t)-v_t(s_t)\approx r_{t+1}+\gamma v_t(s_{t+1})-v_t(s_t)\doteq\delta_t(s_t,a_t).\]

此时,该算法变成了

\[\theta_{t+1}=\theta_{t}+\alpha_{\theta}\frac{\pi(a_{t}|s_{t},\theta)}{\beta(a_{t}|s_{t})}\nabla_{\theta}\ln\pi(a_{t}|s_{t},\theta)\delta_{t}(s_{t},a_{t}).\]

从而有

\[\theta_{t+1}=\theta_{t}+\alpha_{\theta}\left(\frac{\delta_{t}(s_{t},a_{t})}{\beta(a_{t}|s_{t})}\right)\nabla_{\theta}\pi(a_{t}|s_{t},\theta_{t})\]

Note

与同策略的公式\(\theta_{t+1}=\theta_t+\alpha\underbrace{\left(\frac{\delta_t(s_t,a_t)}{\pi(a_t|s_t,\theta_t)}\right)}_{\mathrm{step~size}}\nabla_\theta\pi(a_t|s_t,\theta_t)\)相比,虽然分子还会改变从而发生与同策略相同的变化,即充分利用,但是可以看到分母是一个固定的值,那么此时也就不存在什么探索。

Off-policy Actor-Critic算法的具体步骤在算法\(10.3\)给出。可以看出,该算法与A2C算法基本相同,唯一的区别是在策略更新和值更新步骤都加入了额外的重要性权重。需要注意的是,除了策略更新之外,值更新也通过重要性采样变成了Off-policy的。实际上,重要性采样是一种通用技术,可以应用于诸多基于策略或者基于值的算法。最后,算法\(10.3\)可以推广得到更多算法,以整合资格迹(eligibility traces)等更多技术[73]。

算法\(10.3\):基于重要性采样的Off-policy Actor-Critic算法


评论