模型優(yōu)化器專(zhuān)欄

前言

關(guān)于學(xué)習(xí)率調(diào)整與權(quán)重衰減,是機(jī)器學(xué)習(xí)中模型優(yōu)化的重要部分篡帕。一些經(jīng)典的方法在各類(lèi)數(shù)據(jù)集取得了令人矚目的成績(jī)殖侵,如SGD、學(xué)習(xí)率衰減赂苗、預(yù)熱愉耙、周期性學(xué)習(xí)率調(diào)整、AdaGrad拌滋、RMSprop、Adam猜谚,此外败砂,一些小眾的、同樣有效的技巧也層出不窮魏铅,如LR Range Test昌犹、AdamW等。在接下來(lái)的一段時(shí)間里览芳,本專(zhuān)欄將分期逐步對(duì)這些方法進(jìn)行收錄斜姥、總結(jié)。

1 LR Range Test(學(xué)習(xí)率范圍測(cè)試)與Cyclical LR(周期性學(xué)習(xí)率調(diào)整)

部分知識(shí)轉(zhuǎn)自知乎專(zhuān)欄 :https://zhuanlan.zhihu.com/p/52084949?utm_source=wechat_timeline
代碼參考:https://github.com/anandsaha/pytorch.cyclic.learning.rate/blob/master/cls.py
2015年,Leslie N. Smith提出了該技術(shù)铸敏。其核心是將模型進(jìn)行幾次迭代缚忧,在最初的時(shí)候,將學(xué)習(xí)率設(shè)置的足夠小杈笔,然后闪水,隨著迭代次數(shù)的增加,逐漸增加學(xué)習(xí)率蒙具,記錄下每個(gè)學(xué)習(xí)率對(duì)應(yīng)的損失球榆,并繪圖:

LR Range Test 圖示。LR 的初始值僅為 1e-7禁筏,然后增加到 10

LR Range Test 圖應(yīng)該包括三個(gè)區(qū)域持钉,第一個(gè)區(qū)域中學(xué)習(xí)率太小以至于損失幾乎沒(méi)有減少,第二個(gè)區(qū)域里損失收斂很快篱昔,最后一個(gè)區(qū)域中學(xué)習(xí)率太大以至于損失開(kāi)始發(fā)散每强。因此,第二個(gè)區(qū)域中的學(xué)習(xí)率范圍就是我們?cè)谟?xùn)練時(shí)應(yīng)該采用的旱爆。
在一些經(jīng)典方法中舀射,學(xué)習(xí)率總是逐步下降的,從而保證模型能夠穩(wěn)定收斂怀伦,但Leslie Smith對(duì)此提出了質(zhì)疑脆烟,Leslie Smith認(rèn)為讓學(xué)習(xí)率在合理的范圍內(nèi)周期性變化(即Cyclical LR)是更合理的方法,能夠以更小的步驟提高模型準(zhǔn)確率房待。


Cyclical LR

如上圖所示邢羔,max_lr 與 lr 可以通過(guò) LR Range test 確定,作者認(rèn)為:最優(yōu)學(xué)習(xí)率將在處于這個(gè)范圍內(nèi)桑孩,所以如果學(xué)習(xí)率在這歌區(qū)間變化拜鹤,大多數(shù)情況下你將得到一個(gè)接近最優(yōu)學(xué)習(xí)率的學(xué)習(xí)率。
總結(jié):
(1)Cyclical LR是一種有效避開(kāi)鞍點(diǎn)的方法流椒,因?yàn)樵诎包c(diǎn)附近梯度較小敏簿,通過(guò)增加學(xué)習(xí)率可以讓模型走出困境。
(2)Cyclical LR能夠加速模型訓(xùn)練過(guò)程
(3)Cyclical LR在一定程度上可以提高模型的泛化能力(將模型帶入平坦最小值區(qū)域)

2 The 1cycle policy(一周期策略)

參考鏈接:https://sgugger.github.io/the-1cycle-policy.html
在Cyclical LR和LR Range Test的基礎(chǔ)上宣虾,Leslie 繼續(xù)改進(jìn)惯裕,提出了The 1cycle policy。即周期性學(xué)習(xí)率調(diào)整中绣硝,周期被設(shè)置為1蜻势。在一周期策略中,最大學(xué)習(xí)率被設(shè)置為 LR Range test 中可以找到的最高值鹉胖,最小學(xué)習(xí)率比最大學(xué)習(xí)率小幾個(gè)數(shù)量級(jí)(比如設(shè)為最大值的0.1倍)握玛。

一周期策略

如上圖够傍,一整個(gè)訓(xùn)練周期約400個(gè)iter,前175個(gè)iter用來(lái)warm-up挠铲,中間175個(gè)iter用來(lái)退火到初始學(xué)習(xí)率冕屯,最后幾十個(gè)iter學(xué)習(xí)率進(jìn)行進(jìn)一步衰減。我們將上述三個(gè)過(guò)程稱(chēng)為三個(gè)階段市殷。

  • 第一階段:線性warm-up愕撰,其效果與一般的warm-up效果類(lèi)似,防止冷啟動(dòng)導(dǎo)致的一些問(wèn)題醋寝。
  • 第二階段:線性下降至初始學(xué)習(xí)率搞挣。由于第一、第二階段中有相當(dāng)大的時(shí)間模型處于較高的學(xué)習(xí)率音羞,作者認(rèn)為囱桨,這將起到一定的正則化作用,防止模型在陡峭最小值駐留嗅绰,從而更傾向于尋找平坦的局部最小值舍肠。
  • 第三階段:學(xué)習(xí)率衰減至0,將使得模型在一個(gè)‘平坦’區(qū)域內(nèi)收斂至一個(gè)較為‘陡峭’的局部最小值窘面。
In this graph, the learning rate was rising from 0.08 to 0.8 between epochs 0 and 41, getting back to 0.08 between epochs 41 and 82 then going to one hundredth of 0.08 in the last few epochs. We can see how the validation loss gets a little bit more volatile during the high learning rate part of the cycle (epochs 20 to 60 mostly) but the important part is that on average, the distance between the training loss and the validation loss doesn't increase. We only really start to overfit at the end of the cycle, when the learning rate gets annihilated.

上圖展示了一周期策略訓(xùn)練時(shí)翠语,模型在訓(xùn)練集和驗(yàn)證集上的損失變化,可見(jiàn)财边,在學(xué)習(xí)率較大時(shí)肌括,驗(yàn)證集損失變得不穩(wěn)定,但平均來(lái)看酣难,驗(yàn)證集損失與訓(xùn)練集損失的差值沒(méi)有變化太多谍夭,說(shuō)明這個(gè)階段模型學(xué)習(xí)到的知識(shí)具有較好的泛化能力(即大學(xué)習(xí)率一定程度上起到了正則化的作用)玉控。而在訓(xùn)練末期夺艰,學(xué)習(xí)率不斷衰減,這時(shí)訓(xùn)練集損失有明顯下降区赵,而驗(yàn)證集損失沒(méi)有明顯下降菜谣,兩者的差值擴(kuò)大了珠漂,因此,在訓(xùn)練末期尾膊,模型開(kāi)始產(chǎn)生了一定的過(guò)擬合(個(gè)人理解:某種意義上講甘磨,這種過(guò)擬合是使得模型能夠穩(wěn)定地停留在平坦最小值區(qū)域的一種手段)。

3 AdamW算法

參考鏈接:https://blog.csdn.net/yinyu19950811/article/details/90476956#161_Adamw_89
2014年提出的Adam算法有很多優(yōu)點(diǎn)眯停,它集合了動(dòng)量與RMSprop兩種方式的優(yōu)點(diǎn)。但是在實(shí)際應(yīng)用過(guò)程中卿泽,卻經(jīng)歷了過(guò)山車(chē)一般的發(fā)展歷程:一經(jīng)提出莺债,非匙叹酰火熱,但是后來(lái)卻受到很多質(zhì)疑齐邦,質(zhì)疑者認(rèn)為在訓(xùn)練時(shí)椎侠,簡(jiǎn)單的SGD+動(dòng)量能夠取得更好的效果,直到AdamW提出后措拇,Adam才又煥發(fā)活力我纪。
AdamW的作者認(rèn)為,Adam存在以下問(wèn)題:

  • 1) L2正則化在Adam中并不等價(jià)于權(quán)重衰減:這里需要講一下丐吓,在使用L2正則化的時(shí)候浅悉,我們想要達(dá)到的目的是控制權(quán)重的大小,防止過(guò)擬合券犁,從而將L2正則加入到損失函數(shù)中术健,即final_loss = loss + L2 = loss + 0.5*sum(w^2),對(duì)上述函數(shù)求導(dǎo)時(shí)粘衬,可以看到導(dǎo)數(shù)為loss的導(dǎo)數(shù) + w荞估,因此參數(shù)進(jìn)行梯度更新時(shí),就會(huì)在原來(lái)的基礎(chǔ)上減去一個(gè)w稚新,因此我們說(shuō)L2正則化是權(quán)重衰減勘伺。但是權(quán)重衰減與L2正則等價(jià)僅僅是在采用SGD的情況下,當(dāng)使用Adam時(shí)褂删,減去w這一項(xiàng)會(huì)變得很復(fù)雜(大家可以自己推到一下)飞醉。
  • 2)使用Adam優(yōu)化帶L2正則的損失并不有效,如果引入L2正則化項(xiàng)笤妙,在計(jì)算梯度的時(shí)候會(huì)加上正則項(xiàng)求梯度的結(jié)果冒掌。正常的權(quán)重衰減是對(duì)所有的權(quán)重都采用相同的系數(shù)進(jìn)行更新,本身比較大的一些權(quán)重對(duì)應(yīng)的梯度也會(huì)比較大蹲盘,懲罰也越大股毫。但由于Adam計(jì)算步驟中減去項(xiàng)會(huì)有除以梯度平方的累積,使得梯度大的減去項(xiàng)偏小召衔,從而具有大梯度的權(quán)重不會(huì)像解耦權(quán)重衰減那樣得到正則化铃诬。 這導(dǎo)致自適應(yīng)梯度算法的L2和解耦權(quán)重衰減正則化的不等價(jià)。
    因此苍凛,權(quán)重衰減和L2正則這兩件事要分開(kāi)來(lái)看趣席,我們使用L2正則的目的是為了在所有參數(shù)上進(jìn)行相同尺度的懲罰(權(quán)重衰減),但是由于Adam獨(dú)特的計(jì)算公式醇蝴,使得不同參數(shù)懲罰的尺度不一樣了宣肚,這也就是AdamW的改進(jìn)點(diǎn),即先進(jìn)行損失計(jì)算(不包含)悠栓,然后算進(jìn)行Adam中的動(dòng)量和RMSprop項(xiàng)目霉涨,然后在最后參數(shù)更新的時(shí)候進(jìn)行權(quán)重衰減按价,看圖:
粉色是Adam,綠色是AdamW

如果是SGD笙瑟,L2正則化項(xiàng)和梯度衰減是等同的楼镐。但是由于Adam加入了一階動(dòng)量和二階動(dòng)量,基于包含L2正則化項(xiàng)的梯度來(lái)計(jì)算一階動(dòng)量和二階動(dòng)量往枷,使得參數(shù)的更新系數(shù)就會(huì)變化框产,與單純的權(quán)重衰減就會(huì)變得不同。

另外错洁,在fastAI的一篇文章中(https://www.fast.ai/2018/07/02/adam-weight-decay/)指出秉宿,即使是原始的Adam也是有效的,前提是超參數(shù)設(shè)置正確墓臭。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蘸鲸,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子窿锉,更是在濱河造成了極大的恐慌酌摇,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗡载,死亡現(xiàn)場(chǎng)離奇詭異窑多,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)洼滚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)埂息,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人遥巴,你說(shuō)我怎么就攤上這事千康。” “怎么了铲掐?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵拾弃,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我摆霉,道長(zhǎng)豪椿,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任携栋,我火速辦了婚禮搭盾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘婉支。我一直安慰自己鸯隅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布向挖。 她就那樣靜靜地躺著滋迈,像睡著了一般霎奢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饼灿,一...
    開(kāi)封第一講書(shū)人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音帝美,去河邊找鬼碍彭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛悼潭,可吹牛的內(nèi)容都是我干的庇忌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼舰褪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼皆疹!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起占拍,我...
    開(kāi)封第一講書(shū)人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤略就,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后晃酒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體表牢,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年贝次,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了崔兴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛔翅,死狀恐怖敲茄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情山析,我是刑警寧澤堰燎,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站盖腿,受9級(jí)特大地震影響爽待,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜翩腐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一鸟款、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧茂卦,春花似錦何什、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)伶贰。三九已至,卻和暖如春罐栈,著一層夾襖步出監(jiān)牢的瞬間黍衙,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工荠诬, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留琅翻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓柑贞,卻偏偏與公主長(zhǎng)得像方椎,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子钧嘶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容