【Datawhale X 李宏毅苹果书 AI夏令营】Task01 局部极小值与鞍点/批量和动量

103 阅读3分钟

局部极小值与鞍点

Note: 文中内容均为参考苹果书的产出

来源

优化过程中发现损失不再随着参数的更新下降,但是损失仍未达到需求,或有时候模型一开始就训练不起来,不管我们怎么更新参数,损失都降不下去

临界点

当梯度下降到临界点时,除了遇到局部极小值、局部极大值,还有可能遇到了鞍点,这些梯度为零的点都为临界点

临界点种类的判断

如何判断遇到临界值的种类呢?

  1. 原文中损失函数可推导为近似:

image.png 可以根据

image.png

来判断θ'附近的误差表面,并由此来判断临界值的类型

  1. 海森矩阵 计算特征向量去找方向逃离鞍点

批量(Batch)和动量(Momentum)

批量大小对梯度下降法的影响

  • 全批量更新参数时->批量梯度下降法
    • 需全量跑完才能更新一次参数
  • 批量大小=1时->随机梯度下降法
    • 更多的噪声
    • 随机梯度下降的梯度上引入了随机噪声,因此在非凸优化问题中,其相比批量梯度下降更容易逃离局部最小值
  • 因为 GPU 有并行运算,所以1000笔数据所花的时间并不是一笔数据的1000倍,因此实际上,在有考虑并行计算的时候,大的批量大小反而是较有效率的,一个回合大的批量花的时间反而是比较的。
  • 大的批量更新比较稳定,小的批量的梯度的方向是比较有噪声的(noisy)。但实际上有噪声的的梯度反而可以帮助训练,小批量梯度下降法因为每次计算的梯度不一样,批量多所以梯度更新频繁,有助于逃离局部最小值和鞍点
  • 大小批量的训练集准确度差不多,但是大批量的更容易过拟合
    • 训练与测试集的损失函数不一样,损失函数一变,计算出的损失就变得很大,而小批量训练有很多的损失,更新方向更随机,更容易跳出“峡谷”,走到宽“盆地”,这种有噪声的更新方向反而在优化的时候有优势,而且在测试的时候也会有优势。所以大的批量跟小的批量各有优缺点,批量大小是需要去调整的超参数。

动量法

  • 假设误差表面就是真正的斜坡,参数是一个球,把球从斜坡上滚下来,如果使用梯度下降,球走到局部最小值或鞍点就停住了。 但是在物理的世界里,一个球如果从高处滚下来,就算滚到鞍点或鞍点,因为惯性的关系它还是会继续往前走。如果球的动量足够大,其甚至翻过小坡继续往前走。 因此在物理的世界里面,一个球从高处滚下来的时候,它并不一定会被鞍点或局部最小值卡住,如果将其应用到梯度下降中,这就是动量。
  • 引入动量后,梯度计算每次在移动参数的时候,不是只往梯度的反方向来移动参数,而是根据梯度的反方向加上前一步移动的方向决定移动方向。