董佩杰,牛 新,魏自勉,陳學暉
(國防科技大學計算機學院,湖南 長沙 410073)
深度神經網絡結構的不斷創新是推動深度學習技術快速發展的重要因素。以圖像識別任務為例,卷積網絡的應用使得AlexNet[1]在大規模視覺識別挑戰賽ImageNet[2]中遠超傳統的人工設計特征方法。此后,VGG[3]、GoogLeNet[4]分別采用小卷積核堆疊、卷積模塊組合的方式,進一步提升了分類效果。ResNet[5]提出殘差模塊設計,使得構建上百層高精度分類網絡成為可能。MobileNet[6]提出的深度可分離卷積推動了模型輕量化的發展。特征融合[7]、注意力機制[8]等主要以網絡結構創新的形式引入,推動了模型結構的發展。但在傳統人工模式下,神經網絡結構設計依賴于專家知識和開發經驗,開發流程復雜,迭代周期長。因此,研究人員開始關注并探索自動化設計網絡結構的方法,期望采用智能算法自動地發掘高效網絡結構,提出了神經網絡結構搜索NAS(Neural Architecture Search)算法。相比人工設計網絡,神經網絡結構搜索算法可以一定程度上降低對先驗知識的依賴,提高模型構建效率,并可進一步指導人工設計。
NAS算法通常采用迭代的搜索方式,在預先設定的搜索空間,通過某種搜索策略采樣并評估候選網絡,根據評估結果進行反饋,以優化搜索策略,如此迭代直到發現泛化性能最高的網絡結構,如圖1所示。當前主流的NAS算法,按搜索策略可劃分為基于進化算法[9]的NAS算法、基于強化學習[10,11]的NAS算法和基于梯度優化[12 - 14]的NAS算法。無論何種搜索策略,在迭代搜索過程中都需要采樣大量候選網絡結構進行評估。早期的網絡結構搜索算法[11]大多采用從頭訓練候選網絡到收斂的評估方式,導致了過高的計算代價以及過長的搜索時間,難以在大規模數據集例如ImageNet[2]上搜索網絡結構。例如,NASNet[15]在ImageNet上使用強化學習算法進行搜索,采用800塊顯卡訓練了28天;AmoebaNet[9]在ImageNet上使用進化算法進行搜索,采用450塊顯卡訓練了7天。

Figure 1 Searching phase of one-shot neural architecture search圖1 單次神經網絡結構搜索中的搜索階段
為提升網絡結構搜索效率,一系列評估技術相繼被提出,例如低保真度[9]、早停機制[16]和代理模型[17]等。這些方法往往通過犧牲評估精度來縮短搜索時間,并且評估過程存在不確定性,無法完全反映在真實任務上的性能。另一方面,一些研究嘗試將遷移學習思想引入NAS,由于搜索空間中的候選網絡存在結構相似性,能夠以相互協作的方式進行訓練。通過基于權重共享的遷移學習,候選網絡可以繼承先前經過訓練的、具有相似結構模型的權重參數,并在其基礎上進行微調,從而加速候選模型的收斂。作為一種代表性的權重遷移方式,單次神經網絡結構搜索(One-shot NAS)[12,18 - 21]算法被提出,因其靈活性和高效性,成為了當前網絡結構搜索方向的一個熱點。
One-shot NAS將所有網絡架構視為超圖(Super Graph)的不同子圖(Sub Graph)。超圖中包含了全部候選操作,因而包含了搜索空間內所有的網絡結構。每個特定的候選網絡對應超圖中的一個子圖,不同網絡結構之間會繼承共同部分的參數。如圖1所示,右圖對應的子圖選擇了左圖中超圖部分候選操作。子圖通過重用已訓練模型參數,加快了訓練和評估過程的收斂速度,進而提高了模型搜索效率。在超圖的訓練過程結束后,將采樣得到的子圖進行權重初始化,從頭開始訓練。
在One-shot NAS中,超圖可以視為一種特殊的性能評估器,即對給定網絡結構進行性能評估。性能評估過程看重的是不同網絡結構之間的相對性能排序,而不是評估結果的絕對值。根據排序相關性假設[22],在訓練的某個時刻,如果網絡A在某個數據集上的性能高于網絡B的,那么當兩者都訓練收斂后,網絡A的性能仍高于網絡B的。排序相關性如圖2所示,超圖上子圖模型的排序應與子圖模型從頭訓練的真實性能排序盡可能一致,這樣才能保證選擇的子圖是真實最優的。目前針對權重共享機制對排序相關性的影響還缺乏理論支撐,部分研究[20 - 22]發現,一些One-shot NAS算法的排序相關性較差,無法反映子圖充分訓練后的性能。Xie等人[23]從優化的角度對基于權重共享的結構搜索算法進行分析,指出排序相關性差是由于優化不足導致的,可以通過改進優化算法充分訓練超圖來緩解。

Figure 2 Ranking correlation in one-shot neural architecture search圖2 單次神經網絡結構搜索中的排序相關性
One-shot NAS中權重共享程度高,子圖之間存在協同適應(Co-adaptation)的問題,在子圖的優化過程中會存在沖突,降低了超圖的收斂速度,也影響了算法的排序相關性。為了更好更快地優化超圖,子圖的采樣策略、過程解耦及階段性對One-shot NAS算法性能起到了關鍵作用。
當前已經有一些關于神經網絡結構搜索的綜述[24 - 26],但是缺少針對單次神經網絡結構搜索的綜述,許多新方法、新趨勢在目前的綜述中未能涉及。因此,本文針對當前神經網絡結構搜索中的研究熱點One-shot NAS及其關鍵技術進行詳細分析。
在One-shot NAS的搜索過程中,耗時主要集中在評估階段。由于搜索空間隨著候選操作數量的增長呈指數級增長,早期網絡結構搜索算法對每個候選網絡從參數初始化開始進行充分訓練,會帶來巨大的計算開銷。為加速性能評估,直觀的思路是讓待訓練候選模型繼承先前已訓練模型知識,重用已訓練模型的參數,從而加快收斂速度。在深度學習中,模型學習到的通用特征表達可以用于其他下游任務,遷移學習常用于加速模型的收斂,遷移已有知識來解決目標域中數據量不足的問題。單次學習(One-shot Learning)[27]作為遷移學習的極端形式,其本意是利用遷移學習提升初始模型的泛化能力,使其具備通用特征提取能力,從而可僅用少量樣本學習新任務。類似地,One-shot NAS本質也是利用遷移學習提升候選網絡特征表達能力,通過共享超圖可以使候選網絡獲得良好的初始化權重,加速子圖的收斂。


Figure 3 Weight transfer (inheritance transfer and super graph transfer)圖3 權重遷移(繼承遷移和超圖遷移)

關于權重遷移的具體形式,One-shot NAS大多采用權重共享的方式,子網的權重來源為網絡結構配置相同的模塊或候選操作。例如,在ENAS[18]中,超圖是一個有向無環圖,被采樣的子圖會共享相同候選操作中的權重。
此外,也有部分研究通過網絡結構編碼來生成對應的權重,以實現權重遷移。典型算法SMASH(one-Shot Model Architecture Search through Hypernetworks)[30]引入了輔助超網絡(Auxiliary Hypernetwork)[31],能夠根據網絡結構編碼生成對應的權重。但是,這種權重生成的方式本身也需要優化,且遷移的方式缺乏直觀解釋,增加了遷移的復雜性。
近期一些工作顯示,One-shot NAS的權重共享程度越來越高,不同的候選操作之間也能夠進行權重共享。例如,Single Path NAS[32]中,較小卷積核會共享超級核居中位置的參數。類似地,OFA(Once For All)[33]也使用了可變形卷積核進行候選操作間卷積核的參數共享。Slimmable Network[34]、 US-Nets(Universally Slimmable Networks)[35]、AutoSlim[36]和FBNetv2(FeedBack Network v2)[37]等支持通道共享,通道數少的操作能夠共享通道數多的卷積核的參數。共享程度的提高一方面加速了模型收斂,降低了搜索開銷,另一方面也帶來了子圖間的深度耦合,提升了超圖的優化難度[20]。
經典的單次神經網絡搜索算法屬于兩階段神經網絡結構搜索算法(Two-stage NAS),包括搜索階段和評估階段。這種做法實際上是將超圖作為性能評估器用來指示候選網絡的真實性能,如圖1所示。首先,將搜索空間設計為超圖的形式,使超圖包含所有候選操作及隱含的網絡連接方式。在每個搜索迭代中,依次執行如下步驟:(1)使用某種策略,從搜索空間中采樣子圖并進行優化,更新超圖對應子結構的參數。(2)從訓練好的超圖中找出泛化性能最好的架構。(3)初始化最好的架構,充分訓練至收斂,得到最終模型。
在上述流程中,采樣策略的選取至關重要。在One-shot NAS中,合適的采樣策略能夠降低子圖之間的干擾,從而提升超圖的整體性能。采樣策略可以分為隱式采樣和顯式采樣,這部分內容將在3.1節詳細展開。
單次神經網絡結構搜索算法需要同時優化候選網絡結構和網絡權重。優化方式可以分為解耦優化和耦合優化。解耦優化指的是在優化超圖過程中,將對網絡結構的優化過程和網絡權重的優化過程解耦。耦合優化指的是交替優化網絡權重和網絡結構。這部分內容將在3.2節詳細展開。
單階段神經網絡結構搜索(One-stage NAS)算法針對兩階段神經網絡結構搜索訓練不充分的問題,提出一些訓練策略,有效提升了超圖的綜合性能,無需評估階段,這部分內容將在3.3節詳細展開。
One-shot NAS中對超圖的優化,本質上是按照一定的規則從超圖中采樣子圖并訓練子圖的過程。采樣策略的選擇決定了超圖的收斂速度、訓練的穩定性以及最終收斂結果。根據能否得到明確的網絡結構,采樣策略可分為隱式采樣策略和顯式采樣策略[38]。
基于隱式采樣的One-shot NAS算法無法得到具體的網絡結構配置,而是將候選網絡結構的選擇映射到可微連續參數空間,采樣過程隱含于網絡結構參數表示的混合概率分布。候選網絡結構參數連續化可以將離散空間上的搜索問題轉化為連續優化問題,優化結構權重組合及網絡權重。例如,DARTS(Differentiable ARchiTecture Search)[12]引入了網絡結構參數,將搜索空間松弛化,從而可以使用梯度優化進行網絡結構搜索。基于顯式采樣的One-shot NAS算法能夠明確得到具體的候選網絡結構配置,典型的采樣方法包括使用學習器采樣或者從某概率分布中進行采樣。例如,ENAS[18]使用遞歸神經網絡學習器采樣,并使用強化學習算法優化采樣過程。雖然隱式采樣可以用連續優化手段提高搜索效率,但在每一步優化過程中,計算及存儲代價更高。
3.1.1 隱式采樣策略
隱式采樣策略可表述為一個可微分的搜索過程,將采樣過程隱含于網絡結構參數α={αi|αi∈R,1≤i≤m},其表示對應的候選操作O={o1,o2,…,om}的采樣概率,其中m表示每層候選操作數量。通過將原來離散選擇候選操作的問題進行松弛化,轉化為連續空間中的優化問題進行求解。在基于隱式采樣策略的結構搜索中,網絡結構搜索被建模為雙層優化(Bi-level Optimization)問題,即網絡權重參數w和網絡結構參數α相互影響。
圖4展示了隱式采樣策略的流程,超圖的每條邊上有m個候選操作O={o1,o2,o3,…,om},分別對應m個網絡結構參數α={α1,α2,α3,…,αm},根據式(1)將離散的選擇過程松弛化。

Figure 4 Process of implicit sampling strategy圖4 隱式采樣策略流程
(1)

DARTS[12]是可微分結構搜索中的代表算法,是第1個端到端的可微分搜索算法,大幅降低了搜索開銷,在單個GPU上訓練一天即可完成搜索。DARTS創建了可微分神經網絡結構搜索的新范式,但其存在一些亟需解決的問題,例如計算存儲占用過高,大規模數據集訓練困難,還有性能崩潰問題(Performance Collapse)等。
關于可微分結構搜索算法計算存儲問題,梯度優化方法一般需要加載整幅超圖,內存占用會隨著搜索空間中候選操作數量的增加呈指數增大。反之,在內存受限情況下,搜索空間大小會受到限制。后續一些工作,如SNAS(Stocastic NAS)[39]、GDAS(Gradient-based search using Differentiable Architecture Sampler)[40]、FBNet(FeedBack Network)[41]和DATA(Differentiable ArchiTecture Approximation)[42]等,通過使用Gumbel-Max技巧[43]解決了從離散的候選操作中采樣的不可微問題,每次進行前向傳播的過程中只更新一幅子圖,有效地降低了計算內存占用。PC-DARTS(Partial Channel DARTS)[44]提出了對原有通道數量的1/S進行結構搜索,而剩余通道使用殘差連接,能夠將內存占用量降低為原來的1/S,同時提出了邊歸一化技術,增加了訓練過程的穩定性。
可微分結構搜索算法被認為是計算密集型網絡結構搜索方法,直接應用于大規模任務所需要的計算代價極為昂貴。由于對計算內存要求高,在可微分結構搜索算法上也難以用大批量(Batch Size)進行梯度優化,這更增加了大規模數據集訓練的難度。一種常見的處理策略是在代理任務(如CIFAR10數據集[45])上搜索網絡的基本單元,再將最優單元遷移至目標任務(如ImageNet數據集[2])。然而,目標任務上的網絡模型與在代理任務上搜索得到的網絡模型存在深度差異(Depth Gap),借助代理任務進行搜索得到的模型是次優的。P-DARTS(Progressive DARTS)[46]通過漸進增加網絡深度來解決深度差異問題,在網絡層數增加的過程中逐漸減少候選操作數量以緩解深度差異。ProxylessNAS[47]提出了路徑二值化的方法,降低訓練過程中的計算存儲占用,能夠直接在目標任務上搜索。
性能崩潰是DARTS等可微分結構搜索算法存在的特有問題,當搜索輪數過大的時候,搜索得到的結構會包含過多的跳躍連接,導致性能下降。在搜索的初期階段,超圖處于欠擬合的狀態,網絡結構參數α和網絡權重參數w是合作關系。隨著訓練的進行,由于深層網絡優化難度更大,算法會傾向于選擇簡單的跳躍連接,此時網絡結構參數α和網絡權重參數w變為競爭關系,導致性能崩潰。針對此問題,R-DARTS(Robust-DARTS)[22]根據海森矩陣特征值發現損失面中曲率高的部分對應的模型泛化性能更差,引入正則化項來降低海森矩陣特征值,能夠讓DARTS變得更加魯棒。DARTS+[14]提出了正則化方法,在單元內部跳躍連接過多時停止搜索。DARTS-[48]發現性能崩潰的出現是由于跳躍連接相比其他操作在搜索過程中處于優勢地位,于是通過引入輔助跳躍連接來確保所有操作的公平性。
3.1.2 顯式采樣策略
顯式采樣策略代表在網絡結構搜索過程中可以顯式得到網絡結構配置,主要包括基于無偏分布的采樣策略和基于學習器的采樣策略。
基于無偏分布的采樣策略發現隱式采樣策略中使用的雙層優化策略會在優化過程中帶來偏差,并沒有平等地對待每個子圖。因此,優化初期性能較好的結構可能得到更多的訓練機會,而某些子結構無法得到充分訓練,一些潛在的高效網絡結構在搜索過程中可能被忽略。從訓練公平性出發,基于無偏分布的采樣策略賦予每個候選操作相同的訓練機會,最大限度發掘每個候選操作的潛能。Random NAS[49]從無偏概率分布中進行獨立采樣,使得每個候選操作被選擇的概率相同。One-shot[29]在網絡結構優化的過程中隨機采樣子圖,同時配合路徑丟棄法(Path of Drop out)在訓練超圖的同時降低子圖間的干擾。之后,SPOS(Single Path One Shot)[19]簡化了One-shot的搜索空間,構建了單路徑的超圖,訓練超圖過程中采用了均勻采樣的策略,保證每個層內部的候選操作具有均等機會被采樣,能夠有效地提升排序相關性。FairNAS[50]指出SPOS中均勻采樣策略中不同的采樣順序會對超圖的優化產生影響,提出在超圖的每次迭代中,每一層可選擇運算模塊的參數都需要參與訓練,進一步提高了模型的排序相關性。
基于學習器的采樣策略通過引入額外的學習器完成采樣,并根據性能反饋更新學習器參數。基于學習器的采樣策略將神經網絡結構搜索視為黑盒優化,在無法求解梯度的情況下,通過觀察輸入和輸出,預測黑盒函數的結構信息。強化學習(Reinforcement Learning)和蒙特卡羅樹搜索MCTS(Monte Carlo Tree Search)可以用于神經網絡結構搜索。強化學習對網絡結構搜索問題進行重新建模,通過代理(學習器)與環境的交互過程學習策略,例如,ENAS[18]通過引入遞歸神經網絡作為學習器,順序地生成網絡編碼得到網絡結構,然后使用REINFORCE(REINFORCEment learning)[15]方法來訓練學習器。預算超級網絡(Budgeted Super Network)[51]通過引入參數化分布,使用策略梯度算法[52]對網絡權重和參數化分布進行優化,指導子網絡的采樣。然而,強化學習會同等對待所有的狀態,不考慮每個狀態過去的探索情況,難以很好地做到利用與探索權衡(Exploitation-exploration Tradeoff)。蒙特卡羅樹搜索對每個狀態建模,在大規模狀態空間下效果更好。DeepArchitect[53]首次使用蒙特卡羅樹進行神經網絡結構搜索,使用蒙特卡羅樹對搜索空間進行切割,完成采樣過程。AlphaX[54]通過分布式蒙特卡羅樹搜索引導遷移學習,利用深度神經網絡提高預測網絡的準確性,以加速搜索過程。LaNAS(Latent action NAS)[55]在蒙特卡羅樹每個節點使用線性函數切分搜索空間,將搜索空間遞歸劃分為包含相似性能網絡的好區域或壞區域,顯著地提高了搜索效率。LA-MCTS(Latent Action Monte Carlo Tree Search)[56]在LaNAS基礎上進行改進,通過在線的方式,使用非線性決策邊界劃分搜索空間,并使用貝葉斯優化選擇候選對象。
One-shot NAS算法的搜索階段由網絡權重w優化和網絡結構參數α優化組成,根據2個優化過程是否解耦,可以劃分為耦合優化和解耦優化[24]。耦合優化一般通過交替優化網絡權重參數w和網絡結構參數α,在優化過程中兩者會互相依賴于對方,相互影響。由于需要結構參數參與優化,目前主要針對可微分神經網絡結構搜索算法[12,39,40,47]等隱式采樣算法采用優化方法。解耦優化將網絡權重參數w優化和網絡結構參數α優化2個階段解耦。第1個階段優化網絡權重參數w,通過優化采樣得到的子圖得到訓練好的超圖。第2個階段優化網絡結構參數α,將超圖作為性能評估器選擇最優網絡結構,在優化α的過程中不會對網絡權重參數w產生影響。一些結構搜索算法[19,50,57]通過解耦2個階段有效地緩解了權重共享導致的協同適應問題。耦合優化會使得超圖出現協同適應問題,影響了模型的泛化能力;解耦優化雖然避免了以上問題,但是需要解決由于權重共享導致的超圖內不同的子網之間的權重耦合問題。
3.2.1 網絡權重與網絡結構的耦合優化
可微分神經網絡結構搜索算法[12,39,41,47]是網絡權重與網絡結構耦合優化的代表性方法,通過引入網絡結構參數θ將離散的搜索空間A松弛為連續搜索空間A(θ),其中松弛后的空間包含了原搜索空間(A?A(θ))。通常采用雙層優化(Bi- level Optimization)交替優化網絡權重參數w和網絡結構參數θ,將優化網絡權重參數和網絡結構參數2個過程以耦合的方式進行優化,如式(2)所示:
(2)
其中,雙層優化的復雜度通常由2個變量所決定,求解以上優化問題的復雜度為O(|w||θ|),主要受搜索空間中候選操作個數以及候選操作本身的參數量影響。在網絡訓練過程中,參數量較少的候選操作可以在短時間內收斂并表達出其相應的功能,而參數量較大的候選操作則需要更長時間收斂。這樣會導致出現馬太效應(Matthew Effect)[58],即算法會減少在早期表現較差的候選操作對應的結構參數,而結構參數的減少會導致其反向傳播的梯度更小,需要更長的訓練時間。而由于訓練不充分,會導致結構參數進一步減少。馬太效應導致算法將過多的計算資源集中于早期表現較好的候選操作,無法充分發揮各個候選操作的作用。R-DARTS[22]發現原來的搜索方式不夠穩定,泛化能力較差,通過追蹤驗證集損失對結構參數二階導的特征值,發現結構參數在數據集上發生了過擬合。通過使用正則化方法,如早停法、增大正則項及數據增強等,增加了訓練過程的穩定性。DropNAS(grouped operation Dropout for DARTS)[58]針對可微分神經網絡結構搜索算法中協同適應問題和馬太效應,提出根據候選操作的參數量劃分小組,每組設置不同的丟棄率(Dropout Rate)參數,緩解了協同適應問題。StacNAS(Stable and consistant DARTS)[59]指出相似候選操作之間相互適應是導致DARTS崩潰的核心原因,提出候選操作聚類(Operator Clustering)方法,使用兩級搜索緩解了協同適應問題,提升了算法魯棒性。BNAO(Balanced one-shot Neural Architecture Optimization)[60]指出參數量小的操作相比參數量大的操作更容易優化,提出了平衡訓練策略,使得每個網絡結構被采樣的概率與其參數量成正比,解決了原來訓練方法中存在的優化不足的問題。
3.2.2 網絡權重與網絡結構的解耦優化
在One-shot NAS中,解耦優化表示將網絡結構優化和權重優化解耦為2個階段,依次優化。第1個階段,對超圖權重wA進行優化:
(3)
其中,優化目標為降低訓練集上的損失函數Ltrain。
第2個階段,對超圖權重wA對應的結構參數α進行優化:
(4)
其中,wA(α)代表繼承了超圖權重的子圖,ACCval(wA(α))代表候選結構參數α在驗證集上的準確率。以上優化過程是解耦的,求解該問題的復雜度為O(|w|+|α|),其中超圖的復雜度受搜索空間影響,而第2個階段與具體搜索算法設計相關。
超圖反映了其所能代表的搜索空間。復雜的超圖對應的搜索空間自由度更高,但搜索時優化的難度更大,找到泛化能力最強的網絡結構耗時也越久。因此,近期的一些工作借鑒了人工設計網絡的經驗,在超圖每一層提供了多個模塊,構成了單路徑的超圖范式,降低了超圖的復雜度。用單路徑超圖表示搜索空間最早是由SPOS[19]提出的,如圖5所示,單路徑超圖在網絡的每一層提供了5個候選模塊{o1,o2,o3,o4,o5},每一層可以選擇其中1個候選模塊。在訓練階段,隨機選取單路徑子圖并使用隨機梯度下降算法優化。在評估階段,使用進化算法從超圖中找到最優網絡。在單路徑超圖設計下,雖然復雜度降低,但是其搜索空間依然比較大,需要一定的手段提升優化效率。GreedyNAS(one-shot NAS with Greedy supernet)[57]發現由于搜索空間非常大,期望超圖正確預測所有路徑的要求過高,不同路徑的耦合會導致訓練壞的路徑對好的路徑產生干擾,因此提出了貪婪路徑過濾(Greedy Path Filtering)策略,一次性采樣一個批次路徑,根據在驗證集上計算得到的損失進行排序,然后訓練損失值比較小的路徑,拋棄損失值比較大的路徑。BNNAS(NAS with Batch Norm)[61]觀察到批歸一化中的γ參數起到了指示通道重要性的作用,將γ參數作為衡量子圖性能的指標。BNNAS在訓練過程中固定卷積參數,只訓練批歸一化層的參數,進一步縮短了搜索所用時間。知識蒸餾是一個模型壓縮的過程,能夠將知識從較大的教師網絡遷移到較小的學生網絡。OFA[33]提出了漸進收縮訓練策略,將規模最大的超圖作為教師網絡,引導規模小的子圖的學習,緩解了搜索空間過大帶來的優化問題。

Figure 5 Single path super graph圖5 單路徑超圖
在單路徑的超圖中,其對應的搜索空間自由度較低,相同層會共享相同的模塊,模塊間會協同適應。在超圖中不同的候選操作之間的優化有著高度相關的行為,并且在訓練超圖的過程中,子圖之間的參數以強關聯的方式進行更新,在優化的過程中共享參數會互相影響,不同的子圖之間存在一定程度耦合。共享權重一方面有助于彼此訓練,但權重共享程度過高則會導致子圖之間互相干擾。降低子圖之間的耦合度有利于提升One-shot NAS算法的排序相關性。
目前子圖間解耦有2種常見的方法。第1種是使用正則化方法進行子圖間解耦,路徑丟棄法是一種通用的路徑解耦方法。One-shot[29]發現使用常規優化方法會導致各部件之間相互耦合,移除任一操作會導致準確率較大幅度下降。為了讓算法更加魯棒,提出了路徑丟棄法(Path Dropout)來解耦子網絡并使用一種變體的批歸一化操作進一步穩定訓練。第2種是引入額外權重降低超圖的共享程度,從而實現子圖間解耦。這類工作的動機來自于文獻[21],發現在One-shot NAS中,權重共享度越高,算法的排序相關性越差。為了降低子圖之間權重共享度,有些研究通過引入獨立于超圖的參數來降低子圖間的耦合度。文獻[62]為了降低單路徑搜索空間中的耦合程度,為當前層和前一層的操作引入偏差權重,對輸入值進行動態調整,可以在搜索代價不明顯增加的情況下提升模型性能。Scarlet-NAS[63]為了解決單路徑超圖中跳躍連接帶來的訓練震蕩問題,使用線性等價變換來穩定訓練過程。Few-Shot NAS[64]針對超圖中不同候選操作之間的耦合問題,提出了使用多個超圖共同協作覆蓋整個搜索空間的方法。在劃分搜索空間的過程中,引入了多個不重疊的超圖,以互補的方式覆蓋完整的搜索空間。類似地,K-Shot NAS(learnable weight-sharing for NAS withK-shot supernets)[65]通過引入K個超圖為每個候選操作提供了K個獨立的權重,對于每個子圖的每個操作,提出使用額外的網絡SimpleX生成K個超圖組成的凸組合進行耦合優化。
One-shot NAS根據流程可以劃分為2類[24]:單階段神經網絡結構搜索和兩階段神經網絡結構搜索。Two-stage NAS(如圖6所示)包括搜索階段和評估階段。在搜索階段通過優化網絡結構和網絡權重,得到一些有潛力的模型;在評估階段從頭開始訓練,以獲得最終模型。典型的算法有ENAS[18]、DARTS[12]和SPOS[19]等。

Figure 6 Process of Two-stage neural architecture search圖6 兩階段神經網絡結構搜索的基本流程
單階段神經網絡結構搜索方法(如圖7所示)是近期發展的方法,相比兩階段方法,無需評估階段,可以直接從超圖中得到最終模型。典型的算法有OFA[33]、BigNAS(scaling up NAS with Big single-stage models)[66]和AtomNAS[67]等。

Figure 7 Process of One-stage neural architecture search圖7 單階段神經網絡結構搜索的基本流程
3.3.1 兩階段神經網絡結構搜索
Two-stage NAS算法[18,19,4]將網絡結構搜索問題分為2個階段。在搜索階段對超圖進行結構優化和權重優化,然后將超圖作為性能評估器測試子圖的性能,得到有潛力的模型;在評估階段從頭訓練有潛力模型,挑選出泛化能力最好的網絡作為最終模型。由于Two-stage NAS中超圖訓練不夠充分,在完成搜索階段后從超圖中采樣得到的子圖的性能較差,因而需要在評估階段從頭訓練以達到更高性能。而評估階段能選擇到最優子圖的前提是超圖的精度排序和子圖真實的精度相對排序有較強的相關性。Yu等人[21]對典型的One-shot NAS算法[12,18]進行了評估,發現基于權重共享的算法排序相關性比較差,難以反映模型真實性能排序。為了衡量排序相關性,在Two-stage NAS中需要引入新的指標來衡量超圖反映真實排序的能力,一般用肯德爾相關性系數(Kendall Correlation Coefficient)或者皮爾遜相關性系數(Person Correlation Coefficient)來評估超圖得到的網絡結構排序與網絡真實排序之間的相關性。
排序相關性是Two-stage NAS中重要的研究內容,一些研究[21]發現,算法的排序相關性與搜索空間的復雜度有一定關聯。復雜搜索空間,如NAS-Bench-101[68]和DARTS類搜索空間[12],排序相關性趨于零;簡單搜索空間,如SPOS[19]和FairNAS[50]等使用了精心設計的采樣策略,平等地訓練所有候選操作,排序相關性較好。Landmark Regularization[38]顯式地引入用于衡量排序相關性的正則項,將關鍵候選網絡的性能信息引入超圖的優化過程,最大化超圖的性能排名與獨立網絡的性能排名的相關性。還有一些工作通過引入一些新的指標來判斷網絡的相對性能,例如,AngleNAS(Angle-based search space shrinking for NAS)[69]、RLNAS(NAS with Random Labels)[70]中使用了層旋轉(Layer Rotation)來衡量子模型的泛化能力,層旋轉越大,其泛化能力越強,模型性能相對排序就越高,有效地提升了算法的排序相關性。NASWOT(NAS WithOut Training)[71]通過對初始化神經網絡進行簡單的觀察,使用漢明距離衡量網絡的線性映射情況衡量子圖的性能,能夠免去訓練過程,大幅降低了計算代價。TE-NAS(Training freE NAS)[72]引入神經正切核的頻譜和輸入空間線性區域數量來衡量子圖的相對性能,能夠在無需訓練的情況下選擇最佳網絡結構。
3.3.2 單階段神經網絡結構搜索
Two-stage NAS算法中對超圖的訓練不夠充分,將訓練好的超圖作為性能評估器,用于衡量子圖的相對性能。直接繼承超圖權重的子圖在驗證集上的性能較差,無法直接作為最終模型。One-stage NAS通過提出一系列有針對性的優化策略,能夠讓超圖中所有子圖的性能得到顯著提升,甚至超過人工設計的網絡結構的性能。因此,One-stage NAS無需通過評估階段從頭開始訓練,從超圖中直接采樣得到的網絡模型就能夠直接用于部署。這種特性有利于NAS算法從通用硬件到專用加速器的模型部署,提高了算法的應用場景和使用價值。
最早的單階段神經網絡結構搜索算法是OFA[33],提出漸進收縮(Progressive Shrinking)的訓練策略,先訓練最大深度、寬度和卷積核的最大超圖,然后微調超圖以支持更小深度、寬度和卷積核對應的子圖。這種策略可以為較小的子圖提供更好的初始化權重,防止訓練過程中多個子圖之間互相干擾,提高了訓練的效率。在這種方法限制下,所有子圖的性能得到了一致性提升。BigNAS[66]遵從了單階段神經網絡結構搜索算法的范式,使用由粗到細的架構選擇策略(Coarse-to-fine Architecture Selection)采樣子圖,并配合三明治法則(Sandwich Rule)和原地蒸餾(Inplace Distillation)對超圖進行優化,無需額外的訓練或者后處理步驟。這些有針對性的策略能夠更充分地訓練超圖,使得所有子圖模型都經過訓練,在搜索結束時可以同時取得優秀性能,整體性能得到了一致的提升。CompOFA[89]針對OFA搜索階段代價過高的問題,認為網絡的寬度和深度不是相互獨立的,存在復合關系,基于此提出了復合采樣策略,使網絡的寬度和深度成對縮放,縮小了OFA的搜索空間,使采樣得到的模型能夠更好地權衡精度和復雜度,將訓練時間縮短為原來的一半。AtomNAS[67]從模型剪枝的視角來建模One-shot NAS,通過引入硬件感知的縮放因子來控制搜索空間,在訓練超圖的過程中,逐步剪枝影響因子非常小的分支,從而得到最終的模型,實現了端到端的搜索和訓練,無需從頭開始訓練。
在可微分神經網絡結構搜索中,一些研究工作[39,74]通過降低訓練過程中的偏差,維持了整個流程的完整性和可微性,實現了單階段可微分神經網絡結構搜索。SNAS[39]和DSNAS[74]指出大部分可微分網絡結構搜索方法無法實現單階段神經網絡結構搜索的主要問題在于搜索的目標函數的近似中引入了過多的偏差。SNAS通過更嚴格的近似,在每次反向傳播過程中同時訓練網絡結構參數和網絡權重參數,使得SNAS中的子圖在搜索階段可以維持較高的驗證準確率。但是,SNAS的優化過程需要把整幅超圖都存入顯存中,導致無法直接在ImageNet等大型數據集上優化。DSNAS進一步解決了SNAS的效率問題,利用Gumbel Softmax替換了SNAS中的結構分布參數,能夠直接在ImageNet數據集上進行訓練,并且DSNAS派生的網絡結構可以直接部署。
本節主要關注One-shot NAS算法的3個評價指標,即準確率、參數量和訓練耗時。準確率是評估模型性能的重要定量指標,能夠反映模型正確分類的能力。參數量反映了模型所有帶參數層的權重參數總量,可以用于衡量模型的復雜度。一般來說,參數量越大的模型復雜度越高,模型容量越大,能夠擬合的數據規模也越大;訓練耗時也是NAS中比較關心的指標,通常使用GPU天來衡量,即搜索算法需要在多個GPU上運行的天數。
NAS中常用的分類數據集有CIFAR10[45]、CIFAR100[75]和ImageNet[2]等。由于ImageNet數據集規模更大,貼合實際應用場景的要求,因此主要關注各算法在ImageNet數據集上的性能表現。典型的One-shot NAS算法在ImageNet數據集上的搜索效果如表1所示,表中匯總了各個算法在文獻中給出的結果,其中‘-’代表文獻中未公布結果。ENAS[18]和RobustDARTS[22]等僅在小規模數據集(如CIFAR10)上給出了結果,沒有提供在ImageNet數據集上訓練結果的算法,沒有納入此表。另外,表1中的一些算法,如DARTS[12]、GDAS[40]和SNAS[39]等并沒有在ImageNet上直接搜索,而是將CIFAR10作為ImageNet數據集的代理任務,將在代理任務上的最優網絡結構通過遷移學習的方法遷移到ImageNet目標任務。

Table 1 Experimental results of one-shot neural architecture search algorithms on ImageNet表1 單次神經網絡結構搜索算法在 ImageNet 數據集上的實驗結果
從表1可知,One-stage NAS算法,如BigNAS和OFA,準確率整體上都要比Two-stage NAS算法的高,能夠更好地權衡精度和參數量。但是,其消耗的計算資源更高,以OFA為例,整個訓練過程需要在NVIDIA Tesla V100顯卡上運行50天。基于可微分神經網絡結構搜索的算法在耗時方面遠低于One-stage NAS的,以DARTS為代表,整個訓練過程僅需在1080Ti顯卡上運行1天。
與早期的神經網絡結構搜索算法[10,11]相比,One-shot NAS的搜索時間要少很多。具體來說,One-stage NAS算法適用于數據規模大,并且需要多平臺部署的場景,因為其無需重新訓練子圖。而可微分神經網絡結構搜索算法則適用于需要快速迭代模型的場景,比如數據集增量更新的情景。由于其計算代價低,能夠快速得到目標網絡。
神經網絡結構搜索是自動機器學習領域的研究熱點,也是計算機視覺領域的重要研究方向。針對傳統神經網絡結構搜索算法搜索效率低的問題,One-shot NAS通過超圖進行權重共享,有效地降低了訓練開銷和資源占用。雖然One-shot NAS取得了一定的成果,但是仍存在很多值得研究的問題,主要體現在以下幾個方面:
(1)超參數與網絡結構搜索的協同優化。不同結構的網絡所使用的最佳超參數是不同的,而現有算法在搜索階段會使用一組固定的超參數進行搜索,在評估階段則會調整超參數。2個階段使用不同的超參數帶來的差異會導致搜索得到的模型是次優的。近期有些研究工作開始探索這個方向,聯合搜索訓練超參數和網絡結構,取得了不錯的效果。
(2)One-stage NAS算法開始嶄露頭角。早期的基于超圖的工作大多屬于Two-stage NAS,訓練技術不夠成熟。單階段神經網絡結構搜索,通過對超圖中各個子圖進行充分訓練,使所有的子圖性能得到一致的提升,無需評估階段,降低了評估階段帶來的開銷。One-stage NAS具有廣泛的應用場景,適用于在專用加速器上的模型部署,具有較高的應用價值。
(3)搜索空間的設計與探索。早期的工作中搜索空間主要由卷積層、池化層等構成。近期一些工作如GLIT(Global and Local Image Transformer)[77]、BossNAS(Block-wisely self-supervised NAS)[78]將Transformer[76]模塊引入搜索空間,探索卷積與Transformer的組合方式,并將其應用在計算機視覺領域,取得了超越卷積神經網絡的結果。
(4)無監督網絡結構搜索。以對比學習為代表的無監督學習取得了驚人的效果,并且有些研究工作[78]開始結合NAS提出新的訓練方案,在排序一致性以及準確率方面取得了新的進展。
本文針對單次神經網絡結構搜索算法研究方向,主要從采樣策略、過程解耦和階段性3個方面對關鍵技術進行綜述,有助于研究人員快速了解One-shot NAS領域。神經網絡結構搜索算法也存在著一些難題亟待解決,仍需要研究人員共同努力,以推動其真正落地進入產業,推動人工智能領域的進步。