一、概念知識(shí)
什么是指數(shù)加權(quán)平均?
假設(shè)一組數(shù)據(jù)為b = [v1,v2,v3,v4,v5],則
平均值m=sum(b)/len(b)
加權(quán)均值 m = sum(wb)
指數(shù)加權(quán)就是通過指數(shù)的方式來賦予權(quán)重值,可以看出,權(quán)重是逐漸衰減的。
m1 = 0.1v1
m2 = 0.9m1+0.1
v2
m3 = 0.9m2+0.1
v3
m4 = 0.9m3+0.1
v4
m5 = 0.9m4+0.1
v5
所以
m5 = 0.9(0.9m3+0.1
v4)+0.1
v5
m5 = 0.9(0.9(0.9m2+0.1
v3)+0.1
v4)+0.1
v5
m5 = 0.9(0.9(0.9(0.9m1+0.1
v2)+0.1
v3)+0.1
v4)+0.1
v5
m5 = 0.9(0.9(0.9(0.90.1
v1+0.1
v2)+0.1
v3)+0.1
v4)+0.1
v5
什么是一介動(dòng)量?
一介動(dòng)量是指每個(gè)迭代的梯度的加權(quán)平均,通俗理解就是依據(jù)梯度做一次統(tǒng)計(jì),然后指導(dǎo)梯度優(yōu)化的方向
=
+(1-
)
一般就是設(shè)置為0.9,
就是每個(gè)前向之后求得的梯度值,加入一介動(dòng)量,意味著希望梯度下降的方向是主要依托前面積累的方向和一點(diǎn)點(diǎn)本次梯度的方向做修改,就類似于過彎道一樣。
什么是二介動(dòng)量?
二介動(dòng)量是指過去每個(gè)迭代的梯度的平均和,通俗理解就是依據(jù)梯度的平方做一次分析(此處的分析可以使求和也可以是其他的),然后指導(dǎo)學(xué)習(xí)率的變化
=
=
/
二、優(yōu)化算法主體框架
需要求解的參數(shù)為,其中
就是卷積層或者全連接層的權(quán)重。
損失函數(shù)為=
,學(xué)習(xí)率為
step1:每次前項(xiàng)之后計(jì)算梯度,也就是偏導(dǎo)數(shù)的方向
step2:計(jì)算出一介動(dòng)量,計(jì)算出二介動(dòng)量
step3:計(jì)算出梯度優(yōu)化的值=
step4:更新=
-
所有的具體的優(yōu)化方法都是在這個(gè)主體框架的基礎(chǔ)上進(jìn)行一些具體的修改之后演變來的
三、SGD+Momentum
核心思想:引入Momentum的概念=
,然后SGD一般可以采用固定學(xué)習(xí)率或者學(xué)習(xí)率按照策略下降。
四、Adagrad
核心思想:加入了二介動(dòng)量的概念,=
五、Nesterov
核心思想:先沿著上一次一介動(dòng)量的方向進(jìn)行更新,然后再下一次迭代再考慮梯度的方向。先滾一段距離再說
=
或者
=
六、 RMSProp
核心思想:二階動(dòng)量的計(jì)算方式做了改變,采用和一介動(dòng)量一樣的指數(shù)加權(quán)
=
七、Adam
核心思想:所有的思想都集成于一體
參考資料:
caffe官網(wǎng):http://caffe.berkeleyvision.org/tutorial/solver.html
csdn介https://blog.csdn.net/yinyu19950811/article/details/90476956