0
雷鋒網(wǎng) AI 科技評論按:在本文中,數(shù)據(jù)科學研究人員 Max Pechyonkin 討論了最近兩篇有趣的論文,它們提供了一種簡單的方法,通過用一種巧妙的集成方式來提高任何給定神經(jīng)網(wǎng)絡的性能。這兩篇論文是:Garipov 等人的《DNNs 的損失表面、模式連接和快速集成》和 Izmailov 等人的《平均權值帶來更寬的極值和更好的泛化性》。
當然了,如果能先看看 Vitaly Bushaev 的《改善我們的處理學習率的方式》,接下來的閱讀將會更輕松。雷鋒網(wǎng) AI 科技評論全文編譯如下。
一般我們說的「集成」(ensemble),就是組合若干不同的模型,讓它們基于相同的輸入做出預測,接著通過某種平均化方法決定集成模型的最終預測。這個決定過程可能是通過簡單的投票或取均值,也可能是通過另一個模型,該模型基于集成模型的結果,學習預測正確值或標簽。嶺回歸是一種可以組合若干個不同預測的結果的方法,Kaggle 上衛(wèi)星數(shù)據(jù)識別熱帶雨林競賽的冠軍就使用過這一方法。
集成應用于深度學習時,組合若干網(wǎng)絡的預測以得到一個最終的預測。通常,使用好幾個不同架構的神經(jīng)網(wǎng)絡比較好,因為不同架構的網(wǎng)絡一般會在不同的訓練樣本上犯錯,因而集成的收益會更大。
當然,你也可以集成同一架構的模型,也許效果會出乎意料的好。就好比這篇快照集成的論文,作者在訓練同一個網(wǎng)絡的過程中保存了不同的權值快照,然后在訓練之后創(chuàng)建了同一架構、不同權值的集成網(wǎng)絡。這么做可以提升測試的表現(xiàn),同時也超省錢——因為你只需要訓練一個模型、訓練一次就好,只要記得隨時保存權值就行。
你可以仔細閱讀下文章開頭提到的那篇 Vitaly Bushaev 的關于學習率的文章。如果你到目前為止還沒有嘗試過周期性學習率,那你真該去試試,它正在成為當前效果最好的、也最標準的做法,它簡單易上手,計算量很輕,可以說非常事半功倍了。
上文列舉的所有例子都是模型空間內(nèi)的集成。組合若干模型,接著使用這些模型的預測以得到最終的預測結果。
而本文我想給大家介紹的論文中,作者提出了一種全新的權值空間內(nèi)的集成。該方法通過組合同一網(wǎng)絡在訓練的不同階段的權值得到一個集成,接著使用組合的權值做出預測。這種方法有兩個好處:
組合權重后,我們最終仍然得到一個模型,這有利于加速預測。
事實證明,這種方法勝過當前最先進的快照集成。
在了解這一方法是如何工作之前,我們首先需要理解損失平面(loss surface)和泛化的解(generalizable solution)。
第一個不得不提到的是,經(jīng)過訓練的網(wǎng)絡是高維權值空間中的一個點。對給定的架構而言,每個不同的網(wǎng)絡權值組合都代表了一個不同的模型。任何給定架構都有無窮的權重組合,因而有無窮多的解。訓練神經(jīng)網(wǎng)絡的目標是找到一個特定的解(權值空間中的點),使得訓練數(shù)據(jù)集和測試數(shù)據(jù)集上的損失函數(shù)的值都比較低。
在訓練期間,訓練算法通過改變權值來改變網(wǎng)絡并在權值空間中漫游。梯度下降算法在一個損失平面上漫游,該平面的海拔為損失函數(shù)的值。
坦白的講,可視化并理解高維權值空間的幾何特性非常困難,但我們又不得不去了解它。因為隨機梯度下降的本質(zhì)是,在訓練時穿過這一高維空間中的損失平面,試圖找到一個良好的解——損失平面上的一個損失值較低的「點」。不過后來我們發(fā)現(xiàn),這一平面有很多局部極值。但這些局部極值并不都有一樣好的性質(zhì)。
Geoffery Hinton:「為了處理一個 14 維空間中的超平面,可視化了一個 3 維空間,并對自己大聲說『十四』。每個人都是這樣做的。」(出處:coursera 課程)
平坦度可以用來衡量一個解的優(yōu)劣。其中的原理是,訓練數(shù)據(jù)集和測試數(shù)據(jù)集會產(chǎn)生相似但不盡相同的損失平面。你可以將其想象為測試平面相對訓練平面而言平移了一點。對窄的解來說,一個在測試的時候損失較低的點可能因為這一平移產(chǎn)生變?yōu)閾p失較高的點。這意味著窄的(尖銳的)解的泛化性不好——訓練損失低,測試損失高。另一方面,對于寬的(平坦的)解而言,這一平移造成的訓練損失和測試損失間的差異較小。
我解釋了兩種解決方案之間的區(qū)別,是因為這篇論文的提出的方法、也是我這篇文章重點介紹的方法,就能帶來討人喜歡的、寬的(平坦的)解。
最初,SGD 會在權值空間中跳出一大步。接著,由于余弦退火,學習率會逐漸降低,SGD 將逐漸收斂于某個局部解,算法將保存一個模型的「快照」,把它加入集成模型。接著學習率重置為高值,SGD 再次邁一大步,找到另一個局部極值,以此類推。
快照集成的周期長度為 20 到 40 個 epoch。較長的學習率周期是為了在權值空間中找到足夠具有差異化的模型,以發(fā)揮集成的優(yōu)勢。如果模型太相似,那么集成模型中不同網(wǎng)絡的預測將會過于接近,以至于集成并不會帶來多大益處了。
快照集成表現(xiàn)優(yōu)異,提升了模型的表現(xiàn),但快速幾何集成效果更好。
《DNNs 的損失表面、模式連接和快速集成》中提出的快速幾何集成 FGE 和快照集成非常像,但是也有一些獨特的特點。它們的不同主要有兩點。第一,快速幾何集成使用線性分段周期學習率規(guī)劃,而不是余弦變化。第二,F(xiàn)GE 的周期長度要短得多——2 到 4 個 epoch。乍一看大家肯定直覺上覺得這么短的周期是不對的,因為每個周期結束的時候的得到的模型互相之間離得太近了,這樣得到的集成模型沒有什么優(yōu)勢。然而作者們發(fā)現(xiàn),在足夠不同的模型之間,存在著損失較低的連通路徑。我們有機會沿著這些路徑用較小的步長行進,同時這些模型也能夠有足夠大的差異,足夠發(fā)揮集成的優(yōu)勢。因此,相比快照集成, FGE 表現(xiàn)更好,搜尋模型的步長更小(這也使其訓練更快)。
要從快照集成或 FGE 中受益,需要存儲多個模型,接著讓每個模型做出預測,之后加以平均以得到最終預測。因此,我們?yōu)榧傻念~外表現(xiàn)支付了更高的算力代價。所以天下沒有免費的午餐。真的沒有嗎?這就是隨機加權平均的用武之地了。
隨機權值平均只需快速集合集成的一小部分算力,就可以接近其表現(xiàn)。SWA 可以用在任意架構和數(shù)據(jù)集上,都會有不錯的表現(xiàn)。根據(jù)論文中的實驗,SWA 可以得到我之前提到過的更寬的極小值。在經(jīng)典認知下,SWA 不算集成,因為在訓練的最終階段你只得到一個模型,但它的表現(xiàn)超過了快照集成,接近 FGE。
SWA 的直覺來自以下由經(jīng)驗得到的觀察:每個學習率周期得到的局部極小值傾向于堆積在損失平面的低損失值區(qū)域的邊緣(上圖左側的圖形中,褐色區(qū)域誤差較低,點W1、W2、3分別表示3個獨立訓練的網(wǎng)絡,位于褐色區(qū)域的邊緣)。對這些點取平均值,可能得到一個寬闊的泛化解,其損失更低(上圖左側圖形中的 WSWA)。
下面是 SWA 的工作原理。它只保存兩個模型,而不是許多模型的集成:
第一個模型保存模型權值的平均值(WSWA)。在訓練結束后,它將是用于預測的最終模型。
第二個模型(W)將穿過權值空間,基于周期性學習率規(guī)劃探索權重空間。
在每個學習率周期的末尾,第二個模型的當前權重將用來更新第一個模型的權重(公式如上)。因此,在訓練階段,只需訓練一個模型,并在內(nèi)存中儲存兩個模型。預測時只需要平均模型,基于其進行預測將比之前描述的集成快很多,因為在那種集成中,你需要使用多個模型進行預測,最后再進行平均。
論文的作者自己提供了一份 PyTorch 的實現(xiàn) https://github.com/timgaripov/swa。
此外,基于 fast.ai 庫的 SWA 可見 https://github.com/fastai/fastai/pull/276/commits。墻裂安利這個庫!
via towardsdatascience.com,雷鋒網(wǎng) AI 科技評論編譯
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權禁止轉載。詳情見轉載須知。