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