ICML新研究提出泛化能力評估新指標:直接上向量余弦距離就OK,還開源了相關(guān)代碼
研究指出,網(wǎng)絡(luò)的泛化能力,可以通過“層旋轉(zhuǎn)”來評判。
安妮 郭一璞 發(fā)自 凹非寺
量子位 出品 | 公眾號 QbitAI
如何去評價一個神經(jīng)網(wǎng)絡(luò)的泛化能力?
一篇出自比利時天主教魯汶大學的研究發(fā)表在了ICML 2019識別和理解深度學習現(xiàn)象Workshop上。
研究指出,網(wǎng)絡(luò)的泛化能力,可以通過“層旋轉(zhuǎn)”來評判。
所謂層旋轉(zhuǎn),是指神經(jīng)網(wǎng)絡(luò)中每一層的權(quán)重向量與初始化之間夾角余弦的變化,被研究人員可以當成衡量泛化性能強弱的指標。
研究人員公布了在訓練期間控制層旋轉(zhuǎn)工具的代碼,表示這項工作“可以大大減少當前調(diào)整超參數(shù)的難度”:
也就是說,可以通過最少的超參數(shù)調(diào)整,獲得最佳的神經(jīng)網(wǎng)絡(luò)性能。
在Reddit論壇上,有人指出這是一項“超級有趣的實證結(jié)果”,也有人表示這項研究啟發(fā)出了眾多新思考。
層旋轉(zhuǎn)有什么用
在論文Layer rotation: a surprisingly powerful indicator of generalization in deep networks?中,研究詳細解釋了層旋轉(zhuǎn)背后的探索之路。
神經(jīng)網(wǎng)絡(luò)的泛化能力受訓練它的優(yōu)化程序的影響,因此確定這個程序中哪些因素影響泛化是個重要問題。
在這篇論文中,研究人員提出了一種全新的算法:Layca((LAYer-level Controlled Amount of weight rotation),能夠直接控制神經(jīng)網(wǎng)絡(luò)的優(yōu)化算法通過每層網(wǎng)絡(luò)的學習速率參數(shù),進而控制層旋轉(zhuǎn)。
也就是說,使用了Layca算法,可以通過它的學習速率參數(shù),控制每一層網(wǎng)絡(luò)中每一步權(quán)重旋轉(zhuǎn)。
Layca算法的工作流程是下面這樣的:
研究人員表示,用這種新的算法,可以達到比較明顯的控制效果,同時,泛化能力也會產(chǎn)生巨大的差異,準確度差異達30%。
隨后,他們利用Layca,進一步對層旋轉(zhuǎn)架構(gòu)進行研究,開發(fā)監(jiān)測和控制層旋轉(zhuǎn)的工具。
研究人員采用SGD(隨機梯度下降)作為默認優(yōu)化器,用Layca來改變相對轉(zhuǎn)速和全局旋轉(zhuǎn)速率值,分別對5種網(wǎng)絡(luò)架構(gòu)和數(shù)據(jù)復雜性不同的神經(jīng)網(wǎng)絡(luò)進行研究,它們分別為:
他們繪制出一張在不同層旋轉(zhuǎn)速率中層旋轉(zhuǎn)曲線(CFR)與相應(yīng)測試精度(η)之間的關(guān)系。
在下圖中,橫軸代表迭代次數(shù),縱軸代表夾角的余弦,曲線顏色從淺到深代表網(wǎng)絡(luò)最后一層與第一層,最終結(jié)果如下:
可以看出,每層的層旋轉(zhuǎn)越大,神經(jīng)網(wǎng)絡(luò)的泛化能力就越好。
由此看來,研究人員認為,層旋轉(zhuǎn)這個指標,可以用來直接來判斷網(wǎng)絡(luò)的泛化能力。
層旋轉(zhuǎn)的影響
之后,除了Layca,研究者們還用SGD做了類似的實驗。根據(jù)實驗結(jié)果,得出了幾個結(jié)論:
對于SGD學習率
學習率參數(shù)直接影響層旋轉(zhuǎn)速率,并影響更新的大小。
從下面五個任務(wù)中SGD訓練期間不同學習率對層旋轉(zhuǎn)曲線影響的實驗結(jié)果圖來看,測試精度隨著層旋轉(zhuǎn)而增加,到臨界點后開始減少。
對于權(quán)重衰減
權(quán)重衰減的范數(shù)會增加由給定訓練步驟引起的旋轉(zhuǎn)量,根據(jù)下面的實驗結(jié)果圖可以看出,所有層的權(quán)重在初始化時達到1的余弦距離,并且得到的測試性能與使用Layca獲得的性能相當。
對于學習率預(yù)熱
高學習率會產(chǎn)生突然的層旋轉(zhuǎn),不會影響訓練損失。
在學習率預(yù)熱方面,研究者用ResNet-110做實驗,在CIFAR-10數(shù)據(jù)集上訓練。使用的預(yù)熱策略是以小10倍的學習速率開始,線性增加逐漸達到指定的最終學習率。
結(jié)果如下圖:
SGD產(chǎn)生不穩(wěn)定的層旋轉(zhuǎn),始終轉(zhuǎn)化為無法提高訓練精度。使用預(yù)熱可以大大減少這些不穩(wěn)定性,在Epoch超過25之前,訓練京都沒有顯著提高。
而Layca表現(xiàn)更優(yōu)。歸功于Layca的控制能力,它穩(wěn)定性較高,并且在不需要預(yù)熱的情況下達到高泛化性能。
對于自適應(yīng)梯度法
研究者們基于ICLR 2015論文《A method for stochastic optimization》中的算法,在C10-CNN1任務(wù)上做了實驗。
根據(jù)第10,第50和第90百分位每個層的狀況可以看出,自適應(yīng)梯度方法可能對層旋轉(zhuǎn)產(chǎn)生巨大影響,自適應(yīng)梯度方法使用的參數(shù)級統(tǒng)計數(shù)據(jù)主要在層之間變化,而在層內(nèi)可忽略不計。
另外,對比自適應(yīng)梯度法在訓練前面的5個任務(wù)和自適應(yīng)梯度法層旋轉(zhuǎn)與SGD誘導層旋轉(zhuǎn)的結(jié)果,可以發(fā)現(xiàn),自適應(yīng)梯度法能夠讓Layca達到SGD的泛化能力。
根據(jù)自適應(yīng)梯度法、SGD+權(quán)重衰減和SGD+L2正則化在5個訓練任務(wù)上的表現(xiàn)得出,SGD可以通過Layca實現(xiàn)自適應(yīng)梯度法的訓練速度。
對于中間層特征
那么,基于這些層旋轉(zhuǎn)和各屬性之間的聯(lián)系,如何去具體的解釋層旋轉(zhuǎn)呢?
研究者們做了另一個實驗,在一個簡化的MNIST數(shù)據(jù)集上訓練多層感知機(MLP),從相同的初始化狀態(tài)開始,我們用Layca訓練四種學習率不同的網(wǎng)絡(luò),讓四種不同的層旋轉(zhuǎn)配置均達到100%的訓練準確度,同時擁有不同的泛化能力。
將圖旋轉(zhuǎn)對中間層特征的影響畫出來就會發(fā)現(xiàn):
層旋轉(zhuǎn)不會影響學習哪些特征,而是影響在訓練過程中學習的程度。層旋轉(zhuǎn)越大,特征越突出,初始化可檢索的越少,而當層旋轉(zhuǎn)接近1的時候,網(wǎng)絡(luò)的最終權(quán)重消除了初始化的所有殘余。
層旋轉(zhuǎn)與特征學習程度之間的這種聯(lián)系表明:完全學習中間層特征對于達到100%的訓練準確性是不必要的,但訓練過程如果完全學習了中間層特征,可以產(chǎn)生更好的泛化性能。
傳送門
Layer rotation: a surprisingly powerful indicator of generalization in deep networks?
https://arxiv.org/abs/1806.01603v2
代碼:
https://github.com/ispgroupucl/layer-rotation-paper-experiments
層旋轉(zhuǎn)工具:
https://github.com/ispgroupucl/layer-rotation-tools



