【AutoML】连续可微分架构如何用于网络结构搜索
大家好,歡迎來到專欄《AutoML》,在這個專欄中我們會講述AutoML技術在深度學習中的應用,這一期講述可微分架構用于模型搜索的基本概念和流程。
作者&編輯 | 言有三
前面兩期我們給大家介紹了基于強化學習和進化算法的模型結構搜索,它們的共同特點就是搜索空間是連續的,并且計算量很大,本期我們介紹可微分架構的網絡搜索,其搜索空間是連續的,并且相比強化學習和進化算法具有計算優勢。
1 簡介
所謂的可微分,指的就是候選的網絡結構單元,或者說搜索空間不是離散的,而是連續的,這樣帶來的好處就是可以通過梯度下降算法直接進行優化。
這樣的搜索空間,優化的不只是有限的濾波核的尺寸或者卷積連接的模式,而是可以發現復雜的拓撲結構,并且卷積和循環網絡可以同時實現。
這樣一來,強化學習中用于產生結構單元的RNN Controller不需要了,一些框架中的代理模型也不需要了,整個流程更加簡單。
2 基于可微分架構的網絡搜索
下面我們以一個經典的算法來對使用可微分架構進行網絡搜索的基本流程進行介紹,方法為DARTS(Differentiable Architecture Search),它通過搜索最優的cell,然后將cell組合成大網絡。
2.1 基本思想
由于網絡的空間是巨大的,首先要進行一些約束,主要是針對cell的約束。
(1) 一個cell必須由輸入節點,中間節點,輸出節點和邊構成,并且DARTS規定了輸入節點有兩個,輸出節點有一個。之所以考慮到兩個,是為了兼容CNN和RNN。對于CNN來說,就是前面兩層輸出,對于RNN,就是輸入和隱藏層狀態。
(2) 輸出節點是所有中間節點的通道拼接結果。
結構示意圖如下:
圖(a)就是一個未經初始化的結構,其中沒有展示兩個輸入節點,它們會一起輸入到0,1和2都是中間節點,3是輸出節點。圖(b)中兩個節點之間不同的顏色表示不同的轉換操作,它們一起用加權的方式從輸入到輸出產生結果,如下式。
其中o表示不同操作,i表示當前節點,j表示序號小于i的所有節點。每一個操作被選中的概率用不同操作的softmax概率加權表示,如下:
如此一來,選擇不同操作及其概率就是一個連續的過程,α就是要優化的參數,它和連接權重矩陣一樣都可以用梯度下降算法進行優化。
2.2 優化過程
上面已經構建好了cell的結構以及需要搜索的連續參數空間,接下來就是進行優化,包括參數α和卷連接權重,這是一個雙層優化問題,具體來說分兩個步驟進行:
(1) 訓練時,固定α參數矩陣,只優化連接權重W。
(2) 驗證時,固定W參數矩陣,只優化α參數矩陣。
如此循環迭代,直到滿足終止條件,下面是偽代碼表示。
值得注意的是,在學習過程中,訓練集和驗證集比例大小為1:1,這與大部分任務設置不同。
在學習完α參數矩陣后,只保留其中概率值最大的操作,就得到了最終的結構單元,如上圖中(c)到(d)的過程。
下圖展示了在CIFAR10上學習到的一些單元:
其中normal cell就是不改變特征圖大小,reduction就是改變特征圖大小。
3 關于模型優化
公眾號寫過很多的模型解讀了,如下是一些文章總結和直播鏈接以及資源下載。
【完結】總結12大CNN主流模型架構設計思想
「總結」言有三&天池深度學習模型設計直播匯總,贈超過200頁課件
并且最近也出了一本新書,供對模型設計和優化感興趣的朋友閱讀。
言有三新書來襲!業界首次深入全面講解深度學習模型設計
知識星球中最重要的板塊就是模型結構1000變板塊,比公眾號的內容更深更廣。其中的模型優化部分主要包括緊湊模型的設計,剪枝,量化,知識蒸餾,AutoML等內容的詳細解讀,感興趣可以移步。
[1] Liu H, Simonyan K, Yang Y, et al. DARTS: Differentiable Architecture Search[J]. arXiv: Learning, 2018.
總結
本次我們簡單介紹了基于連續可微分空間搜索的方法在模型的設計和優化中的基本流程,介紹了基于block作為最小搜索單元的代表性框架,但并沒有對各種粒度的算法進行介紹。更多模型設計和優化,AutoML的內容,請大家移步有三AI知識星球長期學習。
有三AI知識星球
知識星球是有三AI的付費內容社區,里面包括各領域的模型學習,數據集下載,公眾號的付費圖文原稿,技術總結PPT和視頻,知識問答,書籍下載,項目推薦,線下活動等資源,了解詳細請閱讀以下文章:
【雜談】有三AI知識星球一周年了!為什么公眾號+星球才是完整的?
【雜談】萬萬沒想到,有三還有個保密的‘朋友圈’,那里面都在弄啥!
轉載文章請后臺聯系
侵權必究
往期精選
【AutoML】如何選擇最合適的數據增強操作
【AutoML】激活函數如何進行自動學習和配置
【AutoML】歸一化(Normalization)方法如何進行自動學習和配置
【AutoML】優化方法可以進行自動搜索學習嗎?
【AutoML】損失函數也可以進行自動搜索學習嗎?
【AutoML】如何使用強化學習進行模型剪枝?
【AutoML】強化學習如何用于模型量化?
【AutoML】強化學習如何用于模型蒸餾?
【AutoML】強化學習如何用于自動模型設計(NAS)與優化?
【AutoML】進化算法如何用于自動模型搜索(NAS)
【AutoML】當前有哪些可用的AutoML平臺?
【星球知識卡片】殘差網絡家族10多個變種學習卡片,請收下!
【星球知識卡片】移動端高效率的分組網絡都發展到什么程度了?
【星球知識卡片】注意力機制發展如何了,如何學習它在各類任務中的應用?
【星球知識卡片】模型剪枝有哪些關鍵技術,如何對其進行長期深入學習
【星球知識卡片】模型量化的核心技術點有哪些,如何對其進行長期深入學習
【星球知識卡片】模型蒸餾的核心技術點有哪些,如何對其進行長期深入學習
【星球知識卡片】圖像生成都有哪些核心技術,如何對其進行長期深入學習
【星球知識卡片】AutoML都有哪些核心技術,如何對其進行長期深入學習
總結
以上是生活随笔為你收集整理的【AutoML】连续可微分架构如何用于网络结构搜索的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【杂谈】2020年如何长期、系统,全面地
- 下一篇: 【完结】如何学习AutoML在模型优化中