論文閱讀筆記20.05-第二週

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也會有效果,但是效果沒有優化算法好就是了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章