Hinton Neural Networks课程笔记3b:线性神经元的误差曲面
引入了误差曲面(error surface)的概念;然后利用误差曲面,分析了简单梯度下降学习算法的一种不适用情况:未归一化。
误差曲面(error surface)
回忆学习感知机过程中应用的权重空间工具,误差曲面坐落的空间与权重空间很类似。误差(error/loss)函数在数据集确定的情况下可以看做是权重的函数,在权重空间的基础上加入误差维度,然后所有<权重,误差>点组成的曲面即为误差曲面。通常情况下,示意图中纵坐标用于指示误差,而横坐标表示权重。如下图所示,上面的是权重为1维的情况下的误差曲面(实际为一个二次曲线),下面为权重为2维的情况下的误差曲面(使用等高线表示,为一个个同心椭圆):
简单梯度下降算法的误差曲面相关解释
回忆上节提及的线性神经元+误差平方和使用的简单梯度下降算法,这里给出了利用误差曲面的解释。分为全数据集梯度下降和在线梯度下降(online/在线)两种:
左面的为全数据集计算梯度的简单梯度下降算法,而右面的为每次只使用一个数据点计算梯度的在线梯度下降(Online)算法。先看全数据集的情况:因为是全数据集,所以每次计算的梯度即为误差曲面的斜率,方向与椭圆的边缘垂直,所以如果步长设置合理,每次都使得权重向椭圆中心(全局最小点)移动,最终收敛于椭圆中心附近。对于每次只使用一个数据点的情况:实际上权重是向某一个超平面移动(因为每次只有一个数据点,所以最小化此数据点计算的误差,即为使得权重最小化
简单梯度下降速度很慢的一种情况
如上图所示,当椭圆很扁的时候,梯度的方向几乎和前往椭圆中心的方向垂直(从而每次大部分都在做无用功,不断抖动,难以收敛)。(笔者注:这种情况通常发生在输入没有做归一化的情况,每一维的输入尺度不一样,却使用同一个学习率,从而导致很大的抖动,难于收敛。)