續(xù)【DL-CV】更高級(jí)的參數(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ù)大(?。┑慕o個(gè)?。ù螅┑膶W(xué)習(xí)率,以此來減少參數(shù)更新時(shí)的擺動(dòng)。
其核心是引入一個(gè)參數(shù)對(duì)歷次的梯度的平方進(jìn)行累加,在更新階段,基礎(chǔ)學(xué)習(xí)率將除以這個(gè)參數(shù)的開方。這樣大梯度會(huì)因?yàn)榉e累大而分得小的學(xué)習(xí)率,小梯度因?yàn)榉e累小而分得較大的學(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$是一個(gè)很小的數(shù),為了防止除法時(shí)分母出現(xiàn)零,一般設(shè)為1e-4到1e-8之間。下面是代碼實(shí)現(xiàn)
缺點(diǎn):梯度平方的累計(jì)值在訓(xùn)練過程中不斷增大,作為分母被除了以后學(xué)習(xí)率衰減過快,更新變慢
RMSpropRMSprop 是 Geoff Hinton 提出的一種自適應(yīng)學(xué)習(xí)率方法,目的是為了解決 Adagrad 學(xué)習(xí)率急劇下降的問題。其在對(duì)梯度平方進(jìn)行累加時(shí)會(huì)進(jìn)行衰減處理(其實(shí)是指數(shù)加權(quán)平均),解決學(xué)習(xí)率急降的問題的同時(shí)又保留了 Adagrad 調(diào)節(jié)學(xué)習(xí)率的優(yōu)點(diǎn)
$$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兩種動(dòng)量方法通過引入“速度”解決了問題1??;Adagrad 和 RMSprop 通過引入“梯度平方”解決了問題2??,各有千秋。為何不把兩者結(jié)合起來然后一次滿足兩個(gè)愿望呢?這么一想,Adam就出來了。
Adam 相當(dāng)于 RMSprop + Momentum,他除了像 RMSprop 一樣存儲(chǔ)了過去梯度平方的指數(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 向量,那它們就會(huì)向 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}$代碼實(shí)現(xiàn):
Adam真的是一個(gè)非常棒的算法,實(shí)踐表明,Adam 比其他適應(yīng)性學(xué)習(xí)方法效果要好,幾乎成為標(biāo)配默認(rèn)的算法啦。所以長(zhǎng)篇大論了這么久之后的結(jié)論是——推薦首選Adam
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/42446.html
續(xù)【DL-CV】更高級(jí)的參數(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ù)大(?。┑慕o個(gè)小(大)的學(xué)習(xí)率,以此來減少參數(shù)更新時(shí)的擺動(dòng)。 其核心是引入一個(gè)參數(shù)對(duì)歷次的梯度的平方...
摘要:對(duì)所有參數(shù)更新時(shí)應(yīng)用同樣的學(xué)習(xí)率梯度由許多偏導(dǎo)數(shù)組成,對(duì)應(yīng)著各個(gè)參數(shù)的更新。對(duì)于偏導(dǎo)數(shù)大的,我們希望配個(gè)小的學(xué)習(xí)率給他對(duì)于偏導(dǎo)數(shù)小的,我們希望配個(gè)大的學(xué)習(xí)率給他,這樣各個(gè)參數(shù)都能獲得大致相同的更新幅度,提高網(wǎng)絡(luò)的健壯性。 后續(xù)【DL-CV】更高級(jí)的參數(shù)更新/優(yōu)化(二) 【DL-CV】正則化,Dropout【DL-CV】淺談GoogLeNet(咕咕net) 原版SGD的問題 原味版的S...
閱讀 2212·2021-11-25 09:43
閱讀 1177·2021-11-23 09:51
閱讀 3511·2021-11-23 09:51
閱讀 3637·2021-11-22 09:34
閱讀 1573·2021-10-09 09:43
閱讀 2134·2019-08-30 15:53
閱讀 3171·2019-08-30 14:07
閱讀 579·2019-08-28 18:14