【AutoML】进化算法如何用于自动模型搜索(NAS)
大家好,歡迎來到專欄《AutoML》,在這個專欄中我們會講述AutoML技術在深度學習中的應用,這一期講述進化算法用于模型搜索的基本概念和流程。
作者&編輯 | 言有三
一直以來,網絡結構的設計是一個非常需要經驗且具有挑戰性的工作,研究人員從設計功能更加強大和更加高效的模型兩個方向進行研究,隨著各類經典網絡設計思想的完善,如今要手工設計出更優秀的模型已經很難,而以AutoML為代表的自動化機器學習技術就成為了大家關注的熱點,本期我們介紹基于進化算法的方法。
1 進化算法簡介
進化算法是一類算法的統稱,是模擬自然選擇和遺傳等生物進化機制的一種搜索算法,其中最為我們熟悉的一類就是遺傳算法。
各類進化算法本質上都是迭代算法,其中涉及到幾個最基本的概念和流程,首先作出解釋:
(1) 種群。所謂種群,其實就是解空間中的一個子集,即若干個模型。
(2) 個體。所謂個體,就是其中一個解,即某一個模型。
(3) 編碼。所謂編碼,就是將搜索對象用計算機語言描述,比如將網絡結構用固定長度的二進制字符串表示。
基于進化算法搜索的迭代過程如下:
在以上搜索過程中,每一次迭代操作就是從一組解到更好的一組解,它要解決的最核心的問題是如何產生新一代。
每一次產生下一代需要3個步驟,即選擇,交叉,變異:
(1) 選擇過程,要實現的就是從群體中選擇更優的對象,比如精度更高的模型。
(2) 交叉過程,它就是要實現不同優秀對象的信息交換,比如兩個好模型的模塊交換。
(3) 變異過程,它是對個體的微小改變,相對于交叉過程,能引入更多的隨機性,有助于跳出局部最優解。
關于進化算法的具體細節和種類,已經超出了本文的內容,讀者可以單獨閱讀資料來學習進化算法。
2 基于進化算法的網絡搜索
使用進化算法來進行網絡搜索,要完成的步驟就是:
下面我們以Genetic CNN[1]算法作為案例來解讀如何實現前兩個步驟,該網絡關心的是block級別的搜索。
2.1 網絡編碼
首先我們來看網絡編碼方式,它要完成的是將模型結構用二進制進行編碼,其中最簡單的方式就是用固定長度的字符串進行表示。
下面我們只考慮卷積拓撲結構本身,一個層稱之為一個Stage,它們使用池化方式進行連接,Stage本身不改變特征圖大小,并且內部卷積操作具有相同的卷積核和通道數。
假如一個網絡包括S個Stage,其中每一個Stage包括Ks個節點,總共有1+2+...+(Ks ?1)個連接,因此也需要這么多位進行表示。
如下圖中Stage 1,有4個節點,則總共有6位進行表示,其中1表示A2與A1之間有連接,00表示A3與A1,A2之間沒有連接,111表示A4與A1,A2,A3都有連接。下圖中的Stage 2,有5個節點,則總共有10位進行表示。
下圖則展示了K=4時,VGGNet,ResNet,DenseNet網絡結構的示意及其編碼向量。
2.2 種群迭代
有了編碼過程后,接下來就可以進行種群迭代, 具體來說就是實現3個步驟,選擇,交叉與變異,其中整個流程的偽代碼如下。
T表示要迭代次數,N就是產生的個體數,初始時每一個bit都從伯努利分布中采樣進行隨機初始化,并計算初始識別精度。
每一次的迭代中,首先使用俄羅斯轉盤選擇法選擇其中精度較高的模型,然后兩兩配對進行交叉(為了保證拓撲結構,交叉的最小單元是Stage),最后對沒有交叉的個體進行變異,評估精度,再進行下一次的迭代。
最終的輸出結果就是一系列個體和識別精度。
由于以上訓練過程中計算量非常大,因此訓練時首先在較小的數據集(如MNIST,CIFAR10)上訓練,然后再遷移到更大的數據集(如ImageNet)。
下圖展示了學習到的兩個網絡結構,它的特點是,在網絡淺層,類似于AlexNet和VGGNet,在網絡中間層,類似于GoogleNet,在網絡深層,類似于ResNet。
上述算法具有一定局限性,比如每一層內卷積核大小和通道數固定,這是后續可以改進的地方,更多工作請參考[2,3]。
3 關于模型優化
公眾號寫過很多的模型解讀了,如下是一些文章總結和直播鏈接以及資源下載。
【完結】總結12大CNN主流模型架構設計思想
「總結」言有三&天池深度學習模型設計直播匯總,贈超過200頁課件
并且最近也出了一本新書,供對模型設計和優化感興趣的朋友閱讀。
言有三新書來襲!業界首次深入全面講解深度學習模型設計
知識星球中最重要的板塊就是模型結構1000變板塊,比公眾號的內容更深更廣。其中的模型優化部分主要包括緊湊模型的設計,剪枝,量化,知識蒸餾,AutoML等內容的詳細解讀,感興趣可以移步。
[1]?Xie L, Yuille A L. Genetic CNN[C]. international conference on computer vision, 2017.
[2] Miikkulainen R, Liang J, Meyerson E, et al. Evolving Deep Neural Networks[J]. arXiv: Neural and Evolutionary Computing, 2017: 293-312.
[3] Real E, Moore S, Selle A, et al. Large-scale evolution of image classifiers[C]. international conference on machine learning, 2017: 2902-2911.
總結
本次我們簡單介紹了進化算法在模型的設計和優化中的基本流程,介紹了基于block作為最小搜索單元的代表性框架,但并沒有對各種粒度的算法進行介紹。更多模型設計和優化,AutoML的內容,請大家移步有三AI知識星球長期學習。
有三AI知識星球
知識星球是有三AI的付費內容社區,里面包括各領域的模型學習,數據集下載,公眾號的付費圖文原稿,技術總結PPT和視頻,知識問答,書籍下載,項目推薦,線下活動等資源,了解詳細請閱讀以下文章:
【雜談】有三AI知識星球一周年了!為什么公眾號+星球才是完整的?
【雜談】萬萬沒想到,有三還有個保密的‘朋友圈’,那里面都在弄啥!
轉載文章請后臺聯系
侵權必究
往期精選
【AutoML】如何選擇最合適的數據增強操作
【AutoML】激活函數如何進行自動學習和配置
【AutoML】歸一化(Normalization)方法如何進行自動學習和配置
【AutoML】優化方法可以進行自動搜索學習嗎?
【AutoML】損失函數也可以進行自動搜索學習嗎?
【AutoML】如何使用強化學習進行模型剪枝?
【AutoML】強化學習如何用于模型量化?
【AutoML】強化學習如何用于模型蒸餾?
【AutoML】強化學習如何用于自動模型設計(NAS)與優化?
【AutoML】當前有哪些可用的AutoML平臺?【星球知識卡片】殘差網絡家族10多個變種學習卡片,請收下!
【星球知識卡片】移動端高效率的分組網絡都發展到什么程度了?
【星球知識卡片】注意力機制發展如何了,如何學習它在各類任務中的應用?
【星球知識卡片】模型剪枝有哪些關鍵技術,如何對其進行長期深入學習
【星球知識卡片】模型量化的核心技術點有哪些,如何對其進行長期深入學習
【星球知識卡片】模型蒸餾的核心技術點有哪些,如何對其進行長期深入學習
總結
以上是生活随笔為你收集整理的【AutoML】进化算法如何用于自动模型搜索(NAS)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【每周CV论文】深度学习文本检测与识别入
- 下一篇: 【星球知识卡片】图像生成都有哪些核心技术