Task1是关于深度神经网络的优化中的常见概念及方法的介绍。
1. 临界点、局部极小值、鞍点的概念
- 临界点:所有梯度为零的点都被称为临界点。临界点可以是局部极小值、局部极大值或鞍点。
- 使用泰勒级数近似来近似损失函数的形状,从而判断临界点的类型。
- 海森矩阵(Hessian matrix)及其特征值用于判断:
- 若海森矩阵的所有特征值均为正,临界点为局部极小值。
- 若所有特征值均为负,临界点为局部极大值。
- 若特征值有正有负,临界点为鞍点。
- 局部极小值:是损失函数在某个点的值是周围点的最小值。梯度在这个点为零,意味着在这个点附近,损失无法进一步降低。
- 鞍点:也是梯度为零的点,但不同于局部极小值,鞍点在某些方向上可能会更低,但在其他方向上可能更高。它的形状类似马鞍。
- 在鞍点处,虽然梯度为零,但可以利用海森矩阵的负特征值对应的特征向量来指引参数更新的方向,从而使得损失函数继续下降。
- 实际上,由于计算海森矩阵和其特征值的计算量很大,几乎没人使用这种方法,通常有更高效的替代方法来逃离鞍点。
- 经验之谈
- 实际训练中,遇到鞍点的概率远高于遇到局部极小值,因为在高维空间中,局部极小值很少,而鞍点更为常见。
- 由于高维误差表面的复杂性,多数情况下网络训练中遇到的梯度很小的点往往只是鞍点,而非局部极小值。
- 在低维空间中看似局部极小值的点,在高维空间中可能只是鞍点。这是因为随着维度的增加,参数空间的复杂性也增加,从而提供了更多逃离鞍点的可能性。
2. 批量(Batch)
- 批量是将训练数据分为多个小组,每个小组称为一个批量。每次模型参数更新时,仅使用一个批量的数据计算损失和梯度。
- 批量大小(Batch Size):这是每个批量中包含的数据量。不同的批量大小对模型训练的速度和效果有不同的影响。
- 批量大小对训练的影响:
- 计算效率:较大的批量可以更好地利用并行计算资源,提高训练效率;但如果批量过大,计算时间仍会增加。
- 梯度的稳定性:大的批量更新更稳定,但可能容易陷入局部最小值;小的批量更新方向带有噪声,有助于跳出局部最小值。
3. 梯度下降法的类型
- 批量梯度下降法(Batch Gradient Descent, BGD):使用整个训练数据集来计算梯度和更新参数,更新稳定但速度较慢。
- 随机梯度下降法(Stochastic Gradient Descent, SGD):每次使用一个数据点来计算梯度和更新参数,更新速度快但方向不稳定,容易受噪声影响。
- 小批量梯度下降法(Mini-batch Gradient Descent):结合了上述两种方法,使用较小的批量进行更新,兼具两者的优点。
4. 动量法(Momentum)
- 动量法是一种优化算法,在每次参数更新时,不仅考虑当前梯度方向,还考虑前一步的更新方向。
- 物理意义:类似于现实中的惯性,动量可以帮助模型在鞍点或局部最小值处继续向前,避免陷入困境。
- 公式:动量更新公式将之前的梯度加权累加,从而使更新方向更具连贯性和稳定性。
5. 优化的实验经验
- 实验结果显示,小批量在测试阶段往往表现更好,可能与其更新过程中的随机性有关。
- 具体应用中需要根据情况调整批量大小和动量参数,以优化训练效果和速度