文章目录
Datawhale X 李宏毅苹果书 AI夏令营《深度学习详解》
Datawhale 学习手册:https://linklearner.com/activity/16/15/43
学习链接:https://github.com/datawhalechina/leedl-tutorial
PDF下载:
地址:https://github.com/datawhalechina/leedl-tutorial/releases
链接: https://pan.baidu.com/s/1ZKuXfkXHoyyvPR1-CP-Ffw 提取码: 2t6m
学习视频:
3.1 局部极小值与鞍点
3.1.1 临界点及其种类
概述与背景知识
在深度学习中,我们使用各种优化算法(如梯度下降)来调整神经网络的参数,目的是最小化损失函数。然而,在训练过程中,可能会出现训练停滞的情况,即使参数继续更新,损失也不会进一步降低。这种情况可能是由于优化算法收敛到了一个临界点,临界点包括局部极小值和鞍点。
主要概念
- 梯度下降:一种常用的优化算法,通过沿着损失函数梯度的负方向更新参数以寻找最小值。
- 局部极小值:损失函数在其邻域内达到最小值的点,梯度为零。
- 鞍点:梯度为零但既非局部极小值也非局部极大值的点,类似于马鞍的形状。
详细内容
在训练过程中,随着参数的更新,训练损失不再下降。这可能是由于参数已经收敛到了临界点,梯度下降算法无法继续更新参数。临界点可以是局部极小值或鞍点。
- 局部极小值:在该点,损失函数达到局部最小值,梯度为零。在局部极小值点的邻域内,损失函数的值比该点高。
- 鞍点:在该点,梯度为零,但在某些方向上损失函数的值可能低于该点,在其他方向上则高于该点。鞍点的梯度为零,但不是局部极小值。
重点知识
- 梯度为零:梯度为零意味着损失函数在该点的斜率为零,即没有变化。
- 临界点:梯度为零的点被称为临界点,包括局部极小值和鞍点。
- 局部极小值与鞍点的区别:局部极小值在邻域内是最小值点,而鞍点在某些方向上是凹的,在其他方向上则是凸的。
实例
考虑一个简单的神经网络,包含两个权重 w 1 w_1 w1和 w 2 w_2 w2。如果存在一个点 ( w 1 ∗ , w 2 ∗ ) (w_1^*, w_2^*) (w1∗,w2∗),在这个点上损失函数的梯度为零,即 ∂ L ∂ w 1 = 0 \frac{\partial L}{\partial w_1} = 0 ∂w1∂L=0且 ∂ L ∂ w 2 = 0 \frac{\partial L}{\partial w_2} = 0 ∂w2∂L=0,那么该点就是一个临界点。如果这个点是局部极小值,则在该点附近损失函数的值会增加;如果是鞍点,则损失函数在某些方向上会减少,在其他方向上会增加。
内容总结
- 临界点是梯度为零的点,可以是局部极小值或鞍点。
- 局部极小值是损失函数达到局部最小值的点。
- 鞍点是梯度为零但不是局部极小值的点。
延伸学习
- 探索不同的优化算法如何处理局部极小值和鞍点。
- 学习如何通过可视化技术直观地理解损失函数的形状。
参考资料
3.1.2 判断临界值种类的方法
概述与背景知识
为了确定一个临界点是局部极小值还是鞍点,我们需要了解损失函数在该点周围的形状。这可以通过分析损失函数在该点的一次和二次导数来实现。
主要概念
- 泰勒级数近似:一种利用多项式来近似函数的方法。
- 梯度:损失函数在某一点的一次导数。
- 海森矩阵:损失函数在某一点的二次导数构成的矩阵。
详细内容
对于给定的一组参数 θ ′ \theta' θ′,损失函数 L ( θ ) L(\theta) L(θ) 在 θ ′ \theta' θ′ 附近的近似形式为:
L ( θ ) ≈ L ( θ ′ ) + ( θ − θ ′ ) ⊤ g + 1 2 ( θ − θ ′ ) ⊤ H ( θ − θ ′ ) L(\theta) \approx L(\theta') + (\theta - \theta')^\top g + \frac{1}{2}(\theta - \theta')^\top H (\theta - \theta') L(θ)≈L(θ′)+(θ−θ′)⊤g+21(θ−θ′)⊤H(θ−θ′)
其中:
- ( g )是梯度向量,由损失函数在 θ ′ \theta' θ′的一次导数组成。
- ( H )是海森矩阵,由损失函数在 θ ′ \theta' θ′的二次导数组成。
重点知识
- 泰勒级数近似:用于近似损失函数。
- 梯度:损失函数的一次导数。
- 海森矩阵:损失函数的二次导数矩阵。
实例
假设我们有一个简单的神经网络,包含两个权重
w
1
w_1
w1和
w
2
w_2
w2,损失函数为:
L
(
w
1
,
w
2
)
=
(
1
−
w
1
w
2
)
2
L(w_1, w_2) = (1 - w_1w_2)^2
L(w1,w2)=(1−w1w2)2
在原点
(
0
,
0
)
(0, 0)
(0,0),损失函数的梯度为零,即
∇
L
(
0
,
0
)
=
[
0
,
0
]
⊤
\nabla L(0, 0) = [0, 0]^\top
∇L(0,0)=[0,0]⊤。为了判断这一点是否为局部极小值或鞍点,我们需要计算海森矩阵:
H
=
[
∂
2
L
∂
w
1
2
∂
2
L
∂
w
1
∂
w
2
∂
2
L
∂
w
2
∂
w
1
∂
2
L
∂
w
2
2
]
=
[
0
−
2
−
2
0
]
H = \begin{bmatrix} \frac{\partial^2 L}{\partial w_1^2} & \frac{\partial^2 L}{\partial w_1 \partial w_2} \\ \frac{\partial^2 L}{\partial w_2 \partial w_1} & \frac{\partial^2 L}{\partial w_2^2} \end{bmatrix} = \begin{bmatrix} 0 & -2 \\ -2 & 0 \end{bmatrix}
H=[∂w12∂2L∂w2∂w1∂2L∂w1∂w2∂2L∂w22∂2L]=[0−2−20]
海森矩阵的特征值为2和-2,因此原点是鞍点。
内容总结
- 利用泰勒级数近似可以近似损失函数。
- 海森矩阵的特征值可以用来判断临界点的类型。
- 如果海森矩阵的所有特征值都是正的,则临界点是局部极小值;如果所有特征值都是负的,则是局部极大值;如果有正有负,则是鞍点。
延伸学习
- 学习如何计算海森矩阵并分析其特征值。
- 探究不同优化策略对逃离鞍点的影响。
参考资料
- Taylor Series Approximation
- Hessian Matrix
- Eigenvalues and Eigenvectors
- Saddle Point in Optimization
- Optimization Algorithms for Neural Networks
3.2 批量和动量
3.2.1 批量大小对梯度下降法的影响
概述与背景知识
在深度学习中,梯度下降法是一种常用的优化算法,用于最小化损失函数,从而改善模型的预测性能。由于数据集通常较大,直接使用所有数据来计算梯度并不实际,因此引入了批量的概念。
主要概念
- 批量梯度下降法(BGD): 使用所有训练数据计算梯度。
- 随机梯度下降法(SGD): 每次仅使用一个样本计算梯度。
- 小批量梯度下降法(Mini-batch GD): 在 BGD 和 SGD 之间的一种折中方法,每次使用一个小批量的数据来计算梯度。
详细内容
- 批量梯度下降法: 该方法在每轮更新时都需要遍历整个训练集来计算梯度,因此计算成本较高,但梯度更加精确,更新更稳定。
- 随机梯度下降法: 每次更新只基于一个样本,虽然计算速度快,但由于梯度中包含较大的噪声,更新路径较为波动。
- 小批量梯度下降法: 结合了两者的优点,既保持了一定的稳定性,又能利用并行计算加速训练过程。
重点知识
- 批量大小的影响:
- 较小的批量使得梯度更具有随机性,有助于模型跳出局部最优解。
- 较大的批量可以更快地完成一轮训练,但在某些情况下可能导致泛化性能较差。
实例
- 实验结果:
- 在 MNIST 和 CIFAR-10 数据集上,随着批量大小的增加,模型的验证集准确率降低。
- 即使训练准确率保持不变,测试准确率也会随着批量大小的增加而下降。
内容总结
批量梯度下降法虽然提供了更准确的梯度,但计算成本高且可能陷入局部最优;而随机梯度下降法虽然计算成本低,但梯度的噪声较大。小批量梯度下降法则是一种平衡的选择,既减少了计算负担,又通过引入适量的噪声帮助模型更好地泛化。
延伸学习
- 批量大小与泛化的联系:
- 论文 “On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima” 中探讨了大批量训练可能导致的泛化性能下降问题。
- 对于“好”和“坏”的局部最小值,前者位于较平坦的区域,有利于泛化;后者位于陡峭的区域,泛化性能较差。
参考资料
- “On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima”
3.2.2 动量法
概述与背景知识
动量法是一种改进梯度下降法的技术,它模拟了物理学中的动量概念,通过在梯度更新中加入历史梯度信息,提高训练过程的稳定性及效率。
主要概念
- 动量法:
- 通过累积过去的梯度方向来加速收敛。
- 类似于物理中物体滚动时的惯性效应。
详细内容
- 动量法的数学表示:
m t = β m t − 1 + η ∇ f ( θ t − 1 ) θ t = θ t − 1 − m t \begin{aligned} m_t &= \beta m_{t-1} + \eta \nabla f(\theta_{t-1}) \\ \theta_t &= \theta_{t-1} - m_t \end{aligned} mtθt=βmt−1+η∇f(θt−1)=θt−1−mt
其中, β \beta β 是动量系数, η \eta η 是学习率, ∇ f ( θ t − 1 ) \nabla f(\theta_{t-1}) ∇f(θt−1) 是在 θ t − 1 \theta_{t-1} θt−1 处的梯度。
重点知识
- 动量法的作用:
- 减少在梯度方向上的振荡,有助于更快地收敛。
- 有助于克服鞍点或局部最小值。
实例
- 物理世界的类比:
- 将参数想象成在误差表面上滚动的小球,动量法模拟了小球滚动时的惯性效应。
内容总结
动量法通过在梯度更新中加入过去梯度的加权平均,使得训练过程更加平滑,同时也能更有效地穿越误差表面的不平坦区域。这种方法有助于加速收敛过程,并且能更好地处理鞍点问题。
延伸学习
- 其他动量相关的优化器:
- Nesterov 加速梯度(NAG): 改进了动量法,通过提前预估下一个位置来调整动量方向。
- Adam 优化器: 结合了动量法和 RMSProp 的优点,是目前常用的一种优化器。
参考资料
- “Efficient Backprop” by Yann LeCun, Léon Bottou, Genevieve B. Orr, Klaus-Robert Müller
- “Adam: A Method for Stochastic Optimization” by Diederik P. Kingma, Jimmy Ba
- “On the Importance of Initialization and Momentum in Deep Learning” by Ilya Sutskever, James Martens, George Dahl, Geoffrey Hinton
- “RMSProp and Its Family” by Tieleman, Tijmen and Hinton, Geoffrey
- “Momentum and Its Variants” by Li et al.
- “Nesterov’s Accelerated Gradient and Momentum as approximations to Regularised Update Descent” by Ioffe, Sergey
- “Understanding Nesterov Momentum Through a Modified Loss Function” by Sutskever, Ilya and Martens, James and Dahl, George and Hinton, Geoffrey
- “A Review of Momentum and Its Applications in Deep Learning” by Zhang, Xiaojun and Wang, Xuejun and Liu, Zhiyong and Zhao, Xiaohui
- “Gradient Descent with Momentum” by Goodfellow, Ian and Bengio, Yoshua and Courville, Aaron
- “Momentum and the Acceleration of Stochastic Gradient Descent” by Sutskever, Ilya and Martens, James and Dahl, George and Hinton, Geoffrey