![](http://static.javashuo.com/static/loading.gif)
編者按:隨着深度學習的發展,神經網絡結構的設計逐漸由手工設計轉變爲算法自動設計。在近期的神經網絡設計(Neural Architecture Search, NAS)研究中,現有的方法存在必定缺陷,結果每每不能真正體現出衆多子網絡正確的排序關係。爲解決這一問題,微軟亞洲研究院的研究員們提出了基於優先路徑蒸餾的網絡結構搜索方法。採用這一方式選出的網絡在 ImageNet 上的分類準確率達到了80.0%, 超越了現有的 EfficientNet-B0/B1 和 MobileNetV3。該論文已被 NeurIPS 2020 接收。git
從數億數量級的神經網絡結構中搜索出高性能的網絡,是一個充滿挑戰但又使人嚮往的研究任務。正如深度學習變革了傳統的手工圖像特徵設計,神經網絡結構的設計也正在逐漸由手工設計轉變爲算法自動設計。github
面對數以億級的網絡結構,將每個可能的結構都訓練收斂,並選擇其中最好的結構是不現實的。在近期的神經網絡設計研究中,一個被普遍使用的解決方法是先訓練一個包含了全部可能結構的超網(hypernetwork),當測試某一個網絡結構的性能時,直接繼承超網訓練後的參數。這樣的作法省去了從新訓練的時間,大大加快了網絡搜索的速度。然而,雖然預訓練超網的方法可以大幅度加速網絡搜索,但由於很難對全部的路徑(子模型)進行充分訓練,因此其給出的結果每每不能真正體現出衆多子網絡正確的排序關係。算法
現有的超網訓練方式多種多樣,研究員們採用了簡單有效的均勻採樣單條路徑(single-path uniform sampling strategy)做爲基礎,即每一次隨機從超網中採一條路徑進行訓練。與之不一樣的是,在訓練單條路徑時,會從優先路徑組中選出一條路徑對其進行蒸餾,從而提高訓練效果。微信
圖1:方法示意圖,左側爲常規的蒸餾方法,即採用一個預訓練的模型進行蒸餾,右側爲提出的基於優先路徑的蒸餾方法。網絡
優先路徑組架構
優先路徑組是由少許性能優異的路徑構成的。超網訓練會對優先路徑組進行動態的維護,若是採樣出來的網絡在效果和複雜度上均優於有限路徑組中的網絡,那麼就會將其替換到優先路徑組中。不只如此,維護這樣一個優先路徑組還使得超網訓練結束後能夠直接從中選取最優路徑,從而節省以往方法在進行網絡結構搜索時運用強化學習方法或進化算法(Evolution Algorithm)的時間。在選取優先路徑時,可根據公式app
![](http://static.javashuo.com/static/loading.gif)
進行選擇,其中
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
知識蒸餾機器學習
知識蒸餾是一種被普遍應用的模型壓縮方法,經過讓小型網絡來模仿預訓練大型網絡的最後一層輸出特徵,可使小型網絡達到接近於大型網絡的表現。研究員們經過優先路徑來進行蒸餾,從而無需提早訓練一個大型神經網絡。對超網進行更新的具體公式以下:編輯器
![](http://static.javashuo.com/static/loading.gif)
其中 爲正常的訓練損失,
爲蒸餾損失,
仍爲前面所提到的匹配程度。工具
元網絡
因爲不一樣的子網結構差別可能很是之大,所以研究員們但願可以從優先路徑組中選出最有助於子網訓練的優先路徑對其進行知識蒸餾。通過嘗試,研究員們採用了元網絡的技術,將採樣路徑和優先路徑最後一層輸出的特徵差輸入到元網絡中,由元網絡判斷優先路徑與採樣路徑的匹配程度。當訓練元網絡時,研究員們會在驗證集上計算損失,經過匹配程度 進行梯度回傳並更新元網絡
:
![](http://static.javashuo.com/static/loading.gif)
對基於優先路徑蒸餾的網絡結構搜索算法的測試是在 ImageNet 上進行的。實驗結果如圖2和表1所示。能夠看出,在各類模型大小下,該方法的搜索結果均超越了此前的 EfficientNet-B0/B1 和 MobileNetV3,實現了優越的性能。不只如此,該方法搜索所須要的時長也是各類網絡結構搜索算法中最短的。
![](http://static.javashuo.com/static/loading.gif)
圖2:基於優先路徑蒸餾的網絡結構搜索獲得的模型在 ImageNet 上的性能
![](http://static.javashuo.com/static/loading.gif)
表1:基於優先路徑蒸餾的網絡結構搜索獲得的模型在 ImageNet 上的性能
除了圖像分類任務外,研究員們還在物體檢測任務上對算法進行了測試,結果如表2所示。能夠看到,該模型一樣可以泛化到物體檢測任務上,在各類指標下都比已有模型有近1%的提高。
![](http://static.javashuo.com/static/loading.gif)
表2:基於優先路徑蒸餾的網絡結構搜索模型在物體檢測任務上的表現
NNI (Neural Network Intelligence) 是當下最熱門的開源自動機器學習(AutoML)工具之一,由微軟亞洲研究院與微軟(亞洲)互聯網工程院領銜開發。NNI 對機器學習生命週期的各個環節都作了較爲全面的支持,包括特徵工程、神經網絡架構搜索、超參調優和模型壓縮。
目前,微軟亞洲研究院的研究員們已將這次提出的基於優先路徑蒸餾的網絡結構搜索算法經過 NNI 平臺的 One-Shot 算法接口進行了實現,提供了完整的搜索、重訓練和測試代碼以及模型。因爲 NNI 提供了統一的接口表達網絡搜索空間,因此有對比此算法與其餘神經網絡架構搜索結果需求的用戶可選擇這份代碼實現作參考。代碼以及更多技術細節,請參見:https://github.com/microsoft/nni。
本篇 NeurIPS 2020 論文針對網絡結構搜索中超網訓練不充分的問題,提出了使用優先路徑進行蒸餾的方法,加快了超網訓練的收斂和搜索速度,且搜索獲得的網絡性能超越了大多數現有算法。儘管如此,該方法目前仍處於初步的探索階段,將來可能還會將模型延遲考慮到優先路徑選擇中,並對優先路徑蒸餾的理論依據進行進一步的探索。
更多技術細節,詳見論文:
Cream of the Crop: Distilling Prioritized Paths For One-Shot Neural Architecture Search
論文連接:https://arxiv.org/abs/2010.15821
代碼連接:https://github.com/microsoft/Cream
NNI實現連接:https://github.com/microsoft/nni
END
![](http://static.javashuo.com/static/loading.gif)
備註:NAS
AutoML&NAS交流羣
自動機器學習、神經架構搜索等技術,
若已爲CV君其餘帳號好友請直接私信。
微信號:aicvml
QQ羣:805388940
微博知乎:@我愛計算機視覺
投稿:amos@52cv.net
網站:www.52cv.net
![](http://static.javashuo.com/static/loading.gif)
在看,讓更多人看到
本文分享自微信公衆號 - 我愛計算機視覺(aicvml)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。