3.1 局部极小值与鞍点 key point 随记
- 局部极小值(Local Minimum):
- 在损失函数的曲面上,局部极小值是指在该点周围损失值比周围所有点都小的点。
- 梯度为零,即在该点对损失函数求导的结果为零。
- 鞍点(Saddle Point):
- 鞍点是梯度为零但不是局部极小值或局部极大值的点。
- 在鞍点处,损失函数可能在一个方向上是下降的而在另一个方向上是上升的,形状类似于马鞍。
- 临界点(Critical Point):
- 临界点是梯度为零的点,包括局部极小值、局部极大值和鞍点。
- 泰勒级数近似(Taylor Series Approximation):
- 用于近似表示损失函数在某个点附近的行为,公式为:
[ L(\theta) \approx L(\theta') + (\theta - \theta')^T g + \frac{1}{2} (\theta - \theta')^T H (\theta - \theta') ] - 其中 ( g ) 是梯度向量,( H ) 是海森矩阵(Hessian matrix),包含了损失函数的二次微分。
- 海森矩阵(Hessian Matrix):
- 一个对称矩阵,包含了损失函数的二次微分信息。
- 海森矩阵的特征值和特征向量可以用来判断临界点的类型。
- 判断临界点类型的方法:
- 如果海森矩阵的所有特征值都是正的,则临界点是局部极小值。
- 如果所有特征值都是负的,则临界点是局部极大值。
- 如果特征值有正有负,则临界点是鞍点。
- 逃离鞍点的方法:
- 尽管理论上可以通过计算海森矩阵的特征向量来逃离鞍点,但由于计算量大,通常不采用这种方法。
- 实际中,使用其他优化算法,如动量方法(Momentum)、RMSprop 或 Adam 等,这些方法可以更有效地逃离鞍点。
- 实际中的观察:
- 实验表明,在高维参数空间中,局部极小值可能不如鞍点常见。
- 训练过程中,经常遇到的是鞍点,而不是局部极小值。
- 误差表面(Error Surface):
- 神经网络的损失函数在参数空间中形成的曲面,可以有多种形状,包括局部极小值和鞍点。
-
维度的影响:
- 在低维空间中看似封闭的局部极小值,在更高维空间中可能只是鞍点,因此在高维参数空间中可能存在更多逃离鞍点的路径。
3.2 批量与动量
批量(Batch Size):
- 定义:批量是在每次参数更新时使用的样本数量。
- 批量梯度下降(Batch Gradient Descent, BGD):
- 使用所有训练数据计算损失和梯度。
- 更新稳定但计算量大。
- 随机梯度下降(Stochastic Gradient Descent, SGD):
- 每次更新只使用一个样本。
- 更新方向有噪声,但有助于逃离局部最小值。
- 小批量梯度下降(Mini-batch Gradient Descent):
- 介于BGD和SGD之间,使用固定大小的样本子集计算梯度。
- 结合了BGD的稳定性和SGD的噪声优势。
- 并行计算:
- 大批量可以在并行计算硬件上高效执行,减少单个epoch的时间。
- 泛化能力:
- 小批量通常在测试时表现更好,可能因为它们有助于模型跳出“峡谷”中的局部最小值,而大批量可能导致过拟合。
动量法(Momentum Method):
- 定义:动量法通过在参数更新中加入之前更新的加权平均来模拟物理中的惯性。
- 动量项:
- 动量项 ( m ) 是之前所有梯度的加权和。
- 公式表示为:( m_t = \lambda m_{t-1} - \eta g_t ),其中 ( \lambda ) 是动量参数,( \eta ) 是学习率,( g_t ) 是当前梯度。
- 更新规则:
- 参数更新不仅依赖当前梯度,还依赖之前的方向,有助于模型在面对噪声时保持方向一致性。
- 优点:
- 有助于模型更快收敛。
- 减少在误差表面的“震荡”现象。
- 有助于逃离局部最小值和鞍点。
- 物理类比:
- 类似于球体在斜坡上的运动,即使遇到鞍点,由于动量的存在,球体可能继续向前滚动。
自适应学习率:
- 问题识别:
- 当训练过程中损失停止下降时,并不一定意味着梯度为零,而可能是梯度太小,导致更新不显著。
- 解决方案:
- 自适应学习率方法可以根据训练进度自动调整学习率,以解决损失停滞不下降的问题。