一、概念知识
什么是指数加权平均?
假设一组数据为b = [v1,v2,v3,v4,v5],则
平均值m=sum(b)/len(b)
加权均值 m = sum(wb)
指数加权就是通过指数的方式来赋予权重值,可以看出,权重是逐渐衰减的
。
m1 = 0.1v1
m2 = 0.9m1+0.1v2
m3 = 0.9m2+0.1v3
m4 = 0.9m3+0.1v4
m5 = 0.9m4+0.1v5
所以
m5 = 0.9(0.9m3+0.1v4)+0.1v5
m5 = 0.9(0.9(0.9m2+0.1v3)+0.1v4)+0.1v5
m5 = 0.9(0.9(0.9(0.9m1+0.1v2)+0.1v3)+0.1v4)+0.1v5
m5 = 0.9(0.9(0.9(0.90.1v1+0.1v2)+0.1v3)+0.1v4)+0.1v5
什么是一介动量?
一介动量是指每个迭代的梯度的加权平均,通俗理解就是依据梯度做一次统计,然后指导梯度优化的方向
= +(1-)
一般就是设置为0.9,就是每个前向之后求得的梯度值,加入一介动量,意味着希望梯度下降的方向是主要依托前面积累的方向和一点点本次梯度的方向做修改,就类似于过弯道一样。
什么是二介动量?
二介动量是指过去每个迭代的梯度的平均和,通俗理解就是依据梯度的平方做一次分析(此处的分析可以使求和也可以是其他的),然后指导学习率的变化
=
= /
二、优化算法主体框架
需要求解的参数为,其中就是卷积层或者全连接层的权重。
损失函数为=,学习率为
step1:每次前项之后计算梯度,也就是偏导数的方向
step2:计算出一介动量,计算出二介动量
step3:计算出梯度优化的值=
step4:更新=-
所有的具体的优化方法都是在这个主体框架的基础上进行一些具体的修改之后演变来的
三、SGD+Momentum
核心思想:引入Momentum的概念=,然后SGD一般可以采用固定学习率或者学习率按照策略下降。
四、Adagrad
核心思想:加入了二介动量的概念,=
五、Nesterov
核心思想:先沿着上一次一介动量的方向进行更新,然后再下一次迭代再考虑梯度的方向。先滚一段距离再说
= 或者=
六、 RMSProp
核心思想:二阶动量的计算方式做了改变,采用和一介动量一样的指数加权
=
七、Adam
核心思想:所有的思想都集成于一体
参考资料:
caffe官网:
http://caffe.berkeleyvision.org/tutorial/solver.html
csdn介
https://blog.csdn.net/yinyu19950811/article/details/90476956
网友评论