计算机视觉教程核心版(三)优化下篇

本节承接优化中篇

在前面的章节中我们已经介绍了最简单的优化方法,随机梯度下降法。如下代码和图示例

计算机视觉教程核心版(三)优化下篇

左边代码中仅仅需要两行代码就可以实现SGD优化方法。右边的图展示了含有两个参数的损失函数等高线的图,不同颜色代表不同的损失函数,中间红色表示最小梯度。

SGD问题

  1. SGD的问题在一个方向很敏感(下降较快)在其他方向效果次之,在高维方面更加明显。

计算机视觉教程核心版(三)优化下篇

2.SGD的另一个问题是由局部最小值点或者鞍点(零梯度)

 

对于鞍点梯度为零,则权重不会做出任何更新,高维度出现你更多。

而局部最小值是一个更大的问题,向每一个方向损失都将变大,当考虑高维度时候出现的较少。

由于我们的梯度来源于最小批次(可以想象,小批次的数据训练多了就容易发生过拟合,而过拟合就是因为学习到了许多噪声信息),所以它们含有更多的噪声,导致随机梯度下降法将耗费更多的时间训练。

如下图中,加入噪声的随机梯度下降比较曲折,这将导致孙连耗费更多时间。

 

计算机视觉教程核心版(三)优化下篇

SGD+Momentum

SGD优化方法和SGD+Momentum的优化方法区别显示如下:

计算机视觉教程核心版(三)优化下篇

Momentum的思想是,保持一个不随时间变化的速度,我们将梯度估计添加到这个速度上,然后在这个速度的方向上步进,而不是在梯度的方向上步进。在每一步我们采取当前的速度,然后用摩擦tho来对其衰减。摩擦系数有时取值比如0.9,之后加到梯度上。现在我们在速度的方向上前进,而不是原始梯度向量。它基本解决了SGD在刚才提出的各种问题。

即使在鞍点或者最小值点梯度为零或者卡住,我们有速度来使得损失冲破最小值点或者鞍点。示例如图

计算机视觉教程核心版(三)优化下篇

Nesterov Momentum是原始的一种变形,但更加好用。其公式以及换元后的公式如下

计算机视觉教程核心版(三)优化下篇

计算机视觉教程核心版(三)优化下篇

另一种优化方法

计算机视觉教程核心版(三)优化下篇

RMSprop是AdaGrad的改进,一般不倾向于使用AdaGrad,因为它容易卡住

计算机视觉教程核心版(三)优化下篇

 

计算机视觉教程核心版(三)优化下篇

无论是Momentum还是RMSprop都比单纯的SGD效果要好。

Adam集合和上述的优化方法的优点,  针对许多问题都能有好的表现,因此作为优化函数是首选。

其完整形式如下计算机视觉教程核心版(三)优化下篇

学习率衰减方式

在训练过程中,随着时间退役经常减小学习率。

计算机视觉教程核心版(三)优化下篇

减小学习率的方法有如下

  • 每训练一定的epoch就将学习率减少一般
  • 指数衰减

计算机视觉教程核心版(三)优化下篇

  • 1/t衰减,计算机视觉教程核心版(三)优化下篇

带动量的SGD经常用这种办法,然而像Adam这种优化算法就很少用。学习率衰减是一种二姐参数调试办法,不应该在一开始就使用。

梯度检验待续