我在一篇文章中读到,归一化有助于梯度下降在机器学习中更快地收敛。但我不明白为什么会这样。
任何想法?
我在一篇文章中读到,归一化有助于梯度下降在机器学习中更快地收敛。但我不明白为什么会这样。
任何想法?
即使函数是强凸函数甚至是二次函数,最速下降法也可以采取偏离最优值剧烈振荡的步骤。
考虑。这是凸的,因为它是具有正系数的二次方。通过检查,我们可以看到它在处具有全局最小值。它有梯度
的学习率,初始猜测我们有梯度更新
它展示了这种向最小值方向疯狂摆动的进展。
由于函数在方向上比在方向上陡峭得多,因此每一步都在剧烈振荡。由于这个事实,我们可以推断出梯度并不总是,甚至通常都指向最小值。当 Hessian的特征值在不同的尺度上时,这是梯度下降的一般性质。在对应特征值最小的特征向量对应的方向上进展缓慢,在特征值最大的方向上进展最快。正是这个属性与学习率的选择相结合,决定了梯度下降的进展速度。
达到最小值的直接路径将是“对角线”移动,而不是以这种由垂直振荡强烈支配的方式移动。然而,梯度下降只有关于局部陡度的信息,所以它“不知道”该策略会更有效,并且它受制于 Hessian 的变幻莫测,具有不同尺度的特征值。
重新缩放输入数据会将 Hessian 矩阵更改为球形。反过来,这意味着最陡的下降可以更直接地向最小值移动,而不是急剧振荡。
如果您使用 sigmoidal(logistic、tanh、softmax 等)激活,那么对于超过一定大小的输入,这些激活具有平坦的梯度。这意味着如果网络输入和初始权重的乘积太小,单元将立即饱和并且梯度很小。将输入缩放到合理的范围并为初始权重使用较小的值可以改善这种情况并允许学习更快地进行。
一种常见的方法是将数据缩放为具有 0 均值和单位方差。但是还有其他方法,例如最小-最大缩放(对于 MNIST 等任务非常常见),或计算 Winsorized 均值和标准差(如果您的数据包含非常大的异常值,这可能会更好)。缩放方法的特定选择通常并不重要,只要它提供预处理并防止单元过早饱和。
在“批量标准化:通过减少内部协变量偏移来加速深度网络训练”中,Sergey Ioffe 和 Christian Szegedy 写道
众所周知(LeCun et al., 1998b; Wiesler & Ney, 2011)如果输入被白化,网络训练收敛速度更快——即线性变换为具有零均值和单位方差,并且去相关。
因此,除了应用零均值和单位方差之外,如果您对输入进行去相关处理,您可能还会发现网络会获得更好的结果。
引用之后提供了更多的描述和上下文。
LeCun, Y., Bottou, L., Orr, G. 和 Muller, K.“高效反向传播”。在 Orr, G. 和 K., Muller (eds.), Neural Networks: Tricks of the trade中。施普林格,1998b。
威斯勒,西蒙和内伊,赫尔曼。“对数线性训练的收敛性分析。 ”在 Shawe-Taylor, J., Zemel, RS, Bartlett, P., Pereira, FCN, and Weinberger, KQ (eds.), Advances in Neural Information Processing Systems 24, pp . 657–665,西班牙格拉纳达,2011 年 12 月
这个答案借用了 Martin T. Hagan、Howard B. Demuth、Mark Hudson Beale、Orlando De Jesús 的Neural Networks Design(第 2 版)第 9 章中的这个例子和图。
梯度下降将您推向最陡峭的方向。如果尺寸之间存在比例差异,您的水平曲线通常看起来像椭圆。如果它们是围绕局部最优的圆形,则梯度将指向中心,这就是局部最优;但是,由于它们是椭圆形的,因此梯度指向最陡峭的方向,如果您考虑非常长的椭圆拐角处的点,则可能会非常偏离。为了看到最陡峭的方向,只需画一个椭圆,在边界上选取一些点,画出垂直于边界的线。您会看到这些方向可能与指向中心的矢量无关。