乐读窝

深度学习

乐读窝 > 文学理论 > 深度学习

20.9 通过随机操作的反向传播

书籍名:《深度学习》    作者:伊恩.古德费洛



传统的神经网络对一些输入变量x施加确定性变换。当开发生成模型时,我们经常希望扩展神经网络以实现x的随机变换。这样做的一个直接方法是使用额外输入z(从一些简单的概率分布采样得到,如均匀或高斯分布)来增强神经网络。神经网络在内部仍可以继续执行确定性计算,但是函数f(x,z)对于不能访问z的观察者来说将是随机的。假设f是连续可微的,我们可以像往常一样使用反向传播计算训练所需的梯度。

作为示例,让我们考虑从均值μ和方差σ2的高斯分布中采样y的操作:

因为y的单个样本不是由函数产生的,而是由一个采样过程产生,它的输出会随我们的每次查询发生变化,所以取y相对于其分布的参数μ和σ2的导数似乎是违反直觉的。然而,我们可以将采样过程重写,对基本随机变量进行转换以从期望的分布获得样本:

现在我们将其视为具有额外输入z的确定性操作,可以通过采样操作来反向传播。至关重要的是,额外输入是一个随机变量,其分布不是任何我们想对其计算导数的变量的函数。如果我们可以用相同的z值再次重复采样操作,结果会告诉我们μ或σ的微小变化将会如何改变输出。

能够通过该采样操作反向传播允许我们将其并入更大的图中。我们可以在采样分布的输出之上构建图元素。例如,我们可以计算一些损失函数J(y)的导数。我们还可以构建这样的图元素,其输出是采样操作的输入或参数。例如,我们可以通过和构建更大的图。在这个增强图中,我们可以通过这些函数的反向传播导出。

在该高斯采样示例中使用的原理能更广泛地应用。我们可以将任何形为p(y;θ)或p(y|x;θ)的概率分布表示为,其中是同时包含参数θ和输入x的变量(如果适用的话)。给定从分布采样的值y(其中可以是其他变量的函数),我们可以将

重写为

其中z是随机性的来源。只要f是几乎处处连续可微的,我们就可以使用传统工具(例如应用于f的反向传播算法)计算y相对于的导数。至关重要的是,不能是z的函数,且z不能是的函数。这种技术通常被称为重参数化技巧(reparametrization  trick)、随机反向传播(stochastic  back-propagation)或扰动分析(perturbation  analysis)。

要求f是连续可微的,当然需要y是连续的。如果我们希望通过产生离散值样本的采样过程进行反向传播,则可以使用强化学习算法(如REINFORCE算法(Williams,1992)的变体)来估计上的梯度,这将在第20.9.1节中讨论。

在神经网络应用中,我们通常选择从一些简单的分布中采样z,如单位均匀分布或单位高斯分布,并通过网络的确定性部分重塑其输入来实现更复杂的分布。

通过随机操作扩展梯度或优化的想法可追溯到20世纪中叶(Price,1958;Bonnet,1964),并且首先在强化学习(Williams,1992)的情景下用于机器学习。最近,它已被应用于变分近似(Opper  and  Archambeau,2009)和随机生成神经网络(Bengio  et  al.,2013b;Kingma,2013;Kingma  and  Welling,2014b,a;Rezende  et  al.,2014;Goodfellow  et  al.,2014c)。许多网络,如去噪自编码器或使用Dropout的正则化网络,也被自然地设计为将噪声作为输入,而不需要任何特殊的重参数化就能使噪声独立于模型。



20.9.1 通过离散随机操作的反向传播


当模型发射离散变量y时,重参数化技巧不再适用。假设模型采用输入x和参数θ,两者都封装在向量中,并且将它们与随机噪声z组合以产生y:

因为y是离散的,f必须是一个阶跃函数。阶跃函数的导数在任何点都是没用的。在每个阶跃边界,导数是未定义的,但这是一个小问题。大问题是导数在阶跃边界之间的区域几乎处处为零。因此,任何代价函数J(y)的导数无法给出如何更新模型参数θ的任何信息。

REINFORCE算法(REward  Increment  =  nonnegative  Factor×Offset  Reinforcement×Characteristic  Eligibility)提供了定义一系列简单而强大解决方案的框架(Williams,1992)。其核心思想是,即使是具有无用导数的阶跃函数,期望代价通常是服从梯度下降的光滑函数。虽然当y是高维(或者是许多离散随机决策组合的结果)时,该期望通常是难解的,但我们可以使用蒙特卡罗平均进行无偏估计。梯度的随机估计可以与SGD或其他基于随机梯度的优化技术一起使用。

通过简单地微分期望成本,我们可以推导出REINFORCE最简单的版本:

式(20.60)依赖于J不直接引用的假设。放松这个假设来扩展该方法是简单的。式(20.61)利用对数的导数规则,。式(20.62)给出了该梯度的无偏蒙特卡罗估计。

在本节中我们写的,可以等价地写成。这是因为由参数化,并且如果x存在,则包含θ和x两者。

简单REINFORCE估计的一个问题是其具有非常高的方差,需要采y的许多样本才能获得对梯度的良好估计,或者等价地,如果仅绘制一个样本,则SGD将收敛得非常缓慢并将需要较小的学习率。通过使用方差减小(variance  reduction)方法(Wilson,1984;L'Ecuyer,1994),可以地减少该估计的方差。想法是修改估计量,使其预期值保持不变,但方差减小。在REINFORCE的情况下提出的方差减小方法,涉及计算用于偏移J(y)的基线(baseline)。注意,不依赖于y的任何偏移b(w)都不会改变估计梯度的期望,因为

这意味着

此外,我们可以通过计算关于p(y)的方差,并关于最小化获得最优。我们发现这个最佳基线对于向量的每个元素ωi是不同的:

相对于ωi的梯度估计则变为

其中估计上述。获得估计b通常需要将额外输出添加到神经网络,并训练新输出对的每个元素估计和。这些额外的输出可以用均方误差目标训练,对于给定的,从p(y)采样y时,分别用和作目标。然后可以将这些估计代入式(20.68)就能恢复估计b。Mnih  and  Gregor(2014)倾向于使用通过目标J(y)训练的单个共享输出(跨越的所有元素i),并使用作为基线。

在强化学习背景下引入的方差减小方法(Sutton  et  al.,2000;Weaver  and  Tao,2001),Dayan(1990)推广了二值奖励的前期工作。可以参考Bengio  et  al.(2013b)、Mnih  and  Gregor(2014)、Ba  et  al.(2014)、Mnih  et  al.(2014)或Xu  et  al.(2015)中在深度学习的背景下使用减少方差的REINFORCE算法的现代例子。除了使用与输入相关的基线,Mnih  and  Gregor(2014)发现可以在训练期间调整的尺度(即除以训练期间的移动平均估计的标准差),即作为一种适应性学习率,可以抵消训练过程中该量大小发生的重要变化的影响。Mnih  and  Gregor(2014)称之为启发式方差归一化(variance  normalization)。

基于REINFORCE的估计器可以被理解为将y的选择与J(y)的对应值相关联来估计梯度。如果在当前参数化下不太可能出现y的良好值,则可能需要很长时间来偶然获得它,并且获得所需信号的配置应当被加强。