CVPR 2020|解放工程師,DenseNAS 讓結構搜尋更靈活

新聞助手發表於2020-05-15

在致力於實現邊緣 AI 全球領導者的征程上,地平線始終堅持“研”以致用,透過賦能產業,讓每個人都能夠享受技術進步的成果。在這一過程中,地平線也希望透過分享最新研究成果,與 AI 領域的同行者一起前行。有鑑於此,我們推出了#地平線 CVPR 2020 系列論文分享#,以下為本系列第二篇分享——

近年來,網路結構搜尋(NAS)在自動化設計神經網路結構上發揮了巨大作用,並逐步成為深度學習的重要發展方向。雖然NAS演算法取得了比較卓越的效能,但其搜尋空間的設計依舊需要比較強的人為先驗。

在探索如何構建更加靈活、自動化程度更高的搜尋方法上,地平線聯合華中科技大學在原有的DenseNAS解決方案上,提出全新的鏈式代價估計(Chained Cost Estimation)演算法,能夠更加準確地估計密集連線搜尋空間中結構的代價(FLOPs/latency),同時帶來更好的最佳化效果。

相關論文< Densely Connected Search Space for More Flexible Neural Architecture Search>已被收錄於CVPR 2020,以下為論文導讀——

CVPR 2020|解放工程師,DenseNAS 讓結構搜尋更靈活

核心思路

NAS搜尋元素的梳理

在以往的NAS方法中,搜尋空間起著不可或缺的作用,不僅在很大程度上決定著搜尋出來的模型效能,靈活的搜尋空間還能帶來更多高效能的可能性結構以及演算法自動化程度的大幅提升,從而進一步減少人為調整元素解放工程師。

CVPR 2020|解放工程師,DenseNAS 讓結構搜尋更靈活

在原有的搜尋空間設計中,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),結構的精度和代價均可以被最佳化。

CVPR 2020|解放工程師,DenseNAS 讓結構搜尋更靈活

以下為三種具體方法——

1.構建密集連線的搜尋空間

首先,本文定義基礎層(basic layer)為搜尋空間中最基本的元素,其被設計為搜尋候選操作項的集合。

然後,本文提出了路由塊(routing block),其負責匯聚來源於前繼路由塊的資料,並將資料傳遞給後續的路由塊。每個路由塊包括尺寸對齊層(shape-alignment layers)和基礎層兩個部分:尺寸對齊層以幾個並行分支的形式存在,每個分支即一組候選操作項的集合,其負責將來源於前繼路由塊不同尺寸的輸入資料轉換到相同尺寸;後續的基礎層將繼續提取來源於尺寸對齊層的特徵,且其深度可搜尋。

最後,整個密集超級網路由一系列不同寬度的路由塊組成。從超級網路頭部到尾部,路由塊的寬度逐漸增加。每個路由塊可以連線到其後續的M個塊,且只有解析度相差倍數在兩倍及以內的塊之間可被連線,整個搜尋空間遵從該正規化被構建為密集連線的超級網路。

2.鬆弛密集連線的搜尋空間

對於基礎層,每個候選操作項被賦予一個結構引數,基礎層的輸出由所有候選操作輸出的加權和得到:

CVPR 2020|解放工程師,DenseNAS 讓結構搜尋更靈活

CVPR 2020|解放工程師,DenseNAS 讓結構搜尋更靈活

對於路由塊層次,每個路由塊的資料會輸出到其後繼的幾個塊,每條輸出的路徑同樣會被賦予一個結構引數,並透過softmax歸一化為輸出路徑機率。每個路由塊會接受前繼幾個塊的輸出資料,尺寸對齊層會對來自不同塊的資料利用路徑的機率值進行加權求和:

CVPR 2020|解放工程師,DenseNAS 讓結構搜尋更靈活

CVPR 2020|解放工程師,DenseNAS 讓結構搜尋更靈活

2.鏈式代價估計演算法

在傳統的級聯式搜尋空間和本工作的上一個版本中,整個網路的代價(latency/FLOPs)透過對每一個塊的估計代價求和得到。然而在密集連線搜尋空間中,塊之間的連線狀態對整個網路代價估計的全域性效應需要被考慮到,本文提出了一種鏈式代價估計演算法來更好的計算搜尋過程中的結構代價。

首先,一個代價查詢表會被構建以記錄搜尋空間中每一個操作候選項的代價。在搜尋過程中,每個基礎層的代價計算如下:

CVPR 2020|解放工程師,DenseNAS 讓結構搜尋更靈活

鏈式代價估計演算法如下:

CVPR 2020|解放工程師,DenseNAS 讓結構搜尋更靈活

CVPR 2020|解放工程師,DenseNAS 讓結構搜尋更靈活

CVPR 2020|解放工程師,DenseNAS 讓結構搜尋更靈活

搜尋中模型精度和代價透過以下損失函式被同時最佳化:

CVPR 2020|解放工程師,DenseNAS 讓結構搜尋更靈活

3.搜尋方法

整個搜尋過程分為兩階段,在第一階段操作項引數被訓練一定週期,第二階段操作項引數和結構引數透過梯度交替更新。當搜尋過程結束,最終的結構將透過結構引數的分佈被匯出。對於每一個層而言,只有結構引數權重最大的候選操作項會被選中;對於整個網路,本文利用維特比演算法來推導塊之間的連線路徑,不存在於推導路徑的塊會被捨棄。最終結構中每個塊只與其後續的一個塊相連線。

實驗結果

以更小的代價取得更優的精度

相較於上一版本(<DenseNAS:密集連線搜尋空間下的高靈活度網路結構搜尋>),本文實驗更加全面。DenseNAS基於MobileNetV2和ResNet都開展了實驗,相較於其他方法以更小的代價(FLOPs/latency)取得了更優的精度。其搜尋到的結構在檢測上也取得了優異的效能。

CVPR 2020|解放工程師,DenseNAS 讓結構搜尋更靈活

總結

DenseNAS透過構建密集連線的搜尋空間,並將該搜尋空間鬆弛到Differentiable NAS的框架內,以較小的搜尋代價實現了更加靈活的網路結構搜尋。目前NAS演算法已經取得了比較卓越的效能,但是NAS演算法中搜尋空間的設計依然需要比較強的人為先驗,如何構建更靈活、更高自動化程度的搜尋方法值得被關注,DenseNAS則針對該問題提供瞭解決方案。

DenseNAS 更新版本論文解讀基本如上,感興趣的同學可以點選【原文閱讀】或透過以下連結閱讀論文。

論文地址:https://arxiv.org/pdf/1906.09607.pdf

論文程式碼:https://github.com/JaminFong/DenseNAS

相關文章