NO.36.tip: 自然梯度下降

背景

我们讨论自然梯度下降(Natural Gradient Descent, NGD),这是一种用于优化(条件)概率分布 参数的二阶方法。其关键思想是通过测量诱导分布之间的距离来计算参数更新,而不是直接比较参数值。

例如,考虑比较两个高斯分布,。参数向量之间的(平方)欧几里得距离分解为 。然而,预测分布的形式为 ,因此需要测量 相对于 的变化。两个单变量高斯分布,其均值相差 。两个单变量高斯分布共享相同的小方差 ,,这两个单变量高斯分布共享相同的大方差。很显然,当方差很小时, 的值更重要(就对分布的影响而言)。因此,我们看到这两个参数相互作用,而欧几里得距离无法捕捉到这一点。当我们考虑更复杂的模型(例如深度神经网络)时,这个问题会变得更糟。通过对这种相关性进行建模,自然梯度下降可以比其他梯度方法更快地收敛。

自然梯度下降的关键是根据 KL 散度来测量两个概率分布之间的距离概念。我们可以用 Fisher 信息矩阵来近似。特别地,对于任何给定的输入 ,我们有:

其中, 是 Fisher 信息矩阵。

我们可以使用 来计算当前分布和更新分布之间的平均 KL 散度,其中 是平均 Fisher 信息矩阵:

自然梯度下降使用逆 Fisher 信息矩阵作为预处理矩阵,即我们执行以下形式的更新:

其中:

称为自然梯度。

源与流

自然梯度下降的解释

自然梯度下降作为信赖域方法

我们证明,可以将标准梯度下降解释为优化目标的线性近似,并对参数变化的 范数进行惩罚,即如果 ,则优化:

现在,让我们将平方距离替换为基于 Fisher 信息矩阵的平方距离,。这相当于白化坐标系(whitened coordinate system)中欧几里得距离的平方 ,因为:

新目标变成:

求解 ,得出更新:

这与自然梯度方向相同。因此,我们可以将自然梯度下降视为一种信赖域方法,其中我们对目标使用一阶近似,并在约束中使用 Fisher 信息矩阵距离。

在上面的推导中,我们假设 是一个常数矩阵。在大多数问题中,该常数矩阵会在空间中的每个点发生变化,因为我们在一个被称为黎曼流形(Riemannian manifold)的弯曲空间中进行优化。对于某些模型,我们可以有效地计算 Fisher 信息矩阵,即使使用目标的一阶近似,也能够捕获曲率信息。

自然梯度下降作为高斯-牛顿方法

如果 是一个指数族分布,其自然参数由 计算,那么我们可以证明自然梯度下降与广义高斯-牛顿(Generalized Gauss-Newton, GGN)方法相同。此外,在在线设置中,这些方法等效于使用扩展卡尔曼滤波器执行顺序贝叶斯推理。

自然梯度下降的优点

使用 Fisher 信息矩阵而不是黑塞矩阵作为预处理矩阵有两个优点。首先, 总是正定的,而 在鞍点上可以有负的特征值,这在高维空间中很普遍。其次,很容易从迷你批次在线近似 ,因为 是梯度向量的外积的期望值(相对于经验分布)。这与基于黑塞的方法形成了对比,基于黑塞的方法对迷你批次近似引入的噪声更敏感。

此外,与信赖域优化的联系清楚地表明,自然梯度下降以对预测最重要的方式更新参数。这使得该方法能够在参数空间的无信息区域中采取更大的步长,这有助于避免陷入停滞,同时也有助于解决参数高度相关时出现的问题。

我们提出具有不寻常的、高度耦合参数化的二维高斯分布:

目标是交叉熵损失:

该目标的梯度由下式给出:

假设 ,于是 Fisher 矩阵是一个常数矩阵:

我们将 空间中的最陡下降与自然梯度法进行了比较。自然梯度法相当于 空间中的最大下降。两种方法都从 开始。全局最优值为 。我们看到,自然梯度方法(蓝点)收敛到这个最优值的速度要快得多,并且采用最短的路径,而最陡的下降则采用非常迂回的路径。我们还看到,白化参数空间中的梯度场呈现为"球形",这使得下降更加简单和快速。

最后,请注意,无论我们如何对分布进行参数化,自然梯度下降始终保持不变。因此,即使对于高斯的标准参数化,我们也会得到相同的结果。如果我们的概率模型更复杂,例如深度神经网络。

近似自然梯度

自然梯度下降的主要缺点是计算(逆)Fisher 信息矩阵的计算成本。为了加快计算速度,有几种方法对 的形式进行了假设,这样就可以有效地求逆。例如,使用对角近似进行神经网络训练,使用低秩加块对角近似,还有假设梯度的协方差可以通过具有低树宽的有向高斯图模型来建模(即 的 Cholesky 因子分解是稀疏的)。

有人提出了 KFAC 方法。KFAC 表示"Kronecker 因子近似曲率"(Kronecker factored approximate curvature)。这将深度神经网络的 Fisher 信息矩阵近似为块对角矩阵,其中每个块是两个小矩阵的 Kronecker 乘积。该方法在神经网络的监督学习以及神经策略网络的强化学习上显示出良好的结果。Kronecker 因子近似曲率近似可以使用的平均场分析来证明。此外,有人证明了如果深度神经网络被过度参数化(充当插值器),则 Kronecker 因子近似曲率方法将收敛到深度神经网络的全局最优。

一种更简单的方法是通过使用经验分布代替模型的分布来近似 Fisher 信息矩阵。特别是,定义 。然后我们可以按如下公式计算经验 Fisher:

这种近似因计算简单而被广泛使用。特别地,我们可以使用平方梯度向量来计算对角线近似。(这与 AdaGrad 类似,但只使用当前梯度,而不是梯度的移动平均值;后者在执行随机优化时是更好的方法。)

遗憾的是,经验 Fisher 不如真正的 Fisher 有效。其原因是,当我们到达参数空间的平坦部分时,梯度向量为零,经验 Fisher 将变得奇异,因此算法将陷入这个稳定期。然而,真正的 Fisher 将期望值置于输出之上,即该方法将 边缘化。如果我们改变参数,这将允许该方法检测输出中的微小变化。这就是为什么自然梯度法比标准梯度法更能"逃离"稳定期的原因。

另一种策略是使用 的精确计算,但使用截断共轭梯度方法近似求解 ,其中每个共轭梯度步骤使用黑塞向量乘积的有效方法。这被称为无黑塞优化(Hessian free optimization)。然而,这种方法可能很慢,因为计算单个参数更新可能需要多次共轭梯度迭代。

指数族的自然梯度

我们假设 是以下形式的预期损失:

其中, 是一个具有矩参数 的指数族分布。这是变分优化和自然进化策略的基础。

结果表明,矩参数的梯度与自然梯度 相同。这遵循链式法则:

其中,,并使用式 (19) 记作:

因此:

仍然需要计算相对于矩参数的(规则)梯度。具体实现细节将取决于 的形式和 的形式。接下来,我们将讨论一些解决该问题的方法。

高斯分布情况下的解析计算

我们假设 。我们现在展示如何解析计算相关的梯度。

根据 2.4.2.5 节, 的自然参数为:

矩参数为:

为了简单起见,我们导出标量情况的结果。设 。通过使用链式法则,矩参数的梯度为:

仍然需要计算相对于 的导数。如果 ,则根据 Bonnet 定理,我们得到:

根据 Price 定理,我们得到:

其中,当 时,;否则,

在多变量情况下,结果如下所述:

因此,我们看到自然梯度依赖于损失函数 的梯度和黑塞矩阵。

一般情况下的随机近似

一般来说,很难采用解析方式计算自然梯度。然而,我们可以计算蒙特卡罗近似。为了理解这一点,我们假设 是以下形式的预期损失:

根据式 (21),自然梯度由下式给出:

对于指数族分布,上述公式右侧的两项都可以写成期望值,因此可以通过蒙特卡罗方法进行近似。为了理解这一点,请注意:

如果 是可重新参数化的,那么我们可以应用重新参数化技巧将梯度移动到期望算子内部。这样我们就从 中采样出 ,然后计算梯度并求平均值,之后可以将得到的随机梯度传递给随机梯度下降。

熵函数的自然梯度

我们将讨论如何计算指数族分布的熵的自然梯度,这在进行变分推理时很有用。自然梯度的计算公式为:

其中,根据式 (37),我们得到:

由于 ,因此:

其中, 是基础度量值。由于 的函数,我们有:

由于 ,我们有:

因此:

如果我们假设 ,也就是通常的情况,那么得到: