李建明,陳 斌,江志偉,覃 健
(1.中國科學院成都計算機應用研究所,成都 610041;2.中國科學院大學,北京 100049;3.哈爾濱工業(yè)大學(深圳)國際人工智能研究院,廣東深圳 518055;4.中科院廣州電子技術有限公司,廣州 510070)
網(wǎng)絡架構是影響卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)的重要因素,有些學者致力于改進神經(jīng)網(wǎng)絡架構的設計以提升其性能[1-5]。其中,比較有代表性的網(wǎng)絡架構有:谷歌網(wǎng)絡(GoogLenet)[2]、殘差網(wǎng)絡(Residual Network,ResNet)[3]、稠密卷積神經(jīng)網(wǎng)絡(Dense convolutional Network,DenseNet)[4]、壓縮激活網(wǎng)絡(Squeeze-and-Excitation Network,SENet)[5]等。雖然這些網(wǎng)絡架構在ImageNet 數(shù)據(jù)集上的表現(xiàn)逐年得到了提升,但其設計過程由專家手動實現(xiàn),需要專家耗費大量時間進行試錯實驗,所以這種方法效率較低。自神經(jīng)網(wǎng)絡架構搜索(Neural Architecture Search,NAS)[6]被提出以來,越來越多的研究開始采用此類方法,模擬人類專家自動設計網(wǎng)絡架構,以提升設計的效率和架構的性能。
按NAS 采用的優(yōu)化方法,目前常用的方法大致可分為三類:基于強化學習(Reinforcement Learning,RL)[6-7]的搜索方法、基于進化算法(Evolutionary Algorithm,EA)[8-9]的搜索方法和基于可微分架構搜索(Differentiable ARchiTecture Search,DARTS)方法[10]。其中,DARTS 方法在超網(wǎng)絡端到端的訓練中,以基于梯度(gradient-based)的優(yōu)化方式實現(xiàn)了架構搜索,具有計算資源需求較低、搜索效率高的優(yōu)點[10]。該方法引起了眾多學者的關注,并出現(xiàn)了一系列的改進方法[11-16]。文獻[11]提出了一種新的可微分神經(jīng)網(wǎng)絡架構搜索(Differentiable Neural Architecture Search,DNAS)框架,通過逐層構建可搜索模塊的方式重新設計搜索空間,并引入耿貝爾(Gumbel)采樣建模搜索過程,以得到精度和運算效率更高的架構。文獻[12]設計了5 種不同的搜索空間,以分析DARTS 的退化問題,然后提出了L2 正則化方法以改善該問題。文獻[13]提出了隨機神經(jīng)網(wǎng)絡架構搜索(Stochastic Neural Architecture Search,SNAS)算法,通過限制架構參數(shù)為獨熱編碼(one-hot)形式構建超網(wǎng)絡,以改善DARTS 因派生cell 的方法而導致超網(wǎng)絡與派生架構出現(xiàn)性能“鴻溝”的問題。文獻[14]提出了公平的可微分網(wǎng)絡架構搜索(Fair-DARTS)方法,采用S 狀彎曲(Sigmoid)函數(shù)替換軟最大(Softmax)函數(shù),使各架構參數(shù)能公平地競爭,并設計了“零一”損失(zero-one loss)正則化項促使架構參數(shù)向0 或1 收斂。盡管以上研究從不同角度分析了DARTS 方法存在的問題,也提出了相應改進,但很少有文獻從搜索空間的角度分析和改進DARTS。
針對上述問題,本文提出了優(yōu)化搜索空間下帶約束的可微分神經(jīng)網(wǎng)絡架構搜索算法。首先,以架構參數(shù)為量化指標,本文繪制了各架構參數(shù)在DARTS 超網(wǎng)絡優(yōu)化過程中的變化曲線,結(jié)合其派生策略,指出DARTS 派生架構性能欠佳的問題,根源上是由其搜索空間的設計導致的,并針對該問題改進了搜索空間的設計。然后,受文獻[13]啟發(fā),在優(yōu)化搜索空間的基礎上,針對DARTS 因派生策略而導致架構決策確定性不足的問題[13],本文將架構熵引入DARTS,并將其作為超網(wǎng)絡待優(yōu)化目標函數(shù)的約束項,促使超網(wǎng)絡得到確定性更高、表現(xiàn)更好的架構。最后,本文在CIFAR-10 數(shù)據(jù)集上進行了實驗,算法搜索環(huán)節(jié)僅耗時8.5 h,算法評測環(huán)節(jié)中,搜得的架構在該數(shù)據(jù)集上取得了97.17%的分類準確率。實驗結(jié)果表明,本文提出的改進方法是有效的,并且提升了搜得網(wǎng)絡架構的表現(xiàn)。
類似于人工設計方法中模塊化的設計思想,DARTS 以cell 為架構搜索的基本單元,并用有向無環(huán)圖表示[10]。該圖包含若干有序結(jié)點和連接結(jié)點的有向邊,其中,結(jié)點表示網(wǎng)絡的特征圖,有向邊表示結(jié)點間的變換操作。DARTS 定義的cell 共7 個有序結(jié)點,分別是2 個輸入結(jié)點(編號k-2、k-1)、4 個中間結(jié)點(編號0、1、2、3)和1 個輸出結(jié)點(output)。其中,各中間結(jié)點,每個都通過有向邊與輸入結(jié)點和其前序的中間結(jié)點相連,定義如式(1)所示:
其中:x(j)代表cell 的中間結(jié)點,x(i)代表x(j)的前序結(jié)點,o(i,j)代表連接x(j)和x(i)的變換操作,i和j代表結(jié)點序號。
DARTS 向cell 中引入了架構參數(shù)α,并以堆疊的cell 構建超網(wǎng)絡進行端到端的訓練,把離散的架構搜索問題轉(zhuǎn)化為連續(xù)空間的參數(shù)優(yōu)化問題。該算法主要包含架構搜索和架構評測兩個環(huán)節(jié)。
在架構搜索環(huán)節(jié),cell 中的邊代表的變換操作,是候選操作和架構參數(shù)加權求和的混合操作,其中各架構參數(shù)作為對應候選操作的權重。為了使各架構參數(shù)具有相同的取值范圍,該算法采用了Softmax 函數(shù)對各架構參數(shù)進行松弛化操作,把架構參數(shù)的值歸一化到(0,1)區(qū)間。經(jīng)Softmax 后,式(1)中的變換操作重寫如下:
其中:o(x)表示候選操作表示松弛化后的變換操作,表示有向邊(i,j)中候選操作o或o′對應的架構參數(shù),i和j表示結(jié)點序號。O表示候選操作集合,共包含8 個候選操作,分別為3×3/5×5 可分離卷積(sep_conv)、3×3/5×5 空洞 可分離卷積(dil_conv)、3×3平均/最大池化(avg/max_pool)、跳連操作(skip_connect)和無連接(none)。
在架構評測環(huán)節(jié),DARTS 先對搜索環(huán)節(jié)得到的cell 進行派生,得到簡化的cell。派生過程包含兩步簡化操作,分別為1)候選操作簡化:在有向邊包含的8 個候選操作中,僅保留權重最大(none 除外)的操作。2)有向邊簡化:經(jīng)候選操作簡化后,在各中間結(jié)點與所前序結(jié)點相連的邊中,僅保留包含權重top-2 的兩條邊。然后,以簡化的cell 構建評測網(wǎng)絡,以評測結(jié)果作為搜得架構的評價指標。
本章介紹如何從有向邊和超網(wǎng)絡兩個層面提升DARTS算法的確定性。本文2.1 節(jié)分析了DARTS 算法中搜索空間設計導致搜得架構性能欠佳的問題,并設計了優(yōu)化的搜索空間。2.2 節(jié)分析DARTS 算法超網(wǎng)絡存在的確定性不足的問題,并針對性地向DARTS 引入架構熵作為目標函數(shù)的約束項。
根據(jù)DARTS 算法的策略,在搜索環(huán)節(jié),cell 中的每條有向邊代表的變換操作都由式(2)定義。該公式從兩個角度定義了架構參數(shù):1)各架構參數(shù)作為權重,衡量了候選架構在變換操作中的重要性;2)松弛化架構參數(shù),不僅將各架構參數(shù)歸一化到(0,1)區(qū)間,還限制了有向邊中各候選操作對應的架構參數(shù)之和為1。通過該公式的限制,算法的預期目標是,超網(wǎng)絡優(yōu)化完成后,以架構參數(shù)為量化指標比較各候選操作的重要性,并保留架構參數(shù)最大的候選操作作為最優(yōu)操作。
為了分析上述策略是否達到預期目標,本文以具有代表性的有向邊Edge(k-2,0)(其中,k-2 和0 表示結(jié)點編號)和有向邊Edge(0,1)為例,繪制邊中架構參數(shù)隨超網(wǎng)絡優(yōu)化次數(shù)的變化曲線,如圖1(a)(b)所示。本文發(fā)現(xiàn),所有有向邊中的架構參數(shù)主要呈現(xiàn)這兩種變化趨勢:如圖1(a)的變化趨勢,出現(xiàn)在中間各結(jié)點最淺的連接邊(即中間結(jié)點與輸入結(jié)點的連接邊)中;如圖1(b)的變化趨勢,出現(xiàn)在其他所有的較深的邊中。
圖1(a)中,各架構參數(shù)取值較為分散,按派生策略步驟1)勝出的候選操作,基本能實現(xiàn)DARTS 算法以架構參數(shù)選優(yōu)的設計思想。圖1(b)中,none 操作對應的架構參數(shù)最大,且具有壓倒性的優(yōu)勢,同時由于所有架構參數(shù)之和為1,其他候選操作對應的架構參數(shù),被壓制在很小的取值范圍內(nèi),且取值區(qū)分很小。根據(jù)DARTS 的派生策略步驟1),none 操作不參與最大權重評比[10]。該策略造成了在深層邊中,采用以架構參數(shù)為量化指標確定最優(yōu)候選操作時,對派生無效的none 操作擠壓了其他有效的候選操作,而有效候選操作的對應架構參數(shù)卻很小。這就不能很好地實現(xiàn)算法以架構參數(shù)選擇最優(yōu)候選操作的設想。派生策略步驟1)帶來的問題,還進一步影響了派生策略步驟2)。在有向邊簡化時,深層邊中保留下來的有效候選操作,對應的架構參數(shù)取值較小,難以平等地與淺層邊保留的有效候選操作進行競爭。因此,該算法最終偏向于淺層連接的cell 架構。文獻[17]也發(fā)現(xiàn)了該問題,并指出這類cell 的泛化性欠佳。
圖1 兩種典型的架構參數(shù)變化曲線Fig.1 Two typical curves of changing trends of architecture parameters
由以上分析可知,派生時在有向邊中,none 操作不參與評比的策略引入了人為干預,其派生得到的最優(yōu)候選操作,與超網(wǎng)絡自動確定的最優(yōu)操作并非完全一致。處理該問題最自然的辦法是,在有向邊中簡化候選操作時,平等地對待none 操作與其他操作。但這種處理方式將導致派生cell 中none 操作過多而有效的卷積操作過少,從而造成派生得到的cell 過于簡單,同時其表征能力大幅下降。文獻[10]討論了這種處理方式但未采用。
本文認為上述問題的根源,是候選操作集合中包含了對派生無效的none 操作。從DARTS 的派生策略角度看,搜索環(huán)節(jié)定義的cell 引入了none 操作,并最終導致無效的none 操作在派生環(huán)節(jié)占據(jù)了值最大的架構參數(shù)。本文在以上實驗和分析的基礎上,設計了優(yōu)化的搜索空間,其候選操作集排除了none 操作,僅包含有7 個有效的候選操作。在較淺的邊中,搜索空間優(yōu)化前的架構參數(shù)演變趨勢均如圖1(a)所示。在較深的邊中,搜索空間優(yōu)化前后的架構參數(shù)演變,分別如圖1(b)(c)所示。搜索空間優(yōu)化前,圖1(b)中的none 操作在該深層邊中具有壓倒性優(yōu)勢,其他各候選操作受到嚴重的影響,最優(yōu)操作對應的架構參數(shù)αdil_conv_3×3=0.08。搜索空間優(yōu)化后,圖1(c)中的各候選操作對應架構參數(shù)的取值較圖1(b)更加分散,且最優(yōu)候選操作的架構參數(shù)αdil_conv_3×3=0.24,大于優(yōu)化前。對比可見,仍以架構參數(shù)為量化指標選擇最優(yōu)候選操作,優(yōu)化后的搜索空間能使有效的候選操作在派生時勝出。在有向邊簡化時,深層邊中勝出的候選操作能在相同的條件下與淺層邊勝出的候選操作公平地比較,更符合搜索算法和派生策略的預期。
DARTS 方法創(chuàng)造性地把架構參數(shù)融入了搜索cell 的定義中,在架構搜索環(huán)節(jié),該策略能把離散的架構搜索問題轉(zhuǎn)化為連續(xù)參數(shù)空間的參數(shù)優(yōu)化問題。在架構評測環(huán)節(jié),這些被優(yōu)化的架構參數(shù)需要從連續(xù)空間的表現(xiàn)形式轉(zhuǎn)換為獨熱編碼(one-hot)的離散表現(xiàn)形式。為此,DARTS 設計了對應的派生策略。盡管該策略能夠離散化架構參數(shù),得到派生的cell,但架構參數(shù)在這兩種表現(xiàn)形式上的差異卻未能得到很好的處理。為了量化上述差異,文獻[16]在有向邊層面,將架構參數(shù)和熵聯(lián)系起來定義了確定性,以定量地衡量派生的網(wǎng)絡架構是參數(shù)空間中是最優(yōu)架構的可能性大小。文獻[16]認為,DARTS 在超網(wǎng)絡的搜索訓練完成后,每條邊的架構參數(shù)分布仍然擁有相對較高的熵,較高的熵意味著超網(wǎng)絡對搜索到架構的確定性偏低,即派生得到的架構是優(yōu)架構的可能性偏低。低確定性進而造成了超網(wǎng)絡與派生得到的架構在驗證集上的表現(xiàn)出現(xiàn)“鴻溝”(gap),即超網(wǎng)絡在驗證集上的準確率較高,但派生得到的架構(未重新訓練時)在驗證集的準確率與前者相差很大。在超網(wǎng)絡的優(yōu)化過程中,如果搜索算法能讓架構參數(shù)以最終要輸出的離散形式為目標,促使架構參數(shù)向one-hot 向量的形式演變,則可以降低架構熵,提升超網(wǎng)絡對搜索結(jié)果的確定性,縮小架構參數(shù)在連續(xù)和離散兩種形式之間的差異。
文獻[14]提出的0-1 損失函數(shù),就是為了促使架構參數(shù)向0 或1 趨近。不同于文獻[14]方法,受文獻[13]啟發(fā),本文按照DARTS 對cell 的定義,把歸一化到(0,1)區(qū)間的架構參數(shù),看作對應候選操作被超網(wǎng)絡選為最優(yōu)操作的概率,結(jié)合熵的定義,以所有歸一化的架構參數(shù)向量為基礎,定義了架構熵,如式(3)所示。該指標衡量了超網(wǎng)絡對搜索結(jié)果的確定性,降低架構熵可提升超網(wǎng)絡的確定性。
其中:Lentropy表示架構熵,表示歸一化的架構參數(shù),(i,j)表示結(jié)點i和結(jié)點j 之間的有向邊。
本文將Lentropy作為約束項,引入DARTS 方法的架構搜索環(huán)節(jié)的目標函數(shù),以減小架構參數(shù)兩種形式之間存在的差異,提升超網(wǎng)絡對搜得架構的確定性。超網(wǎng)絡目標函數(shù)的定義,如式(4)所示。
其中:Lval表示驗證集損失,w表示候選操作中的卷積核參數(shù),β為平衡Lval和Lentropy的系數(shù)。
如圖2 所示,以式(3)定義的架構熵為量化指標,對比引入約束項前后該值隨超網(wǎng)絡訓練過程的變化曲線??梢?,引入Lentropy后,架構熵明顯降低(均采用前文改進的搜索空間)。這表明本文提升超網(wǎng)絡確定性的方法是有效的。
圖2 約束項引入前后的架構熵對比Fig.2 Comparison of architecture entropy before and after introducing constraint
本文搜索階段實驗的操作系統(tǒng)為Windows 10,處理器為Intel i7-7800X,GPU 為1*Nvidia GeForce GTX 1080Ti。評測階段實驗操作系統(tǒng)為Ubuntu 16.04,處理器為2*Xeon E5,測試使用的顯卡為2*Nvidia GeForce GTX 1080Ti。編程語言均為Python 3.6,深度學習框架均為Pytorch。
本文與相關研究[10,13-16]保持一致,采用圖像分類數(shù)據(jù)集CIFAR-10 進行架構搜索和架構評測實驗。該數(shù)據(jù)集的訓練集含50 000 張分辨率為32×32 的圖像,測試集含10 000 張分辨率為32×32 的圖像,兩者的圖像類別均為10 類。在架構搜索環(huán)節(jié),本文沿用DARTS 的超網(wǎng)絡訓練策略[10],把訓練集均分為兩個子集,其中一個子集用于訓練候選操作,另一個子集用于訓練架構參數(shù)。在架構評測環(huán)節(jié),以簡化的cell 構建評測網(wǎng)絡,重新初始化后,在CIFAR-10 的完整訓練集上進行訓練,在測試集上進行評測,并以測試準確率作為搜得架構的評價指標。
約束項系數(shù)β起到平衡兩個損失項的作用,其值的選擇非常重要。本文設計了一組對比實驗,以確定適合的取值。實驗中嚴格控制其他變量,僅分別設置β=0、0.01、0.1、1。每組實驗重復4 次完整的架構搜索和架構評測實驗,并計算4 次評測結(jié)果的平均值,以此作為β的選擇依據(jù)。如表1 所示,當β=0.01 時,4 次實驗的平均準確率最高。因此,本文以β=0.01 進行后續(xù)實驗。
表1 CIFAR-10數(shù)據(jù)集上β不同取值時的平均準確率Tab.1 Average accuracy on CIFAR-10 dataset with different β
在架構搜索環(huán)節(jié),本文采用了與DARTS 方法完全一致的超網(wǎng)絡[10]。該超網(wǎng)絡初始通道數(shù)為16,共包含8 個cell,其中第3 個和第6 個cell 為起降維作用的reduction cell,其余cell 為起特征提取作用的normal cell。超網(wǎng)絡優(yōu)化時,本文采用DARTS 算法的一階近似優(yōu)化策略。超網(wǎng)絡訓練共50 個周期,數(shù)據(jù)批大小為64。優(yōu)化候選操作的卷積核參數(shù)w時,采用隨機梯度下降(Stochastic Gradient Descent,SGD)算法,初始學習率lrw=0.025,動量momentum=0.9,權重衰減系數(shù)為3×10-4。優(yōu)化架構參數(shù)α時,采用自適應動量估計(Adaptive moment estimation,Adam)算法,初始學習率lrα=3×10-4,權重衰減系數(shù)為10-4。
在以上實驗設置下,本文搜索的架構如圖3 所示。
圖3 CIFAR-10數(shù)據(jù)集上搜索到的cellsFig.3 Searched cells on CIFAR-10 dataset
與DARTS 方法搜得的cell[10]相比,本文搜得的cell 擁有層數(shù)更多,結(jié)構更深。在2.1 節(jié)中,本文分析了DARTS 搜得cell 較淺的原因,該實驗結(jié)果印證了相關的分析。采用與DARTS 相同的設置[10],本文以cell 數(shù)量d=20 構建評測網(wǎng)絡。在CIFAR-10 上的評測結(jié)果,以及與相關方法所得架構在該數(shù)據(jù)集分類準確率的對比,如表2 所示。
表2 與相關方法在CIFAR-10數(shù)據(jù)集上的準確率對比Tab.2 Accuracy comparison with related methods on CIFAR-10 dataset
對比方法中,NASNet-A(由谷歌大腦的研究人員提出并命名)來源于文獻[7],魯棒的可微分架構搜索(Robust Differentiable ARchiTecture Search,R-DARTS)來源于文獻[12],漸近的可微分架構搜索(Progressive Differentiable ARchiTecture Search,P-DARTS)來源于文獻[15],高效的神經(jīng)網(wǎng)絡架構搜索(Efficient Neural Architecture Search,ENAS)來源于文獻[18],使用可微分架構采樣的基于梯度的搜索方法(Gradient-based searching approach using Differentiable Architecture Sampling,GDAS)來源于文獻[19]。表中參數(shù)量的單位為M,表示106。
由表2,本文構建的評測網(wǎng)絡在CIFAR-10 上,測試準確率為97.17%。與DARTS 采用相同的一階近似優(yōu)化策略(DARTS_V1),本文在DARTS 的基礎上提升了0.17 個百分點。同時,本文架構的測試準確率還高于ENAS 和SNAS。對比各方法的搜索時間,本文的架構搜索時間與P-DARTS相近,具有較高的搜索效率。綜上,本文提出的方法是有效的,通過提升搜索算法對架構的確定性,既提升了DARTS 算法的架構搜索效率,還搜索到了性能更好的架構。
本文從搜索空間設計和超網(wǎng)絡目標函數(shù)兩個方面分析了DARTS 算法存在的問題,針對性地設計了優(yōu)化的搜索空間,并引入了架構熵作為超網(wǎng)絡目標函數(shù)的約束項。優(yōu)化的搜索空間有效地避免了none 操作擠壓其他候選操作的問題,同時精簡的搜索空間還提升了架構搜索效率。引入架構熵,促使超網(wǎng)絡以派生架構的形態(tài)為目標進行架構搜索,最終搜得的架構在CIFAR-10 上取得了更高的準確率。實驗結(jié)果表明,本文所提方法是有效的,提升了搜索環(huán)節(jié)對搜得架構的確定性。搜索空間是NAS 的基礎,本文認為未來工作可關注如何設計更具表現(xiàn)力的搜索空間。