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的良好值,则可能需要很长时间来偶然获得它,并且获得所需信号的配置应当被加强。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论