精度、效率兩難全,NAS 如何為自身找到最優解?

ai科技評論 發佈 2020-08-05T02:26:40+00:00

文字整理 | 班瀚文。目前,NAS已在很多任務上得到應用,針對NAS的研究也逐漸深入。那麼NAS未來的發展趨勢會是怎樣的呢?

文字整理 | 班瀚文

本文經 VALSE 授權轉載,原標題:高精度+高效率:NAS的發展趨勢【VALSE Webinar】Panel實錄

近期,神經網絡結構搜索 (NAS)引起了學界和工業界的高度關注。目前,NAS已在很多任務(尤其是CV相關任務)上得到應用,針對NAS的研究也逐漸深入。那麼NAS未來的發展趨勢會是怎樣的呢?

為此,VALSE Webinar 2020-17期邀請了王雲鶴(華為諾亞方舟實驗室)、歐陽萬里(雪梨大學)、常曉軍(蒙納士大學)、紀榮嶸(廈門大學)、嚴駿馳(上海交通大學)等五位領域專家,王雲鶴擔任主持人,圍繞主題「高精度+高效率:NAS的發展趨勢」 開展了深入探討。該論壇主要分為5個議題,本文是該次討論的文字實錄。

1

NAS 是否物超所值?

王雲鶴:NAS在很多任務上都得到了應用,尤其是計算機視覺相關的任務上。NAS搜索出來的模型都達到了業界最好的性能。但是,NAS所帶來的性能提升與他的成本相比,是否是物超所值的呢?

歐陽萬里:目前可以看到,隨著硬體綜合成本的降低、運轉速度更快的新算法的不斷開發,綜合考慮,我們相信NAS會越來越物超所值。這個技術剛開始是比較花錢的,例如剛開始去買的各種新潮的硬體設備一樣,開始價格可能感覺還不夠便宜,但再過五年以後就不一樣了。目前NAS是類似這樣的一個發展過程。

對比幾年以前的NAS和現在的NAS的準確率,在ImageNet上是有改善的,但是還沒有到比人工設計要好很多的狀態。回顧2012年發展的深度學習,做任務的時候,深度學習並不比人工設計的好多少,那麼過了幾年事情是怎麼發展的,深度學習至少會證明它是有效的。NAS在裡面是否會有效?我認為這應該是promising(前景非常樂觀的)發展。

常曉軍:我對這個問題對於工業界上的影響,我思考也挺多的。如果我們花了兩三天,但只是把效果從95%提升到97%,對於工業界,這個提升的好處到底有多少,比如視頻搜索的話,95%和97%的準確率,這其中的差別用戶是感受不到的。未來是否有必要提出一個新的評價指標,來綜合考慮精度的提升以及搜索效率,這是我一直在思考的問題。

王雲鶴:我認為有的時候也不完全是這樣,比如自動駕駛追求的就是最後那百分之幾的精度提升。現在大多數的情況下看到的NAS在提升方面的效果並不是那麼大,比如在ImageNet上,越來越多NAS算法追求更高的精度,但是看起來似乎沒有特別大的提升。

紀榮嶸:隨著算力的提升,速率上的損失還是可以接受的。特別是像用CNN的任務太多了,不只是做research這種簡單的分類任務,很多新任務重新設計模型要花太多的時間,我沒有那麼多程式設計師。所以NAS幫助我們做的自動化,這方面收益肯定是值得的。包括我們有一些NAS的工作,都在加速整個架構搜索的流程。所以我認為NAS肯定是有收益的。

嚴駿馳:NAS研究並不只是為了得到一個更高精度、更高效的模型,也是幫助我們更好地去研究嘗試探索神經網絡內部的連接和運算單元之間的關係。這樣可以更好地給我們的學者對理解神經網絡內部的機理帶來很多的幫助,如同下圍棋,AlphaGo可以幫助圍棋高手們對圍棋有更好的理解,這也是值得我們推敲的一方面。

2 NAS能應用於其他數據集和任務嗎?

王雲鶴:NAS是在一個數據集、一個任務上儘可能地對網絡結構進行優化,那麼NAS搜索出來的模型可以被應用於其它數據集和其它任務嗎?

嚴駿馳:我認為現在這是一個研究的趨勢。我們去做NAS,一個方面是在一個數據集,另一方面現在的NAS研究考慮泛化性能。比如從CIFAR10的分類任務擴展到ImageNet的更大規模的分類,或者到MS-COCO的檢測任務上,這些都是有一些嘗試。目前很多的研究依然側重搜索的空間,因為搜索空間要有一定的針對性,所以我認為在搜索的search space和search strategy這兩方面都需要去考慮多個數據集和多個任務的方法和性能的問題。

王雲鶴:另外一個方面,目前NAS仍然是在全精度(FLOAT32)上進行搜索,我也關注到紀老師有關於binary network(二值網絡,1bit參數)的架構搜索,您覺得1bit/低bit的NAS和全精度的NAS相比,二者有什麼區別或者相同的地方?

紀榮嶸:優化(低bit網絡架構搜索)在概念上是沒有問題,但實際上不是很容易進行優化的。如果大家能把優化理論算法解決的話,是很好的一個方向。因為現在做網絡壓縮的方法,大家都在往這方面嘗試,binary network是典型網絡壓縮的算法,NAS網絡壓縮最近也做了很多的工作,這個大家肯定願意去嘗試。

王雲鶴:歐陽老師您對NAS在不同數據集和任務上,比如目標檢測、行人重識別,與當前主流NAS比較,您有沒有什麼建議?

歐陽萬里:目前看到的是已經有一些網絡在CIFAR10上去搜索,遷移到ImageNet數據集發現精度也還不錯,當然如果直接在ImageNet上面搜效果應該會更好,我認為現在去做嘗試應該是可能做好的。另一方面,個人感覺NAS的目的主要是針對特定任務,去找到針對特定任務更合適的架構。最開始我們是想人工設計一個特徵可以應用於任何的資料庫,接下來是對這些不同的資料庫有了一個深度模型,我們要去學習它的參數。現在我們不只要學習模型的參數,還要找到適合對應資料庫的架構(NAS),這樣的類似於原來深度模型裡面的微調在將來的應用過程中,仍然是需要的。

3

NAS需要更大的數據集嗎?

王雲鶴:由於Google開源了NASBench-101,最近開始有更多的工作在討論利用精度預測器來構建NAS系統。雖然,這類算法可以解決性能評估的不準確性,但是預測器的訓練需要大量的精細訓練的深度神經網絡作為樣本,是否有必要構建更大的NAS數據集?

紀榮嶸:我們做了一系列的關於performance estimation(性能評估預測)的工作,其中有很多細節,包括如何加速性能估計的各種各樣的方法。這(NAS)裡面主要的實際開銷中,得到performance占了很大一部分,所以這個步驟還是蠻重要的。這個議題是訓練器的訓練需要大量精細的網絡作為樣本,構建更大的NAS數據集。這個問題很像前一個問題(NAS的可遷移性),還有(涉及到)一個廣義的NAS網絡,不同的答案,可能都不一樣。

但是我們特別希望有一個像VGT這樣的基礎的東西,比如提供部分優化的中間狀態,從中間狀態再往下做那是最好的一個狀態了。這部分我不認為一定是NAS,大家可以想想Meta-Learning(雲學習),這是蠻有意思的。但是如果大家讀過文章都知道,有一些NAS就是把模塊拼在一起做組合,但是證明效果沒有那麼好,所以可能需要特殊人用這個方法pursue它的一個經典的工作。我們最近可能會發布一套跟NAS相關的一個平台,有點像NNI,做出來可以供大家使用。

嚴駿馳:我們現在做的數據集背後限定了搜索空間,這與我們要做一個訓練集有各自地的分布一樣。如果測試體不在這個分布里,可能就會產生過擬合或預測產生一些困難,我認為過擬合分布的偏移是第一點。第二點,因為圖網絡本身是離散的東西,裡面是離散的數據,在映射到一個連續的performance上面可能比一般的連續的數據映射更複雜。這兩點是要比較小心的地方:一方面是搜索空間(對模型結構造成的限制),一方面是本身圖是一個離散的結構,所以映射(從模型結構映射到performance)存在很多不連續性和不穩定性。

王雲鶴:當數據集太大的情況下,圖也不是很好構建。常老師的工作裡面提到了一些神經網絡精度的評估,您提到的這種利用NAS的數據集去構建評估器的工作,是不是能幫助我們徹底解決NAS在執行過程中性能評估不準確的問題呢?

常曉軍:這個問題很有價值,徹底解決這個感覺有點難,但是肯定會起到輔助的作用,能夠提高我們的評測效果。

王雲鶴:更早一點,商湯的一些工作也是關於精度預測的,歐陽老師在這個方向可以給出一些建議麼?

歐陽萬里:我本身其實沒有參與精度預測的這樣一些工作。其實做NAS有很多挺有意思的方向,從精度角度研究也確實是挺有意思的。比較難一點的問題是要解決雞生蛋、蛋生雞的問題(模型搜索的目的是為了得到高精度模型,但是在搜索過程中又需要利用模型的精度來衡量搜索結果)。

4

NAS 未來架構和搜索空間設計思路

王雲鶴:對於給定的搜索空間,NAS產生了一系列具有更高精度的神經網絡結構。這其中有一些與之前的結構是相似的也有不相似的,比如多分支的網絡架構,這些結構對未來的架構設計和搜索空間的設計有什麼啟發呢?

常曉軍:之前的工作都是別人給一個手工設計的網絡,通過實驗驗證這個網絡的效果比較好,但是如果我們由NAS跑出來一個神經網絡,可以倒推網絡結構設計成這樣為什麼會達到好的效果,這可能會給我們在後續的網絡設計方面有一些不錯的啟發。

王雲鶴:您是指NAS的算法跟搜索空間的設計可能會疊代起來去做出更好地東西。剛才觀眾們在後台問了一個有意思的問題, NAS怎麼能產生出像ResNet這樣的一個東西呢?我們之前沒有見過ResNet怎麼產生它。

常曉軍:那肯定是針對我們蒸餾的神經網絡提出來的吧。

王雲鶴:這個問題應該是指一個通用的問題。我們再請嚴老師回復一下,NAS現在有沒有對圖神經網絡或者是有一些其他結構的設計?

嚴駿馳:這個可以是一個比較開放性的問題,我們現在也想往這一方向、也在做一些探索,這裡面比較重要的一個問題是關於圖的網絡的生成模型,因為做生成模型圖是個離散的結構。另外一方面取決於數據集的豐富程度,因為(NAS)數據集由搜索空間決定的,手工設計什麼樣的搜索空間,怎樣採樣生成很多的樣本,再去算它對應的performance。

但我們總是會被限制在搜索空間裡。如果當生成的圖的結構不在這個搜索空間裡,那麼預測就會出現困難。那這個問題本質上是一個機器學習的問題,剛才紀老師說的Meta-Learning等等都是有它的關係的。包括這個跟強化學習,我們面臨著樣本不夠的問題。在這些層面,很多是機器學習本質的問題。我們做NAS的學者同學們,也可以更多地去看一些這方面機器學習本身的發展,肯定對我們這方面的研究是有裨益的。

王雲鶴:謝謝嚴老師,下一個小問題是給歐陽老師。NAS雖然產生了很多很奇怪的模型,有的精度很好,有的精度不好,但是它基本上主要的算法還都是在分類任務上面去做的。我們在分類任務上得到的這些模型,對於其他的任務,比如說您在其他領域做的CV相關的工作,比如這種intecture上面會不會在這種手工設計的網絡上面去產生相應的影響呢?

歐陽萬里:我想應該是會的,現在用NAS去做相關的任務,比如物體檢測已經有不少工作在做了。因為檢測包含幾個部分,一個是backbone,一個是neck/head (例如FPN網絡),這兩個部分都有一些現有工作在考慮了。當然檢測也有檢測自己的問題,所以針對檢測的問題去設定自己的合適的搜索空間和搜索算法,還是會有不少的研究者在這裡(目標檢測的NAS)關注的,包括像Person ReID(行人重識別)也是類似的。在各個不同的方向(任務),已經有不少的工作用NAS在做了。那麼NAS應用在其他方面(任務),相信還會有一些工作去考慮,進一步地完善起來。

王雲鶴:謝謝歐陽老師。我們再請紀老師討論一下,NAS產生的這些結構,跟我們去做模型裁剪、剪枝產生的結構,有沒有一些相通的地方?

紀榮嶸:目前來說還沒有看到。

王雲鶴:之前我看到有討論說NAS所產生的模型神經元多一些,還是中間的神經元多一些?剪枝可能也會產生一些不一樣的結果,比如在ResNet上面我們去觀測到,它可能會有一些淺層的剪枝比較少或者是其他的現象。

紀榮嶸:這個問題和另一個問題是連在一起的,就是你的這個模型是否可以去理解它的搜索網絡架構,當然我們很希望(機器搜索到的結構和人工設計的結構)一樣的,但是即使機器找到了(人工設計的結構,例如ResNet)一定也要問為什麼?是很湊巧,還是說他們都有什麼相同的本質的結構。如果我們人工設計的網絡,跟NAS跑出來的網絡沒有什麼不同,那麼機器證明了我們的設計是完美的,這是最好的,但是我們並沒有看到這種的東西。我們目前看到(機器搜索出來的結構與人工設計的結構)是不一樣的,所以要麼機器錯,要麼人錯,但是其實我們都沒做,只是兩者都不是最優解。

5

如何解決NAS的優化難題?

王雲鶴:NAS的算法同時存在很多個優化問題,比如我們要同時優化權重和架構的參數,有些時候我們也會涉及到多個任務多個數據集一起搜索,比如檢測任務。把所有問題都放在一起進行搜索肯定是最理想的求解方案,但是也帶來了求解的不穩定性,各位老師針對NAS裡面的這些優化難題有沒有什麼好的建議?

紀榮嶸:因為NAS裡面的操作很多,現在的方向不一樣,比如進化算法有自己的優化難題,這種直接可以解的NAS(DARTS)也有自己優化難題,各自好像不大相同。NAS的算法可以分成很多類,都有自己的優化難題。這就回到最優化的問題裡面去了,並不是NAS自己特定的問題,但是無論怎樣,我覺得這塊可以做,但是影響力不是很大。

王雲鶴:好的,謝謝紀老師。嚴老師我知道您在組合優化的領域內也做過很多比較深入的研究,您對這個問題怎麼看?舉個限定的例子,比如說DARTS裡面同時有優化權重和架構的參數,您對這個問題有什麼好的建議?

嚴駿馳:如果從數學的角度上來看,主要是兩方面,一方面是多目標優化,因為你可能又要模型的容量、performance、泛化性能、穩定性等等,這些抽象出來看都是一些優化目標。另外一方面是權重(DARTS中的結構參數),權重是個連續的值,結構往往是一個離散的值,這個是類似整數規劃,我們叫混合整數,裡面又有離散又有連續值。籠統地來說是這兩個觀點去看這個優化的問題。

神經網絡的獨特的挑戰就是它的權重、參數量規模非常大,傳統的數學的做法,觀點和理論用不上去。所以主要是那兩種,一種是基於圖微分、基於梯度的方法;一種是偏強化學習等更靈活的方法。我覺得梯度方法求解的更快一點,在短期內有一個比較好的解,再可以用這種更靈活的、更複雜的、更細粒度的方法在局部的空間裡面做探索,這是一種思路。像數學裡面做優化一樣,先把它鬆弛到一個凸優化的問題,再慢慢地類似於一種continuation method(連續法)或者模擬退火一樣,就可以把那個問題做的越來越細,它的解會越來越好,但是一開始的時候可能是一個比較快速的方案。

王雲鶴:好的,謝謝嚴老師。下一個小問題想請問歐陽老師,您剛才講了一些算法理論,其實是把NAS的搜索速度提升的很明顯。在NAS這個系統裡面,同時加速了搜索想提升它的精度,這個問題怎麼能保證?你搜索的速度很快,但是同時怎麼能保持搜索算法的精度?

歐陽萬里:我們的方法搜索速度比較快而精度也好的的原因是有一個更加快速可靠的代理任務。當然通常的情況下,要設計一個算法,想要精度和速度都要變好其實是非常難的。我身邊有人認為,對於基於differentiable(可微分)或者one-shot的NAS方法,是為了去達到像強化學習或進化算法那樣的(性能)上限,當然強化學習或進化算法其實也並沒有把整個的搜索空間的所有模型結構搜索到。

目前NAS的大量算法本質上就是一個trade-off,基於one-shot或者基於可微分方法的NAS,其速度確實是會快得多的,但是其能達到的性能上限可能不見得會比強化學習要好。像這樣的一個情況下,怎麼去做好(精度和速度之間的)trade-off應該是要考慮的事情。要做好這個trade-off,我們認為存在一些更快速有效的,達到可靠性的一個東西。當然達到可靠性並不只是這樣一條路要走,就算是在DARTS這種可微分方式,或者是像one-shot這樣的一些方法,怎樣去提高它的可靠性,這也是沒有完全解決的問題,但是它的可靠性是不一樣的,這些都是要去考慮的。

VALSE發起於2011年,是Vision And Learning SEminar的簡寫,取「華爾茲舞」之意。旨在為全球計算機視覺、模式識別、機器學習、多媒體技術等相關領域的華人青年學者提供一個平等、自由的學術交流舞台。

關鍵字: