谈深度学习里的那些优化方法


在学习对抗攻击的时候,接触到了“动量”这一概念,就去初步了解了下,顺便对于其他优化方法浅浅地也认识了下。
在深度学习中,为寻找最优解使得损失函数的值最小,我们经常会用到优化方法。下面,对这些优化方法简要介绍。

1. SGD

SGD,即随机梯度下降算法,通过从训练集中随机抽取 m m m个小批量的样本,计算它们的平均梯度值,根据这个,对模型的参数进行更新。该优化算法实际上就是min-batch的实现,是最基础的优化算法,当今大部分优化算法都是以SGD为基础实现的。

需要注意的是,在优化过程中,要随迭代步数,逐渐降低学习率。
随机梯度下降和批梯度下降的区别只是输入的数据分别是mini-batch和all。

2. Momentum(动量)

举个例子,如果你站在一个地方不动,让你立刻向后转齐步走,你可以迅速向后转然后就向相反的方向走了起来,批梯度下降和随机梯度下降就是这样,某一时刻的梯度只与这一时刻有关,改变方向可以做到立刻就变。而如果你正在按照某个速度向前跑,再让你立刻向后转,可以想象得到吧,此时你无法立刻将速度降为0然后改变方向,你由于之前的速度的作用,有可能会慢慢减速然后转一个弯。

而动量梯度下降是同理的,每一次梯度下降都会有一个之前的速度的作用,如果这次的方向与之前相同,则会因为之前的速度继续加速;如果这次的方向与之前相反,则会由于之前存在的速度的作用不会产生一个急转弯,而是尽量把路线向一条直线拉过去。

直观上讲,要是当前时刻的梯度与历史时刻梯度方向相似,这种趋势在当前时刻则会加强;要是不同,则当前时刻的梯度方向减弱。此时的梯度不再只是现在的数据的梯度,而是有一定权重的之前的梯度。

注意:动量方法主要是为了解决Hessian矩阵病态条件问题(直观上讲就是梯度高度敏感于参数空间的某些方向)的。一般将参数设为0.5,0.9,或者0.99,分别表示最大速度2倍,10倍,100倍于SGD的算法。

3. Nesterov(牛顿动量)

Nesterov是对Momentum的变种。与Momentum不同的是,Nesterov先用当前的速度v更新一遍参数,再用更新的临时参数计算梯度。

4. AdaGrad

在设置全局学习率之后,每次通过全局学习率逐参数的除以历史梯度平方和的平方根,使得每个参数的学习率不同。效果是,在参数空间更为平缓的方向,取得更大的进步,即由于平缓,历史梯度平方和较小,对应学习下降的幅度较小。.缺点是,使得学习率过早、过量的减少。

5. RMSProp

AdaGrad算法的改进,历史梯度平方和—>指数衰减的移动平均。

6. Adam

Momentum和RMSprop的结合,产生了一种权威算法叫做Adam,Adam结合了前两者的计算方式形成自己的优化方法,基本适用于所有的模型和网络结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值