147

文章目录

  1. 背景
  2. 参数探索策略梯度算法(PGPE, Policy Gradients with Parameter-Based Exploration)
    1. 强化学习基本模型
    2. PGPE
      1. 改进一:添加基线值
      2. 改进二:对称采样
      3. 改进三:归一化
    3. 伪代码
  3. 实验对比
  4. 其它
  5. 引用

背景

策略梯度(PG, Policy Gradient) 算法是为数不多的可以解决复杂高维的、状态空间及行为空间均连续的强化学习问题的可行方法之一。它之所以被称为策略梯度是因为该方法不从值函数中间接得到策略,而是直接在策略空间中搜索来得到策略。很多PG算法(比如最早的REINFORCE)都会面临的一个问题就是梯度估计的方差太大了。方差太大会导致训练过程不稳定、收敛缓慢。自PG问世之后,有许多算法不断被提出来用于解决此问题,但是它们都没有解决带来此问题的根源(论文中这么写的),也就是:在样本生成过程中的每一步中,策略梯度算法都需要从一个概率性的策略中采样得到一个行为(action),这样在每一步的采样中都引入了噪声。显然每一轮的数据采样步数越长,引入的噪声就越多,方差就越大。

为了解决方差大的问题,本文提出使用策略探索(parameter based exploration)来得到梯度的估计。这里策略(policy)通过一个控制器的所有参数的分布来定义(下文会具体介绍)。在每一轮数据采样之前,策略的参数从分布中采样得到,因此每一轮的采样过程中,控制器都是确定的。由于一轮的数据仅依赖于此单个策略样本,所以梯度估计的噪声被大大降低了。

参数探索策略梯度算法(PGPE, Policy Gradients with Parameter-Based Exploration)

强化学习基本模型

首先假设强化学习的环境具有马尔可夫性,也就是未来的状态、行为仅仅与当前的状态、行为有关,而与历史状态、行为无关。并且,设状态(state)空间和行为(action)空间都是连续的,可以用一个实数向量来表示。

设在时刻$t$,状态为$s_t$,采取的动作(action)为$a_t$,得到的奖励为$r_t(a_t, s_t)$。根据马尔可夫性,我们有$a_t \sim p(a_t|s_t, \theta)$,并且有$s_{t+1} \sim p(s_{t+1}|s_t, a_t)$,这里$\theta$为策略的参数。

每一轮采样,通过执行代理,我们可以得到一个长度为$T$的历史序列数据$h=[ s_{1:T}, a_{1:T} ]$(在其他论文中,这也被称作 trajectory 或 roll-out)。

得到一条历史数据$h$后,我们可以计算总奖励$r(h) = \sum_{t+t}^T r_t$,我们的目标是找到参数$\theta$,来最大化奖励的期望:

$$ J(\theta) = \int_H p(h|\theta)r(h)dh \tag{1} $$

这里,我们对上式求梯度,并使用求导公式$\nabla_x y(x) = y(x)\nabla_x log y(x)$进行简单变换:

$$ \nabla J(\theta) = \int_H p(h|\theta) \nabla_\theta log p(h|\theta) r(h) dh \tag{2} $$

由于环境具有马尔可夫性,我们有$p(h|\theta) = p(s_1) \prod_{t=1}^T p(s_{t+1}|s_t, a_t)p(a_t|s_t, \theta)$,代入上述公式有:

$$ \nabla J(\theta)\int_H p(h|\theta) \sum_{t+1}^T \nabla_\theta p(a_t|s_t, \theta) r(h) dh \tag{3} $$

显然,对整个样本空间进行积分是不可行的,所以此处采用采样的方法来得到估计:

$$ \nabla_\theta J(\theta) \approx \cfrac{1}{N} \sum_{n+1}^N \sum_{t+1}^T \nabla_\theta p(a_t^n|s_t^n, \theta) r(h^n) \tag{4} $$

其中,历史数据根据参数$\theta$决定的策略进行采样得到:$h^i \sim p(h^i|\theta)$。

现在的问题是如何对$p(a_t|s_t, \theta)$进行建模,在一般策略梯度算法中,比如REINFORCE,参数$\theta$用于决定一个策略$\pi_\theta (a_t|s_t) = p(a_t|s_t, \theta)$。典型的,一个策略模型会去拟合一个策略函数,最终输出采取不同动作(actions)的概率分布 (下文称此策略为概率性策略)。在此情况下,在进行历史数据采样过程中,每一步(step)都会调用策略函数,由于策略函数是一个分布,所以每一步都会引入不确定性,这最终会导致得到一个方差非常大的梯度估计。

PGPE

PGPE通过将上述的概率性策略替换为一个参数$\theta$的概率分布来解决高方差的问题。假设策略的参数$\theta$服从参数为$\rho$的分布,我们有:

$$ p(a_t|s_t, \rho) = \int_\theta p(\theta|\rho) \delta_{F_\theta (s_t), a_t} d\theta \tag{5} $$

其中,$F_\theta$用于在状态$s_t$下通过模型(由参数$\theta$确定)选择出一个(确定性)的行为;$\delta$为狄拉克函数,该函数用于选择出所有会导致行为$a_t$的参数$\theta$,具体性质可参考概率论等相关文献。

该方法的好处是,整个历史序列数据都由采样得到的单一参数样本$\theta$决定,并且由$\theta$决定的策略对于某个状态$s_t$所输出的行为也是确定的。这就降低了序列采样过程中引入的不确定性(译注:此处是否会导致exploration不足的问题?),进而降低了梯度估计的方差。

PGPE另外的一个好处就是,无需通过反向传播来计算导数,仅需通过参数扰动即可实现梯度的计算。这样对于一些不可微的控制器,我们也可以使用该方法。

给定参数$\rho$我们有期望收益:

$$ J(\rho) = \int_\theta \int_H p(h, \theta|\rho) r(h) dh d\theta \tag{6} $$

对上式求梯度,并使用$log$求导的小trick,我们有:

$$ \nabla_\theta J(\rho) = \int_\theta \int_H p(h, \theta|\rho) \nabla_\rho \text{log} p(h, \theta|\rho) r(h) dh d\theta \tag{7} $$

由于在给定参数$\theta$的情况下,$h$与$\rho$是条件独立的 $\nabla_\rho \text{log} p(h, \theta | \rho) = \nabla_\rho \text{log} p(\theta | \rho)$,代入上式有:

$$ \nabla_\theta J(\rho) = \int_\theta \int_H p(h|\theta) p(\theta|\rho) \nabla_\rho \text{log} p(\theta|\rho) r(h) dh d\theta \tag{8} $$

同样,我们使用采样的方法进行计算:

$$ \nabla_\rho J(\rho) \approx \cfrac{1}{N} \sum_{n=1}^{N} \nabla_\rho \text{log} p(\theta|\rho) r(h^n) \tag{9} $$

假设$\rho$的由一些列的均值$\{ \mu_i \}$和标准差$\{ \sigma_i \}$的组成,它们决定了一系列相互独立的正态分布,且$\theta_i \sim \cal{N}(\mu_i, \sigma_i^2)$,其中$\theta_i$为$\theta$的第$i$个元素,$\cal{N}$表示正态分布。根据正态分布的求导公式,我们可以得到$\mu_i$与$\sigma_i$的梯度:

$$ \nabla_{\mu_i} \text{log} p(\theta|\rho) = \cfrac{\theta_i - \mu_i}{\sigma_i^2} \tag{10.1} $$
$$ \nabla_{\sigma_i} \text{log} p(\theta | \rho) = \cfrac{(\theta_i - \mu_i)^2 - \sigma_i^2}{\sigma_i^3} \tag{10.2} $$

将$(10.1), (10.2)$代入$(9)$即可得到梯度计算结果。

改进一:添加基线值

在奖励$r$的基础之上减去一个基线值$b$是策略梯度算法中惯用的一个优化方法,$b$值我们可以通过历史样本奖励的移动平均得到。直观理解,如果我们得到的奖励$r\gt b$,那么我们希望对参数$\rho$进行调整来增大$\theta_i$被选中的概率;反之,我们希望降低$\theta_i$选中的概率。如果我们将参数调整的步长设置为$\alpha_i = \alpha \sigma_i^2$,其中$\alpha$为超参常量,我们有如下的参数更新等式:

$$ \Delta\mu_i = \alpha (r-b)(\theta_i - \mu_i) \tag{11.1} $$
$$ \Delta \sigma_i = \alpha(r-b) \cfrac{(\theta_i - \mu_i)^2 - \sigma_i^2}{\sigma_i} \tag{11.2} $$

改进二:对称采样

使用减去基线值的方法在大多数场景下是有效并且准确的,但是它有一些缺点。特别是,如果奖励的分布非常不均匀,那么我们计算得到的基线值就可能很不准确,这样导致我们计算得到的$r-b$就很不准确。

为了更加准确的计算奖励的差值,我们可以采用对称采样的方式。也就是,根据正态分布$\cal{N}(0, \sigma)$采样得到一个扰动参数$\epsilon$,然后我们得到两个对称的参数$\theta^+ = \mu + \epsilon$和$\theta^- = \mu - \epsilon$。我们将使用参数$\theta^+$和$\theta^-$时得到的奖励分别记为$r^+$和$r^-$。我们分别使用$\theta^+$和$\theta^-$作为参数的两个策略分别各自采样得到一个样本。将得到的两个样本代入等式$(10)$中,我们有:

$$ \nabla_{\mu_i} J(\rho) \approx \cfrac{\epsilon_i (r^+ - r^-)}{2\sigma_i^2} \tag{12} $$

使用与前文同样的步长,我们可以得到均值参数的更新公式:

$$ \Delta \mu_i = \cfrac{\alpha \epsilon_i (r^+ - r^-)}{2} \tag{13} $$

为了计算$\Delta \sigma_i$,我们使用$r = \cfrac{r^+ + r^-}{2}$,代入$11.2$有:

$$ \Delta \sigma_i = \alpha \left( \cfrac{r^+ + r^-}{2} -b \right) \left( \cfrac{\epsilon_i^2 - \sigma_i^2}{\sigma_i} \right) \tag{14} $$

相比于改进一的结果,这里的计算方法多引入了一次采样的计算,但是去除了可能导致误导结果的基线值$b$,这样就改善了均值$\mu$的梯度预测。实验结果表明对称采样引入的额外计算是值得的,它在收敛性和时间上消耗上带来了明显的改进。

改进三:归一化

在上面参数更新的公式中,我们看到更新的幅度受到奖励的数量级的影响,显然$r$越大会导致更新的幅度越大。这样我们在不同的实验中就需要不断地去调整步长参数,来适应不同的环境。我们可以通过对收益进行归一化来降低我们调参的工作量。归一化的基数我们可以使用最大收益值$m$或者当前已知的最大收益值。由于我们同时引入了基线值$b$,那么我们最后可以使用如下的更新方法:

$$ \Delta \mu_i = \cfrac{\alpha \epsilon_i (r^+ - r^-)}{2m - r^+ - r^-} \tag{15.1} $$
$$ \Delta \sigma_i = \cfrac{\alpha}{m - b} \left(\cfrac{r^+ + r^- - b}{2}\right)\left( \cfrac{\epsilon^2 - \sigma_i^2}{\sigma_i} \right) \tag{15.2} $$

译注:上式中$\mu$的更新等式$15.1$中,分母是否可以直接使用$2(m-b)$?

伪代码

论文算法伪代码截图如下,其中左半部分为不带对称采样的算法,右边为带对称采样的代码。算法中,每一个epoch采样了$N$条序列数据$h^i (i\in [1, N])$。

PGPE 算法伪代码

实验对比

文中将PGPE算法与之前的 REINFORCE 算法,SPSA (simultaneous perturbation stochastic adaptation)算法,eNAC (episodic natural actor critic)算法以及进化算法在不同的模拟场景下进行了比较。实验结果图中的横坐标为训练所用episodes样本的个数,每个 episode 的样本都包含了执行代理与环境的$T$此交互得到的序列数据(每个实验的$T$都是固定的)。

随便看一个平衡杆实验结果图,其它具体实验大家可参考论文本体。

平衡杆实验对比结果

图中,SyS-PGPE为使用了对称采样的PGPE版本。

从所有的实验结果观察来看,episode的长度越长(不是episode的个数),PGPE算法相对于REINFORCE的优势就越明显。这样是因为序列数据变长,会导致REINFORCE对于梯度的估计的方差变大。实验还发现,对称采样在复杂的任务中显得尤为重要(如果不使用性能会差很多)。

其它

论文中将PGPE算法和其它几个算法的关系进行了讨论,感兴趣的可以查看原文。

引用

[1] Sehnke, F., Osendorfer, C., Rückstieß, T., Graves, A., Peters, J., & Schmidhuber, J. (2010). Parameter-exploring policy gradients. Neural Networks, 23(4), 551-559.