天天看點

論文閱讀筆記20.05-第二周Angle-based Search Space Shrinking for Neural Architecture SearchNAS Bench 201AutoTune: Automatically Tuning Convolutional Neural Networks for Improved Transfer Learning

Reading 20.05 Week 2

  • Angle-based Search Space Shrinking for Neural Architecture Search
        • 文獻回想
        • 論文想法
  • NAS Bench 201
  • AutoTune: Automatically Tuning Convolutional Neural Networks for Improved Transfer Learning

Angle-based Search Space Shrinking for Neural Architecture Search

這篇文章主要講述的是一種通過減小搜尋域的方法來提高NAS搜尋網絡性能的故事。

作者認為,他找到了一種公平、準确、且可以直接加到各種NAS算法上的逐漸減小搜尋域的算法。

  • 目的:改善搜尋結果
  • 方法:減小搜尋域
  • 因果關系:如果能保證小搜尋域包含了最優結果,那更小的搜尋空間必然是更好搜尋的,哪怕用随機機率都會高一點。作者用了幾個搜尋域來證明這一點。
  • 難點:縮小的時候用什麼東西去保證沒把最優解删掉

文獻回想

關于逐漸減小搜尋域,之前也有一些相關的文章了,其中有像PDarts和SGAS這種在搜尋過程中動态調節搜尋域,也有像RegNet一樣去證明某個搜尋域在統計意義上更優秀,證明某些人類經驗是可保留的。前者是針對darts的特定方法,而後者則更多是在通道數、深度這些問題上讨論,對操作層面沒有太大幫助。

關于非精度名額,打破NAS反複嘗試的思路而引入一些其他方面的啟發資訊,算是一種貪心的思想,重點就是要證明自己選取的這個名額确實是高度相關的。之前常用的名額一個是精度,一個就是重要度(類似于Darts的結構參數)。

論文想法

為什麼選用角度:聽作者引用其他文章的意思,由于BN層的存在,權重按倍數進行放縮已經沒有意義了,是以初始權重與目前權重的角度可以很好地反映網絡的訓練泛化程式。我也不知道為什麼,我覺得需要回頭看下參考文獻。

角度有用嗎? 從實驗上來講,是有用的。在短暫訓練的超網絡中去采樣網絡,用角度與單獨充分訓練的精度計算Kendall相關系數,會比用繼承權重的精度去計算要高、而且相關系數多次實驗的穩定性也好、角度的計算量也不大、保留下來的op也在統計意義上更好……總得來說意味着角度越大的網絡相比目前精度最高的網絡更有希望。

至于怎麼用網絡的角度去當作篩選op的标準,就是拿一堆包含這個op的網絡的角度的平均來當作這個op的名額值。

既然角度這麼有用,為什麼不直接用角度來欽定? 個人認為是容錯率的問題,角度值大的op有較高的機率是最後剩下的op,但是這個相關度也是有限的,要求高一點的話也就需要用NAS的嘗試學習方法去得到最好的結構。用粗略但快速的名額進行過濾,而後用精細的搜尋最終确定。

不對,如果相信角度的相關系數更高,就沒必要用其他算法了。

作者做到與各種NAS算法融合了嗎? 坦率來說,我個人是覺得他的說法有一些誇張的,因為他與Darts等其他算法的結合實驗是一種兩步實驗,即先删搜尋域、再開始用原算法搜尋。這與我自己之前想的“逐漸”一詞定義有點不一樣,他的逐漸是指我先删減的過程中,是邊訓練邊慢慢删的。縮減時的過程與後面的算法無關,是均勻采樣的超網絡訓練算法。但是,在縮減過搜尋域之後确實比之前的結果要提升一些。

NAS Bench 201

作者認為,目前許多NAS算法在搜尋域、訓練政策上都不一緻,互相之間的可比性比較低,是以建構一種同一的流程與評判标準,才能讓研究者更加關注于搜尋政策本身之上。同時,在研究過程中,單個模型的評價什麼的不再需要重頭訓,可以相當程度上提升研究效率。

需要統一的方面:

  • 搜尋域與操作集合
  • 單個模型的訓練配置
  • 訓練、驗證集的劃分方法

這個資料集裡面有什麼?

  • 在訓練、測試、驗證集上的損失和精度
  • 每個模型的參數量、flops和latency
  • 模型訓練每個epoch時的精度和損失,可展現趨勢或是用于預測學習
  • 每個模型訓完之後的權重

作者在這個搜尋域與訓練配置下對許多算法進行了複現,并發現

  • 不用權值共享的結果更好,用權值共享的話,BN層最好隻用目前批統計
  • Darts很容易就過拟合到全skip

總之,這是一個試驗新的基礎NAS搜尋算法的好地方,因為它排除了搜尋域的幹擾。另外用這個資料集去進行實驗分析應該也比較友善吧,感覺要做深還是要往底層問題去思考。

AutoTune: Automatically Tuning Convolutional Neural Networks for Improved Transfer Learning

在遷移學習的時候我們往往會finetune最後幾層。因為網絡往往是針對源資料集設計的,與目标資料集可能會不一緻,我們簡單地把最後一層的softmax類别數改變可能并不夠。是否需要對網絡結構進行改變?考慮到淺層應該代表的是基礎特征,深層表征的是抽象特征,我們要改變的便是深層的結構,即從右向左改變。

對于分類網絡而言,最後的fc+softmax層是肯定要改變的,有fc層有幾個、有多少神經元都是需要決定的量,而再往前,卷積和池化,則要決定修改最後幾個卷積(池化)層,每個層改成什麼樣子。

文章用貝葉斯優化的方法進行調參,我了解的貝葉斯優化至少得是在固定參數個數的情況下進行吧,但是這裡甚至每次的參數個數可能都不一樣?我覺得這裡算法的表述上存在一些問題。

文章在三個小資料集上進行了實驗,說明了對後面幾層進行一下調整會有比較好的效果。RS也會有效果,但是效果沒有優化算法好就是了。

繼續閱讀