理解自然梯度之前,我们必须理解传统梯度下降。
假设我们有一个神经网络,然后调整这个网络的参数,最后网络的输出在某种程度上发生了变化。在大多数情况下,我们会有一个损失函数来衡量和指导网络的输出应该如何变化。利用反向传播,我们计算每个网络参数对损失函数的导数,利用这些导数我们可以更新网络参数目的是让损失函数变得最小,我们称这些导数为梯度。
衡量损失函数变小或变大的指标是距离。我们如何定义距离呢?在传统梯度下降法中,距离是指参数空间中的欧氏距离。然而,根据调整参数的多少来定义“距离”并不总是正确的。为了形象化,我们来看两对高斯分布:

两个分布中,均值都从-1变化到1,距离都是2。然而,很明显,第一个分布的变化比第二个大得多。
自然梯度的作用是重新定义我们更新参数的“距离”指标。实际上,并非所有参数都相等,与其平等地对待每个参数的变化,我们需要根据每个参数的变化对网络的输出分布的影响程度来调整它。
在传统梯度下降中,参数更新方向由损失函数的梯度决定,但未考虑参数空间的几何特性。在自然梯度中引入了Fisher信息矩阵,它衡量了概率分布对参数变化的敏感度,用于描述参数空间的曲率。自然梯度通过Fisher信息矩阵调整梯度方向,使其在概率分布的几何空间中更合理。
第一步:计算传统梯度。计算损失函数对参数的梯度。
第二步:计算Fisher信息矩阵。根据当前参数估计Fisher信息矩阵。
第三步:调整梯度方向。用Fisher信息矩阵的逆矩阵乘以传统梯度,得到自然梯度。
第四步:参数更新。按自然梯度方向更新参数。
$$\tilde{\nabla} L(\theta) = F^{-1}(\theta) \nabla L(\theta)$$
$\tilde{\nabla} L(\theta)$是自然梯度
$F(\theta) \nabla$是Fisher信息矩阵
$L(\theta)$是传统梯度
(1)更快的收敛。考虑参数空间的几何特性,通常收敛更快。
(2)更好的优化性能。在高维或复杂模型中表现更优。