深度学习面试基础--训练参数更新方法

引言

神经网络的学习的目的是找到使损失函数的值尽可能小的参数。这是寻找最优参数的问题,解决这个问题的过程称为最优化(optimization)。

1.SGD

SGD就是最常听到的随机梯度下降方法,是使用参数的梯度,然后沿梯度的方向更新参数,并重读这个步骤多次,从而逐渐靠近最优参数。

随机梯度下降是用单个训练样本的损失来近似平均损失。通常使用一个batch的损失进行梯度下降,当训练数据太多时,利用整个数据集更新往往时间上不显示。batch的方法可以减少机器的压力,并且可以更快地收敛当训练集有很多冗余时(类似的样本出现多次),batch方法收敛更快。以一个极端情况为例,若训练集前一半和后一半梯度相同。那么如果前一半作为一个batch,后一半作为另一个batch,那么在一次遍历训练集时,batch的方法向最优解前进两个step,而整体的方法只前进一个step。

更新方法:
在这里插入图片描述
如式所示,SGD是朝着梯度方向只前进一定距离的简单方法。

缺点

(1)SGD依赖于一个较好的学习率,并且容易陷入局部最优
深度学习面试基础--训练参数更新方法_第1张图片
(2)如果函数的形状是非均向(anisotropic)的,比如呈延申状,搜索的路径就会变得非常的低效。根本原因是,这种函数形状下,梯度的方向并没有指向最小值的方向。如下图所示,虽然最小值在(x,y)=(0,0)处,但梯度在很多地方并没有指向(0,0),SGD呈“之”字形移动,这是一个非常低效的路径。
深度学习面试基础--训练参数更新方法_第2张图片
算法流程:
深度学习面试基础--训练参数更新方法_第3张图片

2.动量法(Momentum update)

momentum即动量,它模拟的是物体运动时的惯性,即更新的是时候在一定程度上保留之前更新的方向,同时利用当前batch的梯度微调最终的更新方向。这样一来,可以在一定程度上增加稳定性,从而更快的学习,并且还有一定摆脱局部最优的能力。

想象一下纸团在山谷和鞍点处的运动轨迹,在山谷中纸团受重力作用沿山道滚下,两边是不规则的山壁,纸团不可避免地撞在山壁,由于质量小受山壁弹力的干扰大,从一侧山壁反弹回来撞向另一侧山壁,结果来回震荡地滚下;如果当纸团来到鞍点的一片平坦之地时,还是由于质量小,速度很快减为零。纸团的情况和随机梯度下降法遇到的问题简直如出一辙。直观地,如果换成一个铁球,当沿山谷滚下时,不容易受到途中旁力的干扰,轨迹会更稳更直;当来到鞍点中心处,在惯性作用下继续前行,从而有机会冲出这片平坦的陷阱。因此,有了动量方法,模型参数的迭代公式为

公式:
深度学习面试基础--训练参数更新方法_第4张图片
v 对应物理上的速度。式1表示了物体在梯度方向上受力,在这个力的作用下,物体的速度增加这一物理法则。αv 这一项,在物体不受任何力时,承担使物体逐渐减速的任务(α 设定为0.9之类的值),对应物理上的地面摩擦或空气阻力
深度学习面试基础--训练参数更新方法_第5张图片
算法流程:
深度学习面试基础--训练参数更新方法_第6张图片

3.Nesterov Momentum

Nesterov Momentum 是对 Momentum 的改进,可以理解为 Nesterov 动量在标准动量方法中添加了一个校正因子
深度学习面试基础--训练参数更新方法_第7张图片
算法流程:
深度学习面试基础--训练参数更新方法_第8张图片
可以看出Nesterov相比Momentum唯一的区别就是多了一步红色框起来的步骤,在计算梯度之前先进行一次临时更新得到的θ,然后用新的θ来计算梯度。

4.AdaGrad(Adaptive Gradient)

在神经网络的训练过程中,学习率的值很重要。如果学习率过小,会导致学习花费过多的时间;反之,学习率过大,则会导致学习发散而不能正确进行。在关于学习率的有效技巧中,有一种被成为“学习率衰减”的方法,即随着学习的进行,学习率逐渐减小。

AdaGrad 会为参数的每个元素适当地调整学习率,与此同时进行学习。AdaGrad方法采用“历史梯度平方和”来衡量不同参数的梯度的稀疏性,取值越小表明越稀疏。

公式:
在这里插入图片描述
深度学习面试基础--训练参数更新方法_第9张图片
缺点:
学习越深入,更新的幅度就越小。实际上,如果一直学下去,权重将不会再更新。
深度学习面试基础--训练参数更新方法_第10张图片
算法流程:
深度学习面试基础--训练参数更新方法_第11张图片

5.Adam

Momentum参照小球在碗中滚动的物理规则进行移动,AdaGrad为参数的每个元素适当的调整更新步伐。Adam方法将两者结合。

一方面,Adam记录梯度的一阶矩,即过往梯度与当前梯度的平均,这体现了惯性保持;另一方面,Adam还记录了梯度的二阶矩,即国王梯度平方与当前梯度平方的平均,这类似AdaGrad方法为不同参数产生自适应的学习速率。一阶矩和二阶矩采用类似于滑动窗口内求平均的思想进行融合,即当前梯度和近一段时间内梯度的平均值,时间久远的梯度对当前平均值的贡献呈指数衰减。

公式:
在这里插入图片描述
其中β1 ,β2 为衰减系数,mt是一阶矩,vt是二阶矩。
深度学习面试基础--训练参数更新方法_第12张图片

参考链接:

  1. https://blog.csdn.net/weixin_42437114/article/details/106538321
  2. https://www.jianshu.com/p/b8d1870eddf6
  3. https://blog.csdn.net/weixin_42462804/article/details/104941590

你可能感兴趣的:(深度学习面试,深度学习,人工智能,机器学习)