本次第五期夏令营的主题是李宏毅教授的课程《深度学习》的文字详解版
本次学习将重点探讨深度学习中的局部最小值与鞍点,以及批量和动量的作用。
1. 局部最小值与鞍点
在深度学习中,我们通常需要最小化一个损失函数(Loss Function),以便模型能够准确预测。损失函数是一个高度复杂的、多维的非凸函数,这意味着它可能包含多个局部最小值和鞍点。
1.1 局部最小值
局部最小值是指在某个小范围内,函数值小于其邻近点的值。在深度学习中,局部最小值问题是一个常见的挑战,因为如果优化算法陷入局部最小值,模型可能无法达到最佳性能。
1.2 鞍点
鞍点是指在某个点上,函数在某些方向上是最小值,而在其他方向上是最大值。对于深度学习中的高维损失函数,鞍点比局部最小值更为常见。鞍点可以导致梯度下降算法停滞,因为梯度在这些点附近趋于零,使得优化过程变得缓慢或难以进行。
1.3 局部最小值与鞍点的区别与影响
局部最小值: 会使模型性能达到一个次优状态,影响模型的整体表现。
鞍点: 由于梯度趋于零,优化算法可能停滞不前,但因其并非真正的极小值,它较容易通过随机扰动或动量方法突破。
2. 批量与动量
为了应对局部最小值和鞍点问题,并加速深度学习模型的训练过程,研究人员提出了多种优化策略,其中批量(Batch)和动量(Momentum)是两个重要的技术。
2.1 批量梯度下降
批量梯度下降(Batch Gradient Descent)是深度学习中的一种常见优化算法。根据使用的样本数量,批量梯度下降又可以分为全量梯度下降、迷你批量梯度下降和随机梯度下降。
全量梯度下降: 每次更新参数时使用整个训练集的所有样本。这种方法计算精度高,但计算开销大且速度慢。
随机梯度下降(SGD): 每次更新参数时只使用一个样本。虽然速度快,但波动较大,容易受到噪声的影响。
迷你批量梯度下降(Mini-batch Gradient Descent): 每次更新参数时使用一个小批量的样本。它兼具全量梯度下降和随机梯度下降的优点,既能提高计算效率,又能减少随机波动。
2.2 动量
动量(Momentum)是一种加速梯度下降的技术,它通过引入动量项来平滑梯度更新,克服梯度下降过程中的振荡问题,从而更快地收敛到最优解。具体来说,动量方法通过在更新时加入之前更新方向的加权平均值,来保持参数更新的方向性。
动量算法的更新公式如下:
v_t = \beta v_{t-1} + (1 - \beta) \nabla L(\theta_t)vt=βvt−1+(1−β)∇L(θt)
\theta_{t+1} = \theta_t - \alpha v_tθt+1=θt−αvt
其中,v_tvt 是动量项,\betaβ 是动量系数,通常取值在0.9左右,\nabla L(\theta_t)∇L(θt) 是损失函数的梯度,\alphaα 是学习率。
2.3 批量与动量的结合
结合批量和动量的优化方法被广泛应用于深度学习。迷你批量梯度下降与动量的结合可以在一定程度上解决局部最小值和鞍点问题:
克服鞍点: 迷你批量梯度下降可以通过小批量样本的随机性,使优化过程具有一定的随机扰动,从而更容易跳出鞍点。
加速收敛: 动量方法可以通过平滑梯度更新,使参数更新方向更加稳定,从而加速收敛。
减小波动: 迷你批量梯度下降结合动量方法,可以有效减小梯度更新过程中的波动,提升训练过程的稳定性和效率。