CVPR 2020|解放工程師,DenseNAS 讓結構搜索更靈活
在致力於實現邊緣AI全球領導者的征程上,地平線始終堅持“研”以致用,通過賦能產業,讓每個人都能夠享受技術進步的成果。在這一過程中,地平線也希望通過分享最新研究成果,與 AI 領域的同行者一起前行。
有鑑於此,我們推出了#地平線CVPR 2020系列論文分享#,以下為本系列第二篇分享。
近年來,網絡結構搜索(NAS)在自動化設計神經網絡結構上發揮了巨大作用,並逐步成為深度學習的重要發展方向。雖然NAS算法取得了比較卓越的性能,但其搜索空間的設計依舊需要比較強的人為先驗。
在探索如何構建更加靈活、自動化程度更高的搜索方法上,地平線聯合華中科技大學在原有的DenseNAS解決方案上,提出全新的鏈式代價估計(Chained Cost Estimation)算法,能夠更加準確地估計密集連接搜索空間中結構的代價(FLOPs/latency),同時帶來更好的優化效果。
相關論文<>已被收錄於CVPR 2020,以下為論文導讀:
NAS搜索元素的梳理
在以往的NAS方法中,搜索空間起着不可或缺的作用,不僅在很大程度上決定着搜索出來的模型性能,靈活的搜索空間還能帶來更多高性能的可能性結構以及算法自動化程度的大幅提升,從而進一步減少人為調整元素解放工程師。
在原有的搜索空間設計中,Block (塊) 代表網絡中輸出特徵擁有相同分辨率和相同通道數的層或操作的集合;Stage (階段) 代表輸出特徵在相同分辨率下的串聯的Block的集合。相同Stage中的不同Block可以擁有不同的寬度(即輸出通道數)。最近許多工作通過堆疊MobileNet v2中的反轉殘差模塊(MBConv)來構建搜索空間,通過搜索卷積核尺寸以及MBConv中的膨脹係數取得了計算量/latency較小的高性能結構。
但該方法中,每個Stage裏Block的數量以及每個Block的寬度均為人為設定,並且在搜索過程中是固定的,這意味着深度搜索被侷限於Block內部(即搜索每個Block內的層數),而寬度搜索無法被開展。
神經網絡的規模設計(深度和寬度)往往對結構的性能起着很大的作用,最近很多工作也通過人為調整寬度來獲取更優的性能,但寬度的調整仍然需要較大的人為先驗以及大量的試驗。DenseNAS的提出則旨在實現高靈活度的網絡結構搜索。
實驗新方法DenseNAS對於網絡規模搜索的新思路
在DenseNAS方法的搜索空間設計中,更多不同寬度的Block存在於一個Stage裏,Block之間相互密集連接,最終Block之間的一條最佳路徑會被搜索出來,網絡結構將通過這條路徑被導出,不存在於這條路徑的Block將被捨棄。這樣一來網絡中Block的寬度和數量被自動分配,DenseNAS將深度搜索擴展到更廣的空間,並且使能了寬度搜索。不僅每個Block內的層數可以被搜索,每個Stage內的Block數量和寬度都能被搜索,同時下采樣的位置也因為Block數量搜索被自動決定。
DenseNAS提出的密集連接的搜索空間可以被鬆弛為一個超級網絡,基於梯度更新的Differentiable NAS能夠基於其被開展,這樣的大規模搜索空間則不會引入巨大的搜索代價。相較於該工作的上一個版本,本文還提出了一個鏈式代價估計(Chained Cost Estimation)的算法,在搜索過程中該算法可以用來估計密集連接搜索空間中結構的代價(FLOPs/latency),結構的精度和代價均可以被優化。
以下為具體方法:
構建密集連接的搜索空間
首先,本文定義基礎層(basic layer)為搜索空間中最基本的元素,其被設計為搜索候選操作項的集合。
然後,本文提出了路由塊(routing block),其負責匯聚來源於前繼路由塊的數據,並將數據傳遞給後續的路由塊。每個路由塊包括尺寸對齊層(shape-alignment layers)和基礎層兩個部分:尺寸對齊層以幾個並行分支的形式存在,每個分支即一組候選操作項的集合,其負責將來源於前繼路由塊不同尺寸的輸入數據轉換到相同尺寸;後續的基礎層將繼續提取來源於尺寸對齊層的特徵,且其深度可搜索。
最後,整個密集超級網絡由一系列不同寬度的路由塊組成。從超級網絡頭部到尾部,路由塊的寬度逐漸增加。每個路由塊可以連接到其後續的M個塊,且只有分辨率相差倍數在兩倍及以內的塊之間可被連接,整個搜索空間遵從該範式被構建為密集連接的超級網絡。
鬆弛密集連接的搜索空間
對於基礎層,每個候選操作項被賦予一個結構參數,基礎層的輸出由所有候選操作輸出的加權和得到:
對於路由塊層次,每個路由塊的數據會輸出到其後繼的幾個塊,每條輸出的路徑同樣會被賦予一個結構參數,並通過softmax歸一化為輸出路徑概率。每個路由塊會接受前繼幾個塊的輸出數據,尺寸對齊層會對來自不同塊的數據利用路徑的概率值進行加權求和:
鏈式代價估計算法
在傳統的級聯式搜索空間和本工作的上一個版本中,整個網絡的代價(latency/FLOPs)通過對每一個塊的估計代價求和得到。然而在密集連接搜索空間中,塊之間的連接狀態對整個網絡代價估計的全局效應需要被考慮到,本文提出了一種鏈式代價估計算法來更好的計算搜索過程中的結構代價。
首先,一個代價查詢表會被構建以記錄搜索空間中每一個操作候選項的代價。在搜索過程中,每個基礎層的代價計算如下:
鏈式代價估計算法如下:
搜索中模型精度和代價通過以下損失函數被同時優化:
搜索方法
整個搜索過程分為兩階段,在第一階段操作項參數被訓練一定週期,第二階段操作項參數和結構參數通過梯度交替更新。當搜索過程結束,最終的結構將通過結構參數的分佈被導出。對於每一個層而言,只有結構參數權重最大的候選操作項會被選中;對於整個網絡,本文利用維特比算法來推導塊之間的連接路徑,不存在於推導路徑的塊會被捨棄。最終結構中每個塊只與其後續的一個塊相連接。
實驗結果以更小的代價取得更優的精度
相較於上一版本(
DenseNAS通過構建密集連接的搜索空間,並將該搜索空間鬆弛到Differentiable NAS的框架內,以較小的搜索代價實現了更加靈活的網絡結構搜索。目前NAS算法已經取得了比較卓越的性能,但是NAS算法中搜索空間的設計依然需要比較強的人為先驗,如何構建更靈活、更高自動化程度的搜索方法值得被關注,DenseNAS則針對該問題提供瞭解決方案。
DenseNAS 更新版本論文解讀基本如上,感興趣的同學可以點擊以下鏈接閲讀論文。
論文地址:https://arxiv.org/pdf/1906.09607.pdf
論文代碼:https://github.com/JaminFong/DenseNAS
雷鋒網雷鋒網雷鋒網