兼具one-shot與傳統(tǒng)NAS優(yōu)點,F(xiàn)ew-shot NAS入選ICML 2021
7月12日,機器之心最新一期線上分享邀請到論文作者帶來詳細(xì)解讀,詳情見文末。
神經(jīng)網(wǎng)絡(luò)搜索(Neuarl Architecture Search)是近年來興起的熱門方向。在這次 ICML 的文章中,我們提出了 Few-shot NAS, 通過分割搜索空間,對分割后的子空間獨立建立了一個子超網(wǎng)絡(luò)(sub-supernet)來預(yù)測網(wǎng)絡(luò)性能。通過建立 one-shot NAS 和傳統(tǒng)挨個訓(xùn)練 NAS 的聯(lián)系,few-shot NAS 巧妙繼承了兩種方法的優(yōu)點,兼有 one-shot NAS 的快速和傳統(tǒng) NAS 的準(zhǔn)確網(wǎng)絡(luò)性能評估。大量實驗表明 few-shot NAS 是一個簡單易行的方法,在不同任務(wù)上和數(shù)據(jù)集上能提升當(dāng)下幾乎所有的 NAS 方法,包括 ImageNet 及 CIFAR-10 的分類任務(wù)和 GAN 這樣的生成任務(wù)等。該文章被 ICML-2021 接收為 long talk。
論文鏈接:https://arxiv.org/pdf/2006.06863.pdf
源代碼鏈接:https://github.com/facebookresearch/LaMCTS
Few-shot NAS是如何被提出的?
神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索在這些年收到大家廣泛的關(guān)注,該項技術(shù)在很多視覺和自然語言處理的領(lǐng)域呈現(xiàn)了不錯的結(jié)果。各個大廠在這項技術(shù)上也紛紛跟進,比如 Google 在近幾年的年度科研總結(jié)里,NAS 都占了一席之地。之前我所在的 Facebook 也有很多組在做 NAS 研究,包括現(xiàn)在我最近全職加入的 NVIDIA,也開始了 NAS 研究。這都代表大家對 NAS 這個技術(shù)的認(rèn)可,并且認(rèn)為這是一個對生產(chǎn)有實際幫助的工具。
截止到今天,NAS方法大概可以分為兩個陣營,其一是挨個訓(xùn)練的傳統(tǒng)NAS,其二是利用 supernet 的one-shot NAS。挨個訓(xùn)練就比較好理解,搜索算法提一個新網(wǎng)絡(luò),我們把這個網(wǎng)絡(luò)在訓(xùn)練集上從頭訓(xùn)練,并在驗證集上測量一個精度。這個過程優(yōu)缺點很明顯,優(yōu)點是從頭訓(xùn)練會非常準(zhǔn)確的評判網(wǎng)絡(luò)的好壞,但缺點就是計算量非常的大,只有大公司里那些能調(diào)動好幾百個 GPU 的組能玩的起。為了避免從頭訓(xùn)練每一個新網(wǎng)絡(luò),one-shot NAS利用了一個過度參數(shù)化(over-parameterization)的權(quán)重共享超網(wǎng)絡(luò)(supernet)。我們只需要訓(xùn)練一遍這個超網(wǎng)絡(luò)y,那么搜索空間里任何一個單獨的目標(biāo)網(wǎng)絡(luò)x,只要把超網(wǎng)絡(luò) y 的參數(shù)轉(zhuǎn)移過來,然后在驗證集上做一輪推斷,就可以得到準(zhǔn)確率的預(yù)測。這樣就巧妙的避免了傳統(tǒng) NAS 里挨個訓(xùn)練的計算瓶頸,相當(dāng)于一個可以快速求值的值函數(shù)。
另一方面,天下沒有免費的午餐。supernet 雖然減少了計算量,但同時也引入了近似誤差。比如用超網(wǎng)絡(luò)所預(yù)測出的網(wǎng)絡(luò)性能排序,其實是非常不準(zhǔn)確的,詳見這篇文章[1]。這里我們假設(shè)讀者對 one-shot NAS 和 supernet 有個基本的理解,不太清楚的讀者,可以推薦看我們之前的文章[2]。
提升 supernet 的預(yù)測性能是最近 NAS 研究的一個熱點。我們 few-shot NAS 本質(zhì)也是一個提升 supernet 的方法,核心思想源于一個對 one-shot NAS 和傳統(tǒng) NAS 的一個觀察,如下圖:
圖1: 拆分supernet來建立one-shot NAS和傳統(tǒng)NAS的聯(lián)系
圖中邊 a 是由綠色和紅色的兩個算子(operators)組成的一個復(fù)合邊(藍(lán)色粗剪頭)。如果我們拆分 supernet 上的復(fù)合邊 a ,既把2個紅色和綠色的并行算子單獨拆開,那么我們得到兩個 sub-supernets,注意此時邊 a 不再是復(fù)合邊了。如果我們迭代這個操作到 supernet 的每一個復(fù)合邊上,最終我們可以把一個 supernet 拆成這個搜索空間里的一個個單獨的網(wǎng)絡(luò)。這樣我們就建立了 supernet 和傳統(tǒng) NAS 的聯(lián)系。傳統(tǒng) NAS 由于每個網(wǎng)絡(luò)都是從頭訓(xùn)練,沒有近似誤差,所以能夠準(zhǔn)確的排序搜索空間里網(wǎng)絡(luò)性能的好壞,但是慢。one-shot NAS 雖然快,但是 supernet 引入了很大的近似誤差。從上圖中如果把拆分的過程構(gòu)建一個樹,那么這個樹的根節(jié)點就是 supernet,而葉子就是傳統(tǒng) NAS 里的一個個的具體網(wǎng)絡(luò)。
這里我們自然就想到一個問題,如果在中間結(jié)點上構(gòu)造 sub-supernet,那么與根結(jié)點相比,它對搜索空間的覆蓋范圍變小了,預(yù)測精度就應(yīng)該上升。這樣的話,它會不會同時兼?zhèn)鋬蛇叺膬?yōu)點?如下圖。
圖2: few-shot NAS 是傳統(tǒng)NAS和one-shot NAS的一個折中,因此同時擁有兩個方法的優(yōu)點。
為了驗證這樣一個想法,我們做了一組單因子實驗。首先我們構(gòu)建了一個小的搜索空間,這個搜索空間里有1296個網(wǎng)絡(luò)。我們先把這1296個網(wǎng)絡(luò)單獨訓(xùn)練一遍得到準(zhǔn)確的性能數(shù)值,然后對它們進行性能排序,作為性能預(yù)測的基準(zhǔn)。然后我們訓(xùn)練了一個 supernet,去預(yù)測這1296個網(wǎng)絡(luò)的性能排序。我們按照圖1的方法,把 supernet 拆一個,兩個,三個復(fù)合邊,分別得到6,36,216個 sub-supernets (此處為6的等比數(shù)列是因為一個復(fù)合邊有6個operators)。然后我們訓(xùn)練這6,36,216個sub-supernets,用6,26,216個 sub-supernets 分別去預(yù)測搜索空間里1296個網(wǎng)絡(luò)的性能排序。我們得到了下圖,
圖3: few-shot NAS的概念證明。拆分supernet能很好的提升性能排序。
這里的 rank correlation 就是量化性能排序的指標(biāo),并且1為最好。從上圖可以看出,當(dāng)拆分的 sub-supernets 越多,結(jié)果越接近傳統(tǒng) NAS,并且只需要不太多的 sub-supernets,排序性能就有較大的提高。這就是本文最核心的 insight,也是本文被命名為 Few-shot NAS 的原因。
Few-shot NAS具體是怎樣工作的?
Few-shot NAS 的核心方法非常簡單。一言以蔽之,就是選擇不同的復(fù)合邊,用上文的方法去分割他們,生成多個 sub-supernets, 然后通過這些 sub-supernets 來對搜索出來的網(wǎng)絡(luò)架構(gòu)進行性能預(yù)測。
一個 supernet 往往有多個復(fù)合邊,那么該如何決定選擇哪條復(fù)合邊來進行拆分呢?對此我們在 NASBench-201 上做了一組實驗。NASBench201 的搜索空間對應(yīng)的 supernet 有6條復(fù)合邊,每條復(fù)合邊上有5個不同的 operators。因此,如果我們同時拆分1,2,3條復(fù)合邊的話,會生成(5),(25),(125)個 sub-supernets。因為一共有6條復(fù)合邊,所以從 supernet 中選擇其中的1,2,3條邊來進行拆分一共有, 種不同的選擇方法。我們對這6,15,20種不同的拆分方法都做了一遍,然后對搜索空間的所有15625個網(wǎng)絡(luò)用 sub-supernets 進行了性能預(yù)測排序(rank correlation by Kendall’s Tau),結(jié)果如下表所示:
我們發(fā)現(xiàn),拆分的 sub-supernets 越多,性能預(yù)測排序就越準(zhǔn)確。然而,對于 supernet 上同樣數(shù)目的復(fù)合邊拆分,不同復(fù)合邊的選擇組合對最終的性能預(yù)測排序影響不大。因此,在 supernet 拆分的過程中,我們只需考慮我們最終要拆分幾條復(fù)合邊,而無需過多關(guān)注哪幾條復(fù)合邊需要被拆分。
把 supernet 拆分成更多的 sub-supernets 會更好的進行網(wǎng)絡(luò)架構(gòu)的性能預(yù)測,從而讓網(wǎng)絡(luò)架構(gòu)搜索更有效率。然而,過多的 sub-supernets 同樣會出現(xiàn)訓(xùn)練時間過長的問題,舉個例子,假如我們拆分了36個 sub-supernets,那總訓(xùn)練時長大約會是僅用1個 supernet 的 one-shot NAS 的36倍,這個效率是很難被接受的。我們發(fā)現(xiàn),每個 sub-supernets 的架構(gòu)和 supernet 其實非常接近,僅僅是在 supernet 里被拆分復(fù)合邊上少了一些 operators。因此,我們想出了用權(quán)重遷移的方法來加速 sub-supernets 的訓(xùn)練。具體實現(xiàn)起來也十分容易,我們先把 supernet 訓(xùn)練至收斂,然后直接把與 sub-supernets 重合的 operators 的權(quán)重轉(zhuǎn)移過去。這樣,與從頭訓(xùn)練每個 sub-supernet 相比,權(quán)重遷移后的 sub-supernet 僅僅需要很少的訓(xùn)練時間就能夠收斂。所以,在引入權(quán)重遷移技術(shù)之后,few-shot NAS 的效率會被大大提升。
實驗
首先我們把多個 sub-supernets 的思想用 NASBench-201 來詳細(xì)測試了一遍。這里我們拆分一個 supernet 為5個 sub-supernets,并結(jié)合在幾個 one-shot 和搜索的方法上。具體實驗結(jié)果如下,
圖4: 通過使用5個sub-supernets,few-shot NAS (黃色)的準(zhǔn)確率一直比one-shot方法高。
圖5: 通過使用5個sub-supernets,對比于one-shot NAS (藍(lán)色),few-shot NAS有效的減少了supernet的近似誤差,所以few shot NAS的搜索結(jié)果(黃色)大幅度接近傳統(tǒng)NAS(紅色)。
同時我們也把 few-shot NAS 應(yīng)用在現(xiàn)有的 NAS 系統(tǒng)上。我們做的更改很簡單,就是把網(wǎng)上放出來的開源代碼然后從 one-shot NAS 改成 few-shot NAS,然后并且使用同樣的超參,重新跑一遍結(jié)果進行對比。這里是 CIFAR-10 上的結(jié)果對比:
圖6: 我們應(yīng)用few-shot NAS與現(xiàn)有的NAS方法結(jié)合,在CIFAR-10上利用NASNet的搜索域進行搜索。實驗結(jié)果表明:1) 相比于各種one-shot NAS方法,few-shot NAS在同樣的訓(xùn)練條件下,提升了最終搜出網(wǎng)絡(luò)的準(zhǔn)確度。在此,我們只把few-shot NAS結(jié)合在DARTS, REA以及LaNAS的算法上,并通過分割原先的單個supernet成為7個sub-supernets來進行搜索。2)在結(jié)合了多個sub-supernets之后,few-shot DARTs利用cutout和auto-augmentation數(shù)據(jù)增強技術(shù)在CIFAR-10數(shù)據(jù)集上達(dá)到SoTA 98.72%的top-1準(zhǔn)確率。在沒有利用auto-augmentation技術(shù)的情況下,few-shot DARTS-Small的top-1準(zhǔn)確度仍然超過在同等參數(shù)下的其他模型。
接下來是imagenet的結(jié)果:
圖7: 我們應(yīng)用few-shot NAS與現(xiàn)有的NAS方法結(jié)合,在ImageNet上利用EfficientNet的搜索域進行搜索。與圖6中CIFAR-10的表格一致, few-shot OFA與few-shot ProxylessNAS在相同的訓(xùn)練條件下,其搜索出的最終的網(wǎng)絡(luò)架構(gòu)也同樣超過了它們原本的one-shot版本。與CIFAR10中不同之處是我們在ImageNet實驗下把supernet拆分為5個sub-supernets。值得一提的是,few-shot OFA Large在600M左右FLOPs的模型中達(dá)到了SoTA的80.5%的top-1準(zhǔn)確率。
以及在Auto-GAN上的對比:
圖8: 我們把few-shot NAS與AutoGAN結(jié)合,基于它們公布的代碼,我們用3個sub-supernets來代替原本的單個supernet。利用few-shot AutoGAN搜索出的架構(gòu)比原始o(jì)ne-shot版本的AutoGAN所找出的架構(gòu)提升了最高20%的性能。
從這些結(jié)果可以看出,在把這些開源項目改成 few-shot NAS 后都能觀測到一定的提升。
研究團隊與嘉賓介紹
該工作是由趙一陽、王林楠與其 Facebook 的 mentor 田淵棟以及其博士生導(dǎo)師 Rodrigo Fonseca 和趙一陽的導(dǎo)師郭甜共同完成的。
趙一陽,現(xiàn)為伍斯特理工學(xué)院(Worcester Polytechnic Institute)計算機系博士二年級學(xué)生,研究方向是自動化機器學(xué)習(xí)(Auto-ML),曾在多個人工智能與計算機系統(tǒng)頂會發(fā)表過文章。目前在字節(jié)跳動的 Infrastructure Lab 進行研究性實習(xí)。
王林楠博士,現(xiàn)為 NVIDIA 高級深度學(xué)習(xí)工程師,其主要研究方向是神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索和超級計算。他畢業(yè)于布朗大學(xué)計算機系,師從 Rodrigo Fonseca。在布朗學(xué)習(xí)時期,他曾多次在 FAIR, MSR,和 NEC Labs 實習(xí)。從2017年起,他就一直圍繞蒙卡洛樹搜索,設(shè)計和打造一個能夠構(gòu)建人工智能的人工智能體。截至今日,他的研究已發(fā)表在ICML, NeurIPS, AAAI, TPAMI, CVPR 和 PPoPP 等系統(tǒng)和人工智能的頂級會議和期刊上。
田淵棟博士,臉書(Facebook)人工智能研究院研究員及經(jīng)理,研究方向為深度強化學(xué)習(xí)與應(yīng)用及表示學(xué)習(xí)的理論分析。圍棋開源項目 DarkForest 及 ELF OpenGo 項目中研究及工程負(fù)責(zé)人和第一作者。2013-2014年在 Google 無人駕駛團隊任軟件工程師。2005年及08年于上海交通大學(xué)獲本碩學(xué)位,2013年于美國卡耐基梅隆大學(xué)機器人研究所獲博士學(xué)位。曾獲得2013年國際計算機視覺大會(ICCV)馬爾獎提名(Marr Prize Honorable Mentions)
[1] Yu, K., Sciuto, C., Jaggi, M., Musat, C., and Salzmann, M. Evaluating the search phase of neural architecture search. arXiv preprint arXiv:1902.08142, 2019b.
[2] Wang, L., Xie, S., Li, T., Fonseca, R., and Tian, Y. Sample-efficient neural architecture search by learning action space. CoRR, abs/1906.06832, 2019a. URL http://arxiv.org/abs/1906.06832.
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。