續(xù)【DL-CV】更高級的參數(shù)更新(一)
【DL-CV】正則化,Dropout<前篇---后篇>【DL-CV】淺談GoogLeNet(咕咕net)
Adagrad全名 Adaptive gradient algorithm ,翻譯過來就是“適應(yīng)梯度算法”,該算法能根據(jù)梯度中偏導(dǎo)數(shù)的大小給不同的偏導(dǎo)數(shù)以不同的學(xué)習(xí)率,偏導(dǎo)數(shù)大(小)的給個小(大)的學(xué)習(xí)率,以此來減少參數(shù)更新時的擺動。
其核心是引入一個參數(shù)對歷次的梯度的平方進(jìn)行累加,在更新階段,基礎(chǔ)學(xué)習(xí)率將除以這個參數(shù)的開方。這樣大梯度會因為積累大而分得小的學(xué)習(xí)率,小梯度因為積累小而分得較大的學(xué)習(xí)率
$$s_{t+1} = s_{t}+
abla_x L(x_t)^2$$
$$x_{t+1}=x_t-{alphaover sqrt {s_{t+1}}+epsilon}
abla_x L(x_t)$$
其中$epsilon$是一個很小的數(shù),為了防止除法時分母出現(xiàn)零,一般設(shè)為1e-4到1e-8之間。下面是代碼實現(xiàn)
缺點:梯度平方的累計值在訓(xùn)練過程中不斷增大,作為分母被除了以后學(xué)習(xí)率衰減過快,更新變慢
RMSpropRMSprop 是 Geoff Hinton 提出的一種自適應(yīng)學(xué)習(xí)率方法,目的是為了解決 Adagrad 學(xué)習(xí)率急劇下降的問題。其在對梯度平方進(jìn)行累加時會進(jìn)行衰減處理(其實是指數(shù)加權(quán)平均),解決學(xué)習(xí)率急降的問題的同時又保留了 Adagrad 調(diào)節(jié)學(xué)習(xí)率的優(yōu)點
$$s_{t+1} = eta s_t +(1-eta)
abla_x L(x_t)^2$$
$$x_{t+1}= x_t-{alphaover sqrt {s_{y+1}+}epsilon}$$
$gamma$ 通常為0.9/0.99
以上兩種方法解決了SGD的問題2??
Adam兩種動量方法通過引入“速度”解決了問題1??;Adagrad 和 RMSprop 通過引入“梯度平方”解決了問題2??,各有千秋。為何不把兩者結(jié)合起來然后一次滿足兩個愿望呢?這么一想,Adam就出來了。
Adam 相當(dāng)于 RMSprop + Momentum,他除了像 RMSprop 一樣存儲了過去梯度平方的指數(shù)衰減平均值 ,也像 momentum 一樣保持了過去梯度的指數(shù)衰減平均值:
$$v_{t+1} = eta_1v_t + (1-eta_1)
abla_x L(x_t)$$
$$s_{t+1} = eta_2s_t + (1-eta_2)
abla_x L(x_t)^2$$
如果 v 和 s 被初始化為 0 向量,那它們就會向 0 偏置,所以還需要偏差校正來抵消這些偏差:
$$hat v_{t+1} = {v_{t+1}over 1-eta_1^{t+1}}$$
$$hat s_{t+1} = {s_{t+1}over 1-eta_2^{t+1}}$$
最后的更新就是:
$$x_{t+1}=x_t-{alpha hat v_{t+1}oversqrt{hat s_{t+1}}+epsilon}$$
推薦值$eta_1=0.9$,$eta_2=0.99$,$alpha=10^{-3}/5·10^{-4}$代碼實現(xiàn):
Adam真的是一個非常棒的算法,實踐表明,Adam 比其他適應(yīng)性學(xué)習(xí)方法效果要好,幾乎成為標(biāo)配默認(rèn)的算法啦。所以長篇大論了這么久之后的結(jié)論是——推薦首選Adam
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/42446.html
續(xù)【DL-CV】更高級的參數(shù)更新(一) 【DL-CV】正則化,Dropout【DL-CV】淺談GoogLeNet(咕咕net) Adagrad 全名 Adaptive gradient algorithm ,翻譯過來就是適應(yīng)梯度算法,該算法能根據(jù)梯度中偏導(dǎo)數(shù)的大小給不同的偏導(dǎo)數(shù)以不同的學(xué)習(xí)率,偏導(dǎo)數(shù)大(小)的給個小(大)的學(xué)習(xí)率,以此來減少參數(shù)更新時的擺動。 其核心是引入一個參數(shù)對歷次的梯度的平方...
摘要:對所有參數(shù)更新時應(yīng)用同樣的學(xué)習(xí)率梯度由許多偏導(dǎo)數(shù)組成,對應(yīng)著各個參數(shù)的更新。對于偏導(dǎo)數(shù)大的,我們希望配個小的學(xué)習(xí)率給他對于偏導(dǎo)數(shù)小的,我們希望配個大的學(xué)習(xí)率給他,這樣各個參數(shù)都能獲得大致相同的更新幅度,提高網(wǎng)絡(luò)的健壯性。 后續(xù)【DL-CV】更高級的參數(shù)更新/優(yōu)化(二) 【DL-CV】正則化,Dropout【DL-CV】淺談GoogLeNet(咕咕net) 原版SGD的問題 原味版的S...
閱讀 2197·2021-11-25 09:43
閱讀 1165·2021-11-23 09:51
閱讀 3499·2021-11-23 09:51
閱讀 3628·2021-11-22 09:34
閱讀 1543·2021-10-09 09:43
閱讀 2119·2019-08-30 15:53
閱讀 3161·2019-08-30 14:07
閱讀 568·2019-08-28 18:14