deeplearning.ai -深度神经网络优化方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vivizhangyan/article/details/81362063

1 full-batch梯度下降 随机梯度下降(SGD)mini-batch梯度下降
full-batch梯度下降:每次计算梯度的时候把所有训练数据都考虑进去,假设一共有N个样本,计算损失函数的时候,对所有的N个样本都求一遍损失函数的值,然后求平均。存在的问题是当数据量太大,则很难进行计算。
SGD:每次从训练样本中随机抽取一个样本用来计算损失函数,将相应计算出的梯度作为当前一步梯度下降的依据。这种方法具有随机性,由于深度学习是非凸优化问题,可以使梯度避免陷入极值,在很多实际应用中,尤其是类别很多的分类中,随机性会导致算法不收敛
mini-batch梯度下降:前面两种方法的折中。将包含所有样本的训练集分割为小一点的子集进行训练,这种子集叫做mini-batch,对每一个子集进行梯度下降求解。
比较:使用full-batch梯度下降,一次遍历训练集正让你做一个梯度下降,mini-batch梯度下降法,一次遍历训练集,可以做多个梯度下降。使用SGD如果只处理一个样本,这种方法可以通过减小学习率,改善噪声,但是同时会失去所有向量化带给你的加速。
如何选取合适的mini-batch数目
训练集较小(<2000),可以直接使用full-batch梯度下降;若样本数量较大,mini-batch的大小为64~512,具体的选择要参考电脑内存设置和使用方式。
2.指数加权平均数
关键方程: v t = β v t 1 + ( 1 β ) θ t
作用:占用内存少,可以有效计算平均数。
3.指数加权平均数的偏差修正
对于指数加权平均数在估测初期,估测不准选择,用 v t 1 β t ,这个叫做偏差修正。
4.动量梯度下降
基本想法:计算梯度的指数加权平均数,并利用该梯度更显权重。
原因:相比于标准的梯度下降,动量梯度下降会减少在纵轴上的摆动,而加快在横轴上的学习。
具体操作:在每次迭代中,利用mini-batch计算dW,db,然后计算加权指数平均数, v d w = β v d w + ( 1 β ) d W ,同样计算 v d b ,然后重新赋值权重 W : W a v d W ; b : b a v d b ,这样可以实现减缓梯度下降的幅度。其中存在两个参数,学习率a,β控制指数加权平均数,β的常用值为0.9
5.RMSprop(root mean square prop)
梯度下降中,用参数b表示纵轴,参数W表示为横轴。想要减缓纵轴的学习,同时加快横轴方向的学习。
具体操作为:计算当下mini-batch的微分dW,db,然后求解微分平方的加权平均数, S d W = β S d W + ( 1 β ) d W 2 ,同理还要求 S d b ,然后更新参数值, W := W a d W S d W ,同样更新b.
6.Adam优化算法
基本思想:将动量梯度下降和RMSprop结合一下。
基本步骤:
(1)初始化: v d w = 0 , S d w = 0 , v d b = 0 , S d b = 0
(2)计算微分dW,db
(3)计算动量指数加权平均数
(4)RMSprop更新,需要计算修正偏差。
7.学习率衰减
为什么计算学习率衰减?
在迭代过程中存在噪声,梯度下降进行最小值求解,不会精确的收敛。
学习率的设置: a = 1 1 + d e c a y r a t e + e p o c h n u m a 0

猜你喜欢

转载自blog.csdn.net/vivizhangyan/article/details/81362063