[NAS論文]解析神經架構搜索(NAS)中權重共享的影響
【前言】
現在的NEURAL?ARCHITECTURE?SEARCH(NAS)基本都采用權重共享的supernet方案,但是其中原理幾何,有什么局限,鮮有人提及,權重分配并沒有理論保障,其影響也沒有得到很好的研究,大部分同學都是用的爽就行,接下來從兩篇同個實驗室的論文來看看權重共享機制,到底怎么影響NAS搜索到的架構。以下文章中說法上,child model = 子架構 = 子模型。
DEEPER?INSIGHTS INTO?WEIGHT?SHARING IN?NEURAL?ARCHITECTURE?SEARCH
論文地址:https://arxiv.org/abs/2001.01431
【簡介】
基于對整個大搜索空間有效的方案對于小空間也一樣有效的思想,和基于計算成本的考慮,本文用了一個非常小的搜索空間,只有4*4*4種子模型,來訓練一個超網絡,順便探究權重共享到底怎么樣影響到搜索到的架構。
觀察到幾點:
1、子模型的排序在不同每次訓練都不太一樣,波動大,事實上,不穩定性不僅普遍存在于不同的運行次數中,也存在于同一次運行中連續的訓練時期epochs。
2、然后,適當的減小權重共享的密度,可以更穩定地找到更好的子模型。下圖是整個搜索空間的示意圖,基于DARTS。采樣用uniformly sample,每個batch只訓1個子模型。數據集使用CIFAR-10,train from scratch 的超參設置和訓超網絡的一致,batch size 256,學習率余弦下降,epochs 200。
【幾個需要解決的問題】
1、發現的子模型與搜索空間中最好的子模型的準確性相差多遠?
2、在多次搜索過程中能夠穩定地找到最好的子模型嗎?
3、權重共享如何影響發現的子模型的準確性和穩定性?
【本文用到的評價指標】
1、S-Tau:度量從多個實例生成的模型排序的穩定性,
2、GT-Tau:可以理解為kendall Tau,可以理解為超網絡的子模型架構排序和這些架構的真實acc排序的相關性
3、TnR:它是用來衡量一個實例在尋找最優秀的子模型方面有多出色。TnR是通過從一個實例生成的排序中中選擇前n個子模型,并找出這n個子模型的最優ground truth 排序
【權重共享的訓練方式穩定嗎】
就像一個好的深度學習模型可以不斷收斂到一個具有相似性能的點一樣,權重共享NAS也期望具有這樣的穩定性,這里做了幾個實驗,初始化不同(不同的seed)、重復訓練固定排序的64個子模型、random訓練64個子模型。【這里好像沒有保證每次訓練的batch一致,也存在一定隨機性其實】,希望它們會在相同的epochs后產生相同的排序,從下表結果來看,第一列,不同的初始化,對權重共享的訓練影響很大,最大最小的Tau差很多,不同的訓練順序對排序的影響也很大。
從另一個角度,單個實例連續的epoch,其實子模型的排序也在波動,如下圖:
在順序/洗牌這個實驗中,因為重復了10次,所以有10次的rank表,對每個表看看每次的rank怎么樣?下圖可以看到雖然權重共享是不穩定的,但生成的排名可以用來快速過濾出表現不佳的子模型,并可能用于進行搜索空間修剪,例如,逐步丟棄排名最低的子模型,只進一步訓練排名最高的,就是權重共享還是有效的
【rank 波動來源】
選擇初始化不同的這組實驗詳細來看看,在不同的epoch階段,看看權重共享時候的每個子模型的波動情況,再看看如果把這些子模型繼承超網絡權重后finetune一定step后表現怎么樣,如下圖,鮮艷顏色的線代表的是ground truth高的子模型,深顏色的線代表ground truth低的子模型架構,從圖上可以看到,無論是在第100epoch還是在最后200epoch的時候,在訓練共享權重的超網絡時候,每個架構的acc波動很大,并且在某些step,有些差的模型acc還比f好的模型acc高,而在finetune的時候,好的壞的倒是很確定,也正確。
可以感覺到不同架構訓練再相互干擾并且更加厲害的是下圖,發現如果按固定順序架構訓練,可以看到呈現一定的周期性,大概就是剛訓的架構acc會上去,然后因為又訓了別的架構,權重共享相互影響下,這個架構acc又下去了,當然如果是亂序的話,這個周期性就沒有,但是大致也是起起伏伏:
【減小權重共享的密度有用嗎】
這里采用兩種減小權重共享密度方案、組共享/部分層共享
【組共享】
簡單說,把64個訓練的架構分m組,每個組間權重共享,不同的組權重不同享權重,這里又有兩種分法,一種是random分,看運氣,另一種是按相似性分:可以看到隨緣分的效果不管分多少組效果都很隨緣,甚至更差,按相似性分卻在不停的提升:
這里認為說,訓練A架構對B架構是促進作用,但是對于C架構卻在抑制,選擇合理的架構共享權重有利用這些架構更好被訓練,【所以是不是也解釋了為啥bignas把最大的架構丟進去一起訓有效果】
【部分層共享】
當k = 0時,只有前兩個conv層是共享的。當k = 4時,除最后的完全連接層外的所有層都被共享。結果也很一目了然,共享層的數目越少,相互影響越小,rank排序更正確
How Does Supernet Help in Neural Architecture Search?
【核心要點】
1、權重共享對于某些搜索空間效果好,對有些搜索空間無效
2、超網絡對某些架構存在偏好
3、通過剪枝搜索空間來增加找到最佳架構的概率
【簡介】
超網絡毫無疑問是基于在超網絡中驗證子架構的acc是這個子架構的真實acc這樣一個假設,雖然一直被質疑,但是本文通過實驗發現確實超網絡對某些op、連接和模型尺寸存在偏好。并且發現,權重共享的超網絡能夠找到排名前10%的架構,但是很難找到最好那個。這文章也是uniformly sample
【實驗部分】
【長時間的訓練并不能保證一個更好的相關性rank】
直覺上會認為說,超網絡訓練的越充分,越能夠提供一個好的相關性排序,那是如此嗎?從下圖可以看到,DARTS-CIFAR10在64期訓練時相關性達到0.54,但隨著訓練時間的延長,相關性下降到0.2左右。對于PTB,相關性甚至可能是0。在top-k上也有類似的現象。盡管top-k對相關性的變化不是很敏感,但是當supernet訓練時間變長時,所選架構的性能仍然會下降。
從下圖也可以發現權重共享的有效性取決于搜索空間,并不是對所有類型的所有空間都有效
【減小權重共享的密度沒有用】
【權重共享存在偏好】
權值共享所帶來的偏見似乎是一致的,并且是基于權值共享本身的本質。看格子的深淺分布會發現用256epoch去預測1k/4k都是相關性挺高的
并且,權重共享偏好大模型,而事實上,具有大量參數(FLOPs)的架構通常具有較好的真實精度,并且上圖也顯示了NAS-Bench-101的ground truth performance與parameter size的相關性高達0.67【回顧另一篇論文Prioritized Architecture Sampling with Monto-Carlo Tree Search?,從下圖其實就能看到,FLOPs的增加比參數的增加對精度的貢獻更大。
【權重共享偏好3x3 conv】
下圖是supernet性能和ground truth性能之間的關系,顯然,權重共享更青睞Conv3x3。幸運的是,具有Conv3x3的架構確實具有相對較好的性能,【我覺得3x3本來就好,也不是超網絡刻意偏好】,這就是為什么NAS-Bench-101上的top-k相當好。在NAS-Bench-201上,權值共享仍然傾向于Conv3x3作為連接單元輸入節點到輸出節點的算子,但幾乎所有具有最高ground truth精度的架構都選擇跳躍連接,但是超網絡覺得跳層沒有1x1香,更不如3x3,【我懷疑直接跳層影響到了超網絡的訓練和參數分布】。
由于確定權重共享的頂層架構比較困難,以往的工作都是將權重共享作為一種修剪最壞的方法,希望改善搜索空間的性能分布,從而增加找到最優的可能性,權重共享在精簡后的搜索空間中仍然有效嗎?為了回答這個問題,看下圖,測試了權重共享的能力,降低搜索空間,總是訓練真實acc好的那些架構,但是NAS沒有獲得更多的收益。雖然top acc確實在上升,相關性系數就很迷,我覺得還是需要smart的裁剪空間方法更重要,
AI 卷積神經網絡 機器學習 深度學習 神經網絡
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。