#Datawhale暑期夏令营第五期·李宏毅深度学习(进阶班)
#“Datawhale X 李宏毅苹果书 AI夏令营”
第三章 深度学习基础【笔记】
3.1 局部极小值与鞍点
局部极小值: 函数在某点附近达到最大或最小值
鞍点: 函数在某一方向上斜率为零,但不是局部极小值也不是局部最大值
3.1.1 临界点及其种类
3.1.2 判断临界值种类的方法
判断一个临界点是局部极小值还是鞍点,确实需要了解损失函数的形状。然而,由于网络复杂且损失函数通常非常复杂,我们无法完整地知道整个损失函数的样子。但是,对于给定的一组参数θ′,在θ′附近的损失函数L(θ)可以通过泰勒展开来近似表示:
泰勒级数近似(Tayler series appoximation)
其中,g是梯度,H是Hessian矩阵。
为了确定临界点的性质,我们需要计算并分析这些导数和Hessian矩阵。具体步骤如下:
-
计算梯度:首先,通过求导数得到梯度∇f(x),这将帮助我们找到可能的极值点或鞍点。
-
计算Hessian矩阵:接着,计算Hessian矩阵Hf,并找到所有满足∇f(xi) = 0的xi,这些xi即为临界点。
-
判断临界点性质:
- 如果Hessian矩阵的所有特征值都大于0,则该点是局部极小值。
- 如果Hessian矩阵的所有特征值都小于0,则该点是局部极大值。
- 如果Hessian矩阵有正负两个特征值,则该点是鞍点。
此外,还可以使用二阶导数测试来进一步确认:
3.1.3 逃离鞍点的方法
高维空间中的鞍点问题:在高维空间中,大部分驻点都是鞍点,而不是局部极小值。这使得基于梯度下降的优化方法很难从这些鞍点中逃离。
参考1:第七章:网络优化与正则化(Part1) - 图神经网络 - 博客园 (cnblogs.com)
参考2:【Deep Learning 】深度模型中的优化问题(四)之如何逃离(跳出)鞍点(Saddle Points)_如何逃离鞍点-CSDN博客
逃离鞍点的可能性:尽管高维空间中的鞍点数量多于局部极小值,但由于其在整个空间中的比例较小,因此在实际训练中,随机梯度下降引入的扰动和动量机制可以帮助损失函数逃离鞍点
参考3:局部最优与鞍点问题-CSDN博客
局部极小值与全局最优解的关系:对于足够大的神经网络,大多数局部极值具有较低的成本函数值,并且找到参数空间中具有较低但不是最小值的点并不重要。因此,即使某些点是局部极小值,也不一定意味着它们是全局最优解。
实验观察:经验上,通过实验发现,在高维参数空间中,虽然存在许多局部极小值和鞍点,但通过适当的优化技巧(如动量法)可以有效地避免陷入这些障碍
3.2 批量和动量
概念:
1.批量(batch):实际上在计算梯度的时候,并不是对所有数据的损失 L 计算梯度,而是把所有的数据分成一个一个的批量(batch)
2.回合(epoch):遍历所有批量的过程称为一个回合(epoch)
3.2.1 批量大小对梯度下降法的影响
概念:
1.批量梯度下降法(Batch Gradient Descent, BGD):没有用批量, 批量大小为训练数据的大小,这种使用全批量(full batch)的数据来更新参数的方 法即批量梯度下降法(Batch Gradient Descent, BGD)
2.随机梯度下降法(Stochastic Gradient Descent, SGD):批量大小等于 1,此时使用的方法即随机梯度下降法(Stochastic Gradient Descent, SGD) ,也称为增量梯度下降法。
3.2.2 动量法
概念:
动量法(momentum method)是另外一个可以对抗鞍点或局部最小值的方法。
一般的梯度下降(vanilla gradient descent)
参考学习:11.6. 动量法 — 动手学深度学习 2.0.0 documentation (d2l.ai)
动量法的一个显著优点是它可以防止在随机梯度下降过程中因梯度方向频繁变化而导致的停滞问题。即使当前梯度指向一个不利方向,由于动量的存在,优化过程仍可能继续沿着前一步的方向移动,从而有可能跳出局部最小值,找到更好的局部最小值或全局最小值
习题:
选择题:
1、在机器学习中,以下哪种任务最适合使用回归方法解决?
A. 预测房屋的未来价格
B. 检测一封邮件是否为垃圾邮件
C. 下围棋时选择下一步落子的最佳位置
D. 识别图片中的物体类别
解析:
回归方法主要用于预测连续值输出的问题。
A. 预测房屋的未来价格:房屋的价格是一个连续的值,因此适合使用回归方法。
B. 检测一封邮件是否为垃圾邮件:这是一个分类问题,适合使用分类算法,而不是回归方法。
C. 下围棋时选择下一步落子的最佳位置:这个问题的输出是一个具体的落子位置,而不是一个连续的值,因此不适合使用回归方法。
D. 识别图片中的物体类别:这同样是一个分类问题,不适合使用回归方法。
所以,答案是:A。
简答题:
1、在深度学习中,批量梯度下降法(Batch Gradient Descent)和随机梯度下降法(Stochastic Gradient Descent, SGD)有什么区别?
批量梯度下降法(Batch Gradient Descent)和随机梯度下降法(Stochastic Gradient Descent, SGD)是深度学习中常用的两种优化算法,它们在更新模型参数时有所不同,下面是它们之间的主要区别:
(1)批量梯度下降法(Batch Gradient Descent, BGD):
在批量梯度下降法中,我们使用训练集中的所有样本来计算梯度并更新参数。
具体地,对于一个包含m个训练样本的数据集,我们首先计算损失函数J在所有样本上的平均值:
J = (1 / m) * Σ [J ( i ; θ ) ]
其中,J(i; θ) 是 第 i 个训练样本的损失函数, θ 是模型参数。
- 然后,我们基于这个平均损失函数的梯度来更新参数:
θ = θ - α * (1/m) * Σ[∇J(i; θ)]
其中,α是学习率,∇J(i; θ)是第i个训练样本的损失函数的梯度。
优点:批量梯度下降法在每次更新时都考虑了所有样本,因此它通常能够找到损失函数的最小值(至少是局部最小值)。
缺点:当训练集很大时,计算所有样本的梯度并更新参数需要很长时间,这使得批量梯度下降法在处理大规模数据集时效率低下。
(2)随机梯度下降法(Stochastic Gradient Descent, SGD):
在随机梯度下降法中,每次只使用一个训练样本来计算梯度并更新参数。
- 具体地,从训练集中随机选择一个样本i,然后基于这个样本的损失函数的梯度来更新参数:
θ = θ - α * ∇J (i; θ)
优点:由于每次更新只使用一个样本,随机梯度下降法在处理大规模数据集时非常高效。
缺点:由于每次更新只基于一个样本,随机梯度下降法的更新可能非常不稳定,损失函数的值可能会波动很大。
总结来说,批量梯度下降法和随机梯度下降法在深度学习中的主要区别在于它们更新参数时所使用的样本数量不同。批量梯度下降法使用所有样本,而随机梯度下降法只使用一个随机样本。这使得批量梯度下降法在处理大规模数据集时效率低下,但通常能够找到损失函数的最小值;而随机梯度下降法在处理大规模数据集时非常高效,但更新可能非常不稳定。