這兩篇論文提供了一種簡(jiǎn)單的方式骆捧,通過(guò)使用一種巧妙的集成方法提升神經(jīng)網(wǎng)絡(luò)的性能。
Garipov 等人提出的 “Loss Surfaces, Mode Connectivity, and Fast Ensembling of DNNs”
https://arxiv.org/abs/1802.10026Izmailov 等人提出的 “Averaging Weights Leads to Wider Optima and Better Generalization”
https://arxiv.org/abs/1803.05407
若希望更容易理解這篇博客顿膨,可以先閱讀這一篇論文:
- Vitaly Bushaev 提出的 “Improving the way we work with learning rate”
https://techburst.io/improving-the-way-we-work-with-learning-rate-5e99554f163b
傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)集成方法
傳統(tǒng)的集成方法通常是結(jié)合幾種不同的模型锅锨,并使他們對(duì)相同的輸入進(jìn)行預(yù)測(cè),然后使用某種平均方法得到集合的最終預(yù)測(cè)恋沃。 它可以是簡(jiǎn)單的投票法必搞,平均法∧矣剑或者甚至可以使用另一個(gè)模型恕洲,根據(jù)集成模型的輸入學(xué)習(xí)并預(yù)測(cè)正確的值或標(biāo)簽。嶺回歸是一種特殊的集成方法梅割,被許多在 Kaggle 競(jìng)賽獲獎(jiǎng)的機(jī)器學(xué)習(xí)從業(yè)人員所使用霜第。
網(wǎng)絡(luò)快照集成法是在每次學(xué)習(xí)率周期結(jié)束時(shí)保存模型,然后在預(yù)測(cè)過(guò)程中同時(shí)使用保存下來(lái)的模型户辞。
當(dāng)集成方法應(yīng)用在深度學(xué)習(xí)中時(shí)泌类,可以通過(guò)組合多個(gè)神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè),從而得到一個(gè)最終的預(yù)測(cè)結(jié)果底燎。通常情況下刃榨,集成不同結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)是一個(gè)很好的方法弹砚,因?yàn)椴煌哪P涂赡茉诓煌挠?xùn)練樣本上犯錯(cuò),因此集成模型將會(huì)得到更大的好處枢希。
網(wǎng)絡(luò)快照集成法使用基于退火策略的循環(huán)學(xué)習(xí)率策略桌吃。
但是,你也可以集成相同結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)模型苞轿,也會(huì)得到很棒的結(jié)果茅诱。在網(wǎng)絡(luò)快照集成法論文中,作者基于這種方法使用了一個(gè)非撑皇海酷的技巧让簿。作者在訓(xùn)練相同網(wǎng)絡(luò)時(shí)使用權(quán)重快照,在訓(xùn)練結(jié)束后用這些結(jié)構(gòu)相同但權(quán)重不同的模型創(chuàng)建一個(gè)集成模型秀睛。這種方法使測(cè)試集效果提升尔当,而且這也是一種非常簡(jiǎn)單的方法,因?yàn)槟阒恍枰?xùn)練一次模型蹂安,將每一時(shí)刻的權(quán)重保存下來(lái)就可以了椭迎。
想要了解更多的細(xì)節(jié),你可以參考這個(gè)博客田盈。如果你還沒(méi)有使用循環(huán)學(xué)習(xí)率策略畜号,那么你一定要了解它。因?yàn)檫@是當(dāng)前最先進(jìn)而且最簡(jiǎn)單的訓(xùn)練技巧了允瞧,計(jì)算量不大简软,也幾乎不需要額外成本就可以提供很大的收益。
上面的例子都是基于模型的集成方法述暂,因?yàn)樗鼈兪峭ㄟ^(guò)結(jié)合多個(gè)模型的預(yù)測(cè)從而產(chǎn)生最終的預(yù)測(cè)結(jié)果痹升。
但在這篇博客即將討論的論文中,作者提出了一種新的基于權(quán)重的集成方法畦韭。這種方法通過(guò)結(jié)合相同網(wǎng)絡(luò)結(jié)構(gòu)不同訓(xùn)練階段的權(quán)重獲得集成模型疼蛾,然后進(jìn)行預(yù)測(cè)。這種方法有兩個(gè)優(yōu)點(diǎn):
- 當(dāng)結(jié)合權(quán)重時(shí)艺配,我們最后仍然是得到一個(gè)模型察郁,這提升了預(yù)測(cè)的速度
- 實(shí)驗(yàn)結(jié)果表明,這種方法打敗了當(dāng)前最先進(jìn)的網(wǎng)絡(luò)快照集成法
來(lái)看看它是怎么實(shí)現(xiàn)的吧转唉。但首先我們需要了解一些關(guān)于損失平面和泛化問(wèn)題的重要結(jié)論皮钠。
權(quán)重空間中的解決方案
第一個(gè)重要的觀點(diǎn)是:一個(gè)訓(xùn)練好的網(wǎng)絡(luò)是多維權(quán)重空間中的一個(gè)點(diǎn)。對(duì)于一個(gè)給定的網(wǎng)絡(luò)結(jié)構(gòu)酝掩,每一種不同的權(quán)重組合將得到不同的模型鳞芙。因?yàn)樗心P徒Y(jié)構(gòu)都有無(wú)限多種權(quán)重組合,所以將有無(wú)限多種組合方法期虾。訓(xùn)練神經(jīng)網(wǎng)絡(luò)的目標(biāo)是找到一個(gè)特別的解決方案(權(quán)重空間中的點(diǎn))原朝,從而使訓(xùn)練集和測(cè)試集上的損失函數(shù)的值達(dá)到很小。
訓(xùn)練過(guò)程中镶苞,通過(guò)改變權(quán)重喳坠,訓(xùn)練算法改變網(wǎng)絡(luò)的結(jié)構(gòu),并在權(quán)重空間中不斷搜索茂蚓。隨機(jī)梯度下降法在損失平面上傳播壕鹉,損失平面的高低由損失函數(shù)的值決定。
局部與全局最優(yōu)解
可視化與理解多維權(quán)重空間的幾何特點(diǎn)是非常困難的聋涨。同時(shí)晾浴,這也是非常重要的,因?yàn)樵谟?xùn)練時(shí)牍白,隨機(jī)梯度下降法的本質(zhì)是在多維空間的損失平面上傳播脊凰,并努力找到一個(gè)好的解決方案--損失平面上的一個(gè)損失函數(shù)值很低的"點(diǎn)”。眾所周知茂腥,這些平面有許多局部最優(yōu)解狸涌,但并不是所有局部最優(yōu)解都是優(yōu)秀的解決方案。
Hinton: “為了處理14維空間中的超平面最岗, 可視化3維空間并大聲對(duì)自己說(shuō)“14”帕胆。 每個(gè)人都這樣做“愣桑“
局部和全局最優(yōu)解懒豹。在訓(xùn)練和測(cè)試過(guò)程中,平滑的最低值會(huì)產(chǎn)生相似的損失驯用。然而脸秽,訓(xùn)練和測(cè)試過(guò)程中產(chǎn)生的局部損失,有非常大的差異晨汹。換句話說(shuō)豹储,全局最小值比局部最小值更通用。
判斷解決方案好壞的一個(gè)標(biāo)準(zhǔn)就是該方案解的平滑性淘这。 這一思想在于訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)會(huì)產(chǎn)生類似的但并不完全一樣的損失面剥扣。你可以想象一下,一個(gè)測(cè)試表面相對(duì)于訓(xùn)練表面移動(dòng)一點(diǎn)铝穷。對(duì)于一個(gè)局部解钠怯,在測(cè)試過(guò)程中,因?yàn)檫@一點(diǎn)移動(dòng)曙聂,一個(gè)給出低損失值的點(diǎn)會(huì)給出一個(gè)高損失值晦炊。這意味著這個(gè)”局部“解決方案沒(méi)有產(chǎn)生最優(yōu)值——訓(xùn)練損失小,而測(cè)試損失大。另一方面断国,對(duì)于一個(gè)”全局“平滑解決方案贤姆,這一點(diǎn)移動(dòng)會(huì)導(dǎo)致訓(xùn)練和測(cè)試損失的差值很小。
我之所以解釋局部和全局解決方案的不同稳衬,是因?yàn)檫@篇博客聚焦的新方法提供非常好的全局解決方案霞捡。
快照集成
最初,隨機(jī)梯度下降(SGD薄疚,Stochastic Gradient Descent) 會(huì)在權(quán)重空間產(chǎn)生大的躍變碧信。隨后,當(dāng)學(xué)習(xí)率由于余弦退火算法越來(lái)越小時(shí)街夭, SGD 會(huì)收斂到某個(gè)局部解砰碴,該算法會(huì)對(duì)模型拍個(gè)”快照“,即將這個(gè)局部解加入到集合中板丽。接著呈枉,學(xué)習(xí)率再次被重置成高值,SGD在收斂到某個(gè)不同的局部解之前檐什,再次產(chǎn)生一個(gè)大的躍變碴卧。
快照集成方法的循環(huán)長(zhǎng)度是20到40個(gè) epoch(使用訓(xùn)練集的全部數(shù)據(jù)對(duì)模型進(jìn)行一次完整的訓(xùn)練,稱為一個(gè)epoch)乃正。長(zhǎng)學(xué)習(xí)率循環(huán)的思想在于能夠在權(quán)重空間找到足夠多不同的模型住册。如果模型相似度太高,集合中各網(wǎng)絡(luò)的預(yù)測(cè)就會(huì)太接近瓮具,而體現(xiàn)不出集成帶來(lái)的好處荧飞。
快照集成確實(shí)效果很好,提高了模型的性能名党,但是快速幾何集成更有效叹阔。
快速幾何集成 (FGE)
快速幾何集成與快照集成類似,但有一些與快照集成不同的特征传睹。FGE使用線性分段循環(huán)學(xué)習(xí)率策略代替余弦耳幢。其次,F(xiàn)GE的循環(huán)長(zhǎng)度更短——每個(gè)循環(huán)只有2到4個(gè)epoch欧啤。最初的直覺(jué)認(rèn)為睛藻,短循環(huán)是錯(cuò)誤的,因?yàn)槊看窝h(huán)結(jié)束時(shí)產(chǎn)生的模型都非常相似邢隧,差別不大店印,所以集成這些模型不能帶來(lái)益處。然而倒慧,正如作者發(fā)現(xiàn)的按摘,由于在足夠多的不同模型間包券,存在低損失的連接通路,沿著那些通路炫贤,采用短循環(huán)是可行的溅固,而且在這一過(guò)程中,會(huì)產(chǎn)生差異足夠大的模型照激,集成這些模型會(huì)產(chǎn)生很好的結(jié)果发魄。因此盹牧,與快照集成相比俩垃,F(xiàn)GE提高了模型的性能,每次循環(huán)經(jīng)過(guò)更少的epoch就能找到差異足夠大的模型(這使訓(xùn)練速度更快)汰寓。
左邊:傳統(tǒng)觀點(diǎn)認(rèn)為好的局部最小值被高損失區(qū)域分隔開(kāi)口柳。如果我們觀察連接局部最小值的直線,會(huì)發(fā)現(xiàn)這是正確的有滑。中間和右邊:然而跃闹,在局部最小值之間存在通路,這些通路上的損失值始終很低毛好。FGE沿著這些通路拍快照望艺,并利用這些快照構(gòu)建一個(gè)集合。
為了從快照集成或者FGE中獲益肌访,需要存儲(chǔ)多種模型并得出這些模型的預(yù)測(cè)找默,然后對(duì)這些預(yù)測(cè)求平均,作為最終的預(yù)測(cè)吼驶。因此惩激,集合的附加性能需要消耗更多的計(jì)算。所以沒(méi)有免費(fèi)的午餐蟹演》缱辏或許是有的?這是一篇關(guān)于隨機(jī)加權(quán)平均的新論文所獲得的成果酒请。
隨機(jī)加權(quán)平均(SWA骡技,Stochastic Weight Averaging)
隨機(jī)加權(quán)平均和快速幾何集成非常近似,除了計(jì)算損失的部分羞反。 SWA 可以應(yīng)用于任何架構(gòu)和數(shù)據(jù)集布朦,而且都能產(chǎn)生較好的結(jié)果。這篇論文給出了參考建議苟弛,SWA可以得到更大范圍的最小值喝滞,上文已經(jīng)討論過(guò)這一點(diǎn)的好處。SWA不是經(jīng)典意義上的集成膏秫。在訓(xùn)練結(jié)束的時(shí)候右遭,會(huì)產(chǎn)生一個(gè)模型做盅,這個(gè)模型的性能優(yōu)于快照集成,接近FGE窘哈。
左邊:W1,W2和W3 代表了3個(gè)獨(dú)立的訓(xùn)練網(wǎng)絡(luò)吹榴,Wswa是它們的平均。 中間:與SGD相比滚婉,Wswa 在測(cè)試集上產(chǎn)生了更優(yōu)越的性能图筹。右邊:注意即使Wswa在訓(xùn)練集上的性能更差,它在測(cè)試集上的效果仍然更好让腹。
SWA的靈感來(lái)自于實(shí)際觀察远剩,每次學(xué)習(xí)率循環(huán)結(jié)束時(shí)產(chǎn)生的局部最小值趨向于在損失面的邊緣區(qū)域累積,這些邊緣區(qū)域上的損失值較泻稀(上面左圖中瓜晤,顯示低損失的紅色區(qū)域上的點(diǎn)W1,W2和W3)腹纳。通過(guò)對(duì)幾個(gè)這樣的點(diǎn)取平均痢掠,很有可能得到一個(gè)甚至更低損失的、全局化的通用解(上面左圖上的Wswa)嘲恍。
這兒展示了 SWA 是如何工作的足画。不需要集成很多模型,只需要兩個(gè)模型佃牛。
第一個(gè)模型存儲(chǔ)模型權(quán)重的平均值(公式中的 w_swa )淹辞。這就是訓(xùn)練結(jié)束后的最終模型,用于預(yù)測(cè)吁脱。
第二個(gè)模型(公式中的w)變換權(quán)重空間桑涎,利用循環(huán)學(xué)習(xí)率策略找到最優(yōu)權(quán)重空間。
隨機(jī)加權(quán)平均權(quán)重更新公式
每次學(xué)習(xí)率循環(huán)結(jié)束的時(shí)候兼贡,第二個(gè)模型的當(dāng)前權(quán)重會(huì)被用于更新正在運(yùn)行的平均模型的權(quán)重攻冷,即對(duì)已有的平均權(quán)重和第二個(gè)模型產(chǎn)生的新權(quán)重進(jìn)行加權(quán)平均(左圖中的公式)。采用這個(gè)方法遍希,訓(xùn)練時(shí)等曼,只需要訓(xùn)練一個(gè)模型,存儲(chǔ)兩個(gè)模型凿蒜。而預(yù)測(cè)時(shí)禁谦,只需要一個(gè)當(dāng)前的平均模型進(jìn)行預(yù)測(cè)。用這個(gè)模型做預(yù)測(cè)废封,比前面提到的方法州泊,速度快得多。之前的方法是用集合中的多個(gè)模型做預(yù)測(cè)漂洋,然后對(duì)多個(gè)預(yù)測(cè)結(jié)果求平均遥皂。
實(shí)現(xiàn)
該論文的作者提供了他們自己的實(shí)現(xiàn)力喷,這個(gè)實(shí)現(xiàn)是用PyTorch完成的。
當(dāng)然演训,著名的fast.ai庫(kù)也實(shí)現(xiàn)了SWA弟孟。每個(gè)人應(yīng)該都在使用這個(gè)庫(kù)。如果你還沒(méi)有看到這個(gè)課程样悟,請(qǐng)點(diǎn)擊此鏈接拂募。
原文鏈接: