机器学习(神经网络)优化方法

梯度下降法(Gradient Descent)

梯度下降法根据每次求解损失函数L带入的样本数,可以分为:全量梯度下降(计算所有样本的损失),批量梯度下降(每次计算一个batch样本的损失)和随机梯度下降(每次随机选取一个样本计算损失)。
PS:现在所说的SGD(随机梯度下降)多指Mini-batch-Gradient-Descent(批量梯度下降)

SGD的优缺点

优点:操作简单,计算量小,在损失函数是凸函数的情况下能够保证收敛到一个较好的全局最优解。 
缺点:α是个定值(在最原始的版本),它的选取直接决定了解的好坏,过小会导致收敛太慢,
	过大会导致震荡而无法收敛到最优解。对于非凸问题,只能收敛到局部最优,并且没有任何摆脱
	局部最优的能力(一旦梯度为0就不会再有任何变化)。 

PS:对于非凸的优化问题,我们可以将其转化为对偶问题,对偶函数一定是凹函数,但是这样求出来的解并不等价于原函数的解,只是原函数的一个确下界

Momentum

最终的前进方向是由我们之前的方向和转弯的方向共同决定的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

优点:一定程度上缓解了SGD收敛不稳定的问题,并且有一定的摆脱局部最优的能力(当前梯度为0时,仍可
	能按照上次迭代的方向冲出局部最优点),直观上理解,它可以让每次迭代的“掉头方向不是那个大“。
	左图为SGD,右图为Momentum。
缺点:这里又多了另外一个超参数ρ需要我们设置,它的选取同样会影响到结果。

在这里插入图片描述

Nesterov Momentum

在这里插入图片描述
在这里插入图片描述
蓝色的线代表原始的Momentum更新方向,在NAG中,我们先求解得到了这个方向,也即棕色的线,然后求解此处的梯度(红色的线),从而得到最终的前进方向。

Adagrad

自适应调整学习率在这里插入图片描述
可以看到,随着迭代的增加,我们的学习率是在逐渐变小的,这在“直观上”是正确的:当我们越接近最优解时,函数的“坡度”会越平缓,我们也必须走的更慢来保证不会穿过最优解。这个变小的幅度只跟当前问题的函数梯度有关,ϵ是为了防止0除,一般取1e-7。

优点:解决了SGD中学习率不能自适应调整的问题 
缺点:学习率单调递减,在迭代后期可能导致学习率变得特别小而导致收敛及其缓慢。
	同样的,我们还需要手动设置初始α

RMSProp

为了进一步优化损失函数在更新中存在摆动幅度过大的问题,并且进一步加快函数的收敛速度,RMSProp算法对权重 W 和偏置 b 的梯度使用了微分平方加权平均数。
其中,假设在第 t 轮迭代过程中,各个公式如下所示:
在这里插入图片描述
在这里插入图片描述
β 是梯度累积的一个指数,所不同的是,RMSProp算法对梯度计算了微分平方加权平均数,这种做法有利于消除了摆动幅度大的方向,用来修正摆动幅度,使得各个维度的摆动幅度都较小。(比如当 dW 或者 db 中有一个值比较大的时候,那么我们在更新权重或者偏置的时候除以它之前累积的梯度的平方根,这样就可以使得更新幅度变小),为了防止分母为零,使用了一个很小的数值 ϵ 来进行平滑,一般取值为10−8。

adam

Momentum可以使用类似于物理中的动量来累积梯度,RMSProp可以使得收敛速度更快同时使得波动的幅度更小。Adam(Adaptive Moment Estimation)算法是将Momentum算法和RMSProp算法结合起来使用的一种算法,所使用的参数基本和上面讲的一致,在训练的最开始我们需要初始化梯度的累积量和平方累积量。
在这里插入图片描述
假设在训练的第 t 轮训练中,我们首先可以计算得到Momentum和RMSProp的参数更新:
在这里插入图片描述
由于移动指数平均在迭代开始的初期会导致和开始的值有较大的差异,所以我们需要对上面求得的几个值做偏差修正。
在这里插入图片描述
通过上面的公式,我们就可以求得在第 t 轮迭代过程中,参数梯度累积量的修正值,从而接下来就可以根据Momentum和RMSProp算法的结合来对权重和偏置进行更新。
在这里插入图片描述
Adam算法中,参数 β1 所对应的就是Momentum算法中的 β 值,一般取0.9,参数 β2 所对应的就是RMSProp算法中的 β 值,一般我们取0.999,而 ϵ 是一个平滑项,我们一般取值为 10−8,而学习率 α 则需要我们在训练的时候进行微调。

参考:https://blog.csdn.net/willduan1/article/details/78070086

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值