楊木潤(rùn),曹潤(rùn)柘,杜 權(quán),李垠橋,肖 桐,朱靖波
(東北大學(xué) 自然語(yǔ)言處理實(shí)驗(yàn)室,遼寧 沈陽(yáng) 110819)
目前,深度學(xué)習(xí)已經(jīng)在機(jī)器翻譯[1-3]、圖像識(shí)別[4-6]、語(yǔ)音處理[7-8]等多個(gè)領(lǐng)域得到了廣泛應(yīng)用,并取得了十分優(yōu)異的成績(jī)。在傳統(tǒng)深度學(xué)習(xí)方法中,研究人員需要設(shè)計(jì)大量的特征來(lái)描述待解決的問(wèn)題,即“特征工程”。而在深度學(xué)習(xí)時(shí)代,神經(jīng)網(wǎng)絡(luò)模型可以完成特征的抽取和學(xué)習(xí),但網(wǎng)絡(luò)結(jié)構(gòu)卻需要人工設(shè)計(jì)。網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)不僅消耗了大量人力和算力資源,而且在很大程度上依賴于研究者的先驗(yàn)知識(shí)和經(jīng)驗(yàn),由于知識(shí)的局限性,很難跳出原有的思維范式,設(shè)計(jì)出更優(yōu)秀的模型。而神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索是一種讓計(jì)算機(jī)自動(dòng)地找到最適用于當(dāng)前任務(wù)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的技術(shù),它的出現(xiàn)將研究人員從設(shè)計(jì)模型結(jié)構(gòu)的工作中解放出來(lái)。
神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索(Neural Architecture Search),在神經(jīng)網(wǎng)絡(luò)模型中有時(shí)也被稱作神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索或簡(jiǎn)稱為網(wǎng)絡(luò)結(jié)構(gòu)搜索,是自動(dòng)機(jī)器學(xué)習(xí)中一個(gè)必不可少的環(huán)節(jié)。20世紀(jì)80年代,研究人員已經(jīng)開(kāi)始使用進(jìn)化算法對(duì)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行設(shè)計(jì)[9],之后的很多工作也是基于此對(duì)網(wǎng)絡(luò)結(jié)構(gòu)搜索進(jìn)行探索[10-12]。近些年,隨著深度學(xué)習(xí)技術(shù)的發(fā)展,網(wǎng)絡(luò)結(jié)構(gòu)搜索技術(shù)在越來(lái)越多任務(wù)中受到關(guān)注,在圖像分類[13-14]、語(yǔ)義分割[15]、語(yǔ)言建模[16-18]等任務(wù)上取得了很好的結(jié)果。
圖1展示了神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索方法的主要流程,其中包括三個(gè)主要部分: 設(shè)計(jì)搜索空間、選擇搜索策略以及進(jìn)行性能評(píng)估。
圖1 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索的主要流程
設(shè)計(jì)搜索空間如圖1所示搜索空間中包含了ai、bj等子結(jié)構(gòu)(如Transformer[2]中的Attention模塊)以及類似a1、b3、c2的組合等局部結(jié)構(gòu)(如Transformer[2]中的Encoder層)。理論上來(lái)說(shuō),搜索空間應(yīng)包含所有潛在的模型結(jié)構(gòu),但如果不對(duì)搜索空間進(jìn)行限制的話,搜索空間會(huì)十分巨大。因此,在實(shí)際應(yīng)用中往往會(huì)針對(duì)特定任務(wù)設(shè)計(jì)搜索空間,之后的搜索過(guò)程將會(huì)在這個(gè)空間中進(jìn)行。
選擇搜索策略在設(shè)計(jì)好搜索空間之后,結(jié)構(gòu)搜索的過(guò)程將選擇一種合適的策略對(duì)搜索空間進(jìn)行探索,找到最適用于當(dāng)前任務(wù)的模型結(jié)構(gòu)。不同于模型參數(shù)的學(xué)習(xí),模型結(jié)構(gòu)之間本身并不存在可以計(jì)算的屬性,所以很難通過(guò)傳統(tǒng)的最優(yōu)化算法對(duì)其進(jìn)行學(xué)習(xí)。因此搜索策略往往采用進(jìn)化算法[14,19-20]、強(qiáng)化學(xué)習(xí)[13,21-22]等方法間接地對(duì)模型結(jié)構(gòu)進(jìn)行設(shè)計(jì)或優(yōu)化。
進(jìn)行性能評(píng)估如圖1所示,在搜索到模型結(jié)構(gòu)A后,需要對(duì)A的性能進(jìn)行驗(yàn)證,評(píng)估當(dāng)前時(shí)刻模型結(jié)構(gòu)性能的優(yōu)劣。之后進(jìn)行迭代搜索并調(diào)整網(wǎng)絡(luò)結(jié)構(gòu),得到性能最優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu)A′。但是對(duì)于結(jié)構(gòu)搜索任務(wù)來(lái)說(shuō),搜索的過(guò)程中會(huì)產(chǎn)生大量中間模型結(jié)構(gòu),如果對(duì)所有可能的模型結(jié)構(gòu)都進(jìn)行性能評(píng)估,將花費(fèi)大量的時(shí)間和計(jì)算資源。因此研究人員嘗試從數(shù)據(jù)以及超參數(shù)調(diào)整[13-14,23-26]、現(xiàn)有參數(shù)的繼承及復(fù)用[19,27-29]、模型性能的預(yù)測(cè)[30-32]等方面降低性能評(píng)估的成本,更快速獲取模型的性能評(píng)估結(jié)果。
本文也將參考圖1網(wǎng)絡(luò)結(jié)構(gòu)搜索的主要流程進(jìn)行說(shuō)明。對(duì)搜索空間、搜索策略和性能評(píng)估三部分的原理和經(jīng)典工作進(jìn)行介紹。同時(shí),根據(jù)深度學(xué)習(xí)不同任務(wù)的特點(diǎn),分析如何在特定任務(wù)中使用網(wǎng)絡(luò)結(jié)構(gòu)搜索方法。最后結(jié)合深度學(xué)習(xí)其他領(lǐng)域的前沿方法,對(duì)當(dāng)前網(wǎng)絡(luò)結(jié)構(gòu)搜索中存在的問(wèn)題提出可能的解決方法,以及未來(lái)的發(fā)展方向。
對(duì)搜索空間的建模是結(jié)構(gòu)搜索任務(wù)中的基礎(chǔ)部分,搜索空間定義了組成網(wǎng)絡(luò)的基本操作單元,通過(guò)組合不同的操作單元能夠產(chǎn)生不同的網(wǎng)絡(luò)結(jié)構(gòu)。為了使搜索策略在特定任務(wù)上可以高效地找到性能優(yōu)異的網(wǎng)絡(luò)結(jié)構(gòu),合理的搜索空間必不可少[33]。以自然語(yǔ)言處理任務(wù)為例,最初的網(wǎng)絡(luò)結(jié)構(gòu)搜索工作主要集中在基于循環(huán)神經(jīng)網(wǎng)絡(luò)構(gòu)成的搜索空間[16,21,34],而最近幾年,在Transformer模型的基礎(chǔ)上進(jìn)行結(jié)構(gòu)搜索也引起了研究人員的廣泛關(guān)注[35-38]。這些工作中使用的搜索空間大致可以分為兩類:
第一類離散搜索空間: 離散搜索空間指的是在建模結(jié)構(gòu)時(shí),將候選神經(jīng)網(wǎng)絡(luò)看作搜索空間中彼此孤立的點(diǎn),包括對(duì)整體框架進(jìn)行設(shè)計(jì)的全局搜索空間和基于單元的搜索空間;
第二類連續(xù)搜索空間: 連續(xù)搜索空間指的是通過(guò)參數(shù)在候選結(jié)構(gòu)之間建立聯(lián)系,整體相似的結(jié)構(gòu)在搜索空間中會(huì)更接近。
離散搜索空間中一個(gè)相對(duì)簡(jiǎn)單的全局搜索空間是鏈?zhǔn)浇Y(jié)構(gòu)的搜索空間(圖2(a)),網(wǎng)絡(luò)中除了唯一的輸入層和輸出層之外,其余各層僅與其前后相鄰的兩層連接,并且網(wǎng)絡(luò)中沒(méi)有跨層連接或分支連接,式(1)為鏈?zhǔn)骄W(wǎng)絡(luò)中節(jié)點(diǎn)k的形式化表示。
圖2 不同搜索空間示例
n(k)=o(k)(pk-1),n∈N,o∈O
(1)
其中,N代表網(wǎng)絡(luò)中的所有節(jié)點(diǎn),O代表節(jié)點(diǎn)之間操作的候選集合,p代表節(jié)點(diǎn)k的父節(jié)點(diǎn)。
Baker等人[22]在鏈?zhǔn)浇Y(jié)構(gòu)的搜索空間中探索了卷積神經(jīng)網(wǎng)絡(luò)的自動(dòng)化建模,設(shè)置了卷積、池化、全連接、平均池化等操作,擴(kuò)展了操作候選集合O,并且為了防止模型結(jié)構(gòu)過(guò)于復(fù)雜,還對(duì)網(wǎng)絡(luò)層數(shù)、操作個(gè)數(shù)進(jìn)行了限制。Zoph等人[21]在鏈?zhǔn)浇Y(jié)構(gòu)的基礎(chǔ)上增加了跳躍連接(圖2(c)),擴(kuò)展了鏈?zhǔn)浇Y(jié)構(gòu)搜索空間大小,式(2)為該網(wǎng)絡(luò)中節(jié)點(diǎn)k的形式化表示。
n(k)=o(k)({n(k-1)}∪{n(i)|i (2) 與Zoph等人[21]將節(jié)點(diǎn)之間的合并操作固定為級(jí)聯(lián)操作不同的是,Xie等人[39]用求和代替了級(jí)聯(lián)操作,使得搜索空間的網(wǎng)絡(luò)結(jié)構(gòu)不再是順序的,并且將網(wǎng)絡(luò)空間劃分為順序連接的多個(gè)段,每一段由多個(gè)節(jié)點(diǎn)組成。然而隨著研究的不斷深入,網(wǎng)絡(luò)層數(shù)不斷加深,鏈?zhǔn)浇Y(jié)構(gòu)的網(wǎng)絡(luò)在訓(xùn)練過(guò)程中容易出現(xiàn)梯度消失、梯度爆炸等問(wèn)題。 為了緩解梯度消失、梯度爆炸等問(wèn)題,研究人員設(shè)計(jì)了多分支結(jié)構(gòu),它允許網(wǎng)絡(luò)中的層可以和前面任意一層或多層進(jìn)行連接。Szegedy等人[40]設(shè)計(jì)的GoogLeNet首次在神經(jīng)網(wǎng)絡(luò)中引入了多分支網(wǎng)絡(luò)結(jié)構(gòu)的概念(圖2(b)),設(shè)計(jì)了Inception模塊來(lái)減少網(wǎng)絡(luò)參數(shù),提升網(wǎng)絡(luò)的表示能力。在跳躍連接的基礎(chǔ)之上,Huang等人[41]在2017年提出了DenseNet(圖2(d)),該網(wǎng)絡(luò)中的每一層與前面所有的層都存在連接,并且網(wǎng)絡(luò)更窄,參數(shù)更少。這種連接方式使得特征和梯度的傳遞更加有效,網(wǎng)絡(luò)也更容易訓(xùn)練。式(3)為DenseNet中節(jié)點(diǎn)k的形式化表示。 n(k)=o(k)({n(k-1)}∪concat(n(k-2),…,n(0))) (3) 人工設(shè)計(jì)網(wǎng)絡(luò)架構(gòu)時(shí)通常會(huì)重復(fù)使用相同的模塊,通過(guò)不同的組合來(lái)構(gòu)建不同的網(wǎng)絡(luò)。而在網(wǎng)絡(luò)結(jié)構(gòu)搜索中,通常稱這些模塊為單元(Cell),基于單元的搜索空間也會(huì)被看作一種廣義的離散搜索空間。由于單元的組成往往較為簡(jiǎn)單,所以基于單元的搜索空間大小相較于全局搜索空間大大減少。除此之外,通過(guò)使用不同結(jié)構(gòu)的單元、不同數(shù)量的單元和不同的單元間連接,可以更容易地調(diào)整網(wǎng)絡(luò)結(jié)構(gòu)以適應(yīng)不同的數(shù)據(jù)集合任務(wù)[13,16,34]。 Zoph等人[13]最早對(duì)基于單元的搜索空間進(jìn)行了探索,并提出了NASNet的搜索空間。圖3左側(cè)展示了NASNet中基于單元的網(wǎng)絡(luò)結(jié)構(gòu),該網(wǎng)絡(luò)中主要包含兩種單元結(jié)構(gòu),分別是不改變輸入特征圖大小的Normal Cell和使輸入特征圖長(zhǎng)寬減少為原來(lái)一半的Reduction Cell。圖3右側(cè)展示了Reduction Cell的一種內(nèi)部結(jié)構(gòu),它由多個(gè)Block組成,并且Block內(nèi)部結(jié)構(gòu)也是不同的。式(4)為Blocki的形式化表示。 圖3 NASNet中基于單元的網(wǎng)絡(luò)結(jié)構(gòu) n(Blocki)=o(i1)({n(i1)})+o(i2)({n(i2)}) (4) 因此,通過(guò)設(shè)定不同的Block內(nèi)部操作以及組成Cell的Block數(shù)量,就可以對(duì)搜索空間進(jìn)行調(diào)整,使網(wǎng)絡(luò)結(jié)構(gòu)適應(yīng)不同的數(shù)據(jù)集合任務(wù)。 在NASNet提出的搜索空間基礎(chǔ)上,之后出現(xiàn)了很多基于單元的搜索空間的工作。Liu等人[20]設(shè)計(jì)了神經(jīng)網(wǎng)絡(luò)的層次化表示方法,該方法第一步在基礎(chǔ)操作集合中搜索得到不同的單元,之后將第一步搜索得到的單元作為基本單元進(jìn)行搜索得到最終的分層網(wǎng)絡(luò)結(jié)構(gòu)。Tan等人[42]設(shè)計(jì)了MNAS方法,并提出分解層次搜索空間。在該搜索空間中,每個(gè)單元都有不同的結(jié)構(gòu),包含不同數(shù)量的Block,但同一單元內(nèi)的Block結(jié)構(gòu)是相同的。這種方法不僅保證了網(wǎng)絡(luò)結(jié)構(gòu)層與層之間的多樣性,而且在模型性能和延遲上保持了一定的平衡。Real等人[43]從搜索單元的顆粒度入手,將更小的搜索粒度如矩陣乘法、張量縮放等基本數(shù)學(xué)運(yùn)算作為搜索單元。也有研究者設(shè)計(jì)了更大粒度的搜索單元,包括常見(jiàn)的激活函數(shù)(ReLU、Sigmod等)以及局部結(jié)構(gòu)(如注意力機(jī)制)等[17,44-45]。不過(guò)目前針對(duì)搜索顆粒度的問(wèn)題研究較少,針對(duì)不同任務(wù)并沒(méi)有有效的自動(dòng)優(yōu)化方法。 雖然網(wǎng)絡(luò)結(jié)構(gòu)搜索仍處于探索階段,但不可否認(rèn),網(wǎng)絡(luò)結(jié)構(gòu)搜索這一思想被認(rèn)為是網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)的一次革命。但是,傳統(tǒng)的基于離散搜索空間的搜索方法對(duì)計(jì)算的要求非常高。例如,NASNet[13]在CIFAR-10和ImageNet數(shù)據(jù)集上使用強(qiáng)化學(xué)習(xí)的搜索策略需要花費(fèi)上千個(gè)“GPU·天”來(lái)獲得最優(yōu)結(jié)構(gòu)。而這些基于貝葉斯優(yōu)化[46]、強(qiáng)化學(xué)習(xí)[13,21-22]、進(jìn)化算法[14,19]的主流搜索方法效率低下的主要原因是它們將網(wǎng)絡(luò)結(jié)構(gòu)搜索看作是在離散空間中的黑箱優(yōu)化問(wèn)題。 為了解決上述問(wèn)題,DARTS[16]對(duì)離散空間進(jìn)行松弛得到連續(xù)的搜索空間,進(jìn)而使用梯度優(yōu)化的方法進(jìn)行搜索。DARTS沿用了NASNet[13]的基于單元的搜索空間,但是它將網(wǎng)絡(luò)結(jié)構(gòu)看作是一個(gè)有向無(wú)環(huán)圖(Directed Acyclic Graph,DAG)。圖4(a)為一個(gè)單元的初始網(wǎng)絡(luò)結(jié)構(gòu),其由N個(gè)有序節(jié)點(diǎn)組成(圖中N=5),每個(gè)節(jié)點(diǎn)n(i)和邊e(i,j)分別表示一個(gè)特征張量和一個(gè)操作,式(5)給出了任意節(jié)點(diǎn)n(j)的計(jì)算方式。 圖4 DARTS[16]的主要流程 (5) DARTS為了使搜索空間連續(xù),將對(duì)候選操作的選擇松弛為對(duì)所有可能操作的Softmax結(jié)果,式(6)是對(duì)節(jié)點(diǎn)n(i)進(jìn)行混合操作后的形式化表示。 (6) 其中,Lval和Ltrain分別代表網(wǎng)絡(luò)在驗(yàn)證集和訓(xùn)練集上的損失。 在得到最優(yōu)的α后,再進(jìn)行離散化得到最終的網(wǎng)絡(luò)結(jié)構(gòu),圖4展示了DARTS的主要流程。 與ENAS[34]通過(guò)參數(shù)共享加快搜索速度不同,DARTS為所有可能的操作賦予權(quán)重,通過(guò)訓(xùn)練,不斷優(yōu)化各個(gè)節(jié)點(diǎn)之間操作的權(quán)重大小,最終權(quán)重最大的操作會(huì)被保留,得到最優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu)。針對(duì)DARTS提出的連續(xù)搜索空間,研究者們進(jìn)行了多個(gè)方面的研究。Jiang等人[18]設(shè)計(jì)了I-DARTS,與DARTS中Softmax僅考慮當(dāng)前節(jié)點(diǎn)的輸入邊不同,I-DARTS考慮了所有輸入邊來(lái)擴(kuò)展搜索空間。通過(guò)這種方法,I-DARTS可以根據(jù)所有輸入邊的重要性確定相關(guān)節(jié)點(diǎn)之間是否存在連接。而Chen等人[47]針對(duì)DARTS在搜索階段使用淺層網(wǎng)絡(luò)結(jié)構(gòu),而在評(píng)估階段通過(guò)直接堆疊淺層網(wǎng)絡(luò)得到深層網(wǎng)絡(luò)的問(wèn)題設(shè)計(jì)了P-DARTS,提出在搜索階段中逐漸增加網(wǎng)絡(luò)層數(shù)的漸進(jìn)式搜索方法。同時(shí),根據(jù)混合操作的權(quán)重大小逐漸減少候選操作集,以此應(yīng)對(duì)層數(shù)加深所帶來(lái)的計(jì)算量增加的問(wèn)題。而且,P-DARTS還提出了搜索空間的正則化方法,以應(yīng)對(duì)深層網(wǎng)絡(luò)結(jié)構(gòu)中跳躍連接占主導(dǎo)地位所導(dǎo)致的模型穩(wěn)定性不足問(wèn)題。為了減少DARTS在搜索時(shí)的內(nèi)存消耗,提高搜索效率,Dong等人[48]提出的GDAS在DAG中對(duì)子圖進(jìn)行采樣,一次迭代只訓(xùn)練一個(gè)子圖。當(dāng)然,還有很多基于DARTS的改進(jìn)工作[49-52],這里受限于篇幅無(wú)法一一列舉。 以上工作使用的都是DARTS提出的使用混合權(quán)重表示的連續(xù)搜索空間,但也有研究者提出了不同的連續(xù)空間表示方式,如NAO[53]使用的則是網(wǎng)絡(luò)結(jié)構(gòu)的嵌入式表示,不同的表示方法也使得從連續(xù)空間獲得最優(yōu)架構(gòu)的方法有所差異,DARTS選取混合權(quán)重的最大值作為最優(yōu)架構(gòu),而NAO使用解碼器精確地從連續(xù)空間中恢復(fù)離散架構(gòu)。 前文介紹了三種典型的搜索空間設(shè)計(jì),其中全局和基于單元的搜索空間設(shè)計(jì)屬于離散的搜索空間,另外的一種為連續(xù)的搜索空間。對(duì)于搜索空間的選擇來(lái)說(shuō),三者并沒(méi)有優(yōu)劣之分,更多的是針對(duì)不同搜索目標(biāo)在不同應(yīng)用場(chǎng)景下的選擇。如Prajit等人[54]為了針對(duì)神經(jīng)網(wǎng)絡(luò)中的激活函數(shù)進(jìn)行搜索使用了離散的搜索空間面向局部的激活函數(shù)空間進(jìn)行構(gòu)建。而近些年也有大量的研究工作利用連續(xù)空間可微分的特性來(lái)在受限的算力條件下對(duì)循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行自動(dòng)設(shè)計(jì)[16,18,47-48]。如前文所述,連續(xù)空間的優(yōu)勢(shì)在于能夠根據(jù)梯度信息更快速地進(jìn)行結(jié)構(gòu)搜索,但其相對(duì)離散空間來(lái)說(shuō)也存在搜索不穩(wěn)定的現(xiàn)象,該問(wèn)題主要源自目前連續(xù)空間中對(duì)于結(jié)構(gòu)的弱建模,在表示候選結(jié)構(gòu)時(shí)忽略了最小搜索單元之間的關(guān)系,最終導(dǎo)致搜索系統(tǒng)的脆弱。對(duì)于離散空間和連續(xù)空間來(lái)說(shuō),各自存在優(yōu)勢(shì)和劣勢(shì)。如何更好地加速離散空間上的搜索效率以及連續(xù)空間上搜索的穩(wěn)定性,將成為結(jié)構(gòu)搜索任務(wù)中亟待解決的問(wèn)題之一。 在定義好搜索空間之后,如何進(jìn)行網(wǎng)絡(luò)結(jié)構(gòu)的搜索也同樣重要,該過(guò)程被稱為搜索策略,其主要目標(biāo)是根據(jù)已找到的模型結(jié)構(gòu)計(jì)算出下一個(gè)最有潛力的模型結(jié)構(gòu)。目前常見(jiàn)的搜索策略一般包括進(jìn)化算法、強(qiáng)化學(xué)習(xí)以及基于梯度的方法等。 進(jìn)化算法最初主要被用來(lái)對(duì)神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)以及權(quán)重參數(shù)進(jìn)行優(yōu)化[9,55-56],隨著最優(yōu)化算法的發(fā)展,近年來(lái),對(duì)于網(wǎng)絡(luò)參數(shù)的學(xué)習(xí)開(kāi)始更多地采用梯度下降的方式,但是進(jìn)化算法依舊被用于對(duì)模型結(jié)構(gòu)的優(yōu)化[14,19,29]。如圖5所示,進(jìn)化算法主要包括選擇、交叉、突變和更新四個(gè)步驟。 圖5 進(jìn)化算法的主要流程 從網(wǎng)絡(luò)結(jié)構(gòu)搜索的角度來(lái)說(shuō),進(jìn)化算法通常將不同的模型結(jié)構(gòu)(圖5中A1、B2等)看作是遺傳算法中種群的個(gè)體,之后重復(fù)以下步驟: (1) 從種群中選擇部分個(gè)體作為親本,常用的方法有輪盤賭或錦標(biāo)賽; (2) 每?jī)蓚€(gè)被選擇的個(gè)體進(jìn)行交叉產(chǎn)生一個(gè)新的后代,后代繼承兩個(gè)親本各一半信息; (3) 新的后代進(jìn)行基因突變以產(chǎn)生種群中未出現(xiàn)過(guò)的基因型; (4) 對(duì)新的種群進(jìn)行適應(yīng)性評(píng)估,并淘汰部分個(gè)體,以避免種群規(guī)模過(guò)大并保證種群內(nèi)部的競(jìng)爭(zhēng)性。 表1對(duì)近幾年的進(jìn)化算法工作進(jìn)行了對(duì)比,不同方法的區(qū)別主要在于如何從種群中選擇親本個(gè)體、更新種群方式和如何進(jìn)行突變產(chǎn)生后代。如Real等人[19]率先將進(jìn)化算法應(yīng)用于圖像分類任務(wù)中,他們從最簡(jiǎn)單的模型結(jié)構(gòu)開(kāi)始,通過(guò)錦標(biāo)賽方式從種群中選擇親本,并且每次從預(yù)定義的突變操作集(如任意位置添加卷積操作、改變卷積核大小,改變通道數(shù)量等)中選擇一個(gè)變異操作來(lái)更新種群。而Xie等人[39]則針對(duì)突變的表達(dá)形式提出了一種新的編碼方案,將網(wǎng)絡(luò)結(jié)構(gòu)表示為固定長(zhǎng)度的二進(jìn)制字符串,并對(duì)種群中的個(gè)體通過(guò)適應(yīng)度評(píng)估方法來(lái)進(jìn)行更新,同時(shí)他們將在小數(shù)據(jù)集(CIFAR-10)中發(fā)現(xiàn)的模型結(jié)構(gòu)成功地轉(zhuǎn)移到較大的數(shù)據(jù)集中(ImageNet)。Liu等人[20]則提出了另一種方法,該方法使用了1.2節(jié)描述的層次化搜索空間,并采用錦標(biāo)賽方式對(duì)種群進(jìn)行抽取,每次選出當(dāng)前種群中5%的個(gè)體作為親本。但由于該方法在進(jìn)化過(guò)程中不淘汰任何個(gè)體,隨著訓(xùn)練輪數(shù)的增加,種群的規(guī)模會(huì)不斷增大,運(yùn)算時(shí)間也相應(yīng)增加。 表1 不同進(jìn)化算法的特點(diǎn)對(duì)比 隨著近些年強(qiáng)化學(xué)習(xí)在深度學(xué)習(xí)各個(gè)領(lǐng)域中得到廣泛應(yīng)用,研究人員也逐漸開(kāi)始將這種方法引入神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)學(xué)習(xí)中來(lái)[59-60]?;趶?qiáng)化學(xué)習(xí)的結(jié)構(gòu)搜索過(guò)程如圖6所示,其中智能體可以看作是模型結(jié)構(gòu)的生成器,用于產(chǎn)生在當(dāng)前狀態(tài)下從智能體角度上看最適用于當(dāng)前任務(wù)的模型結(jié)構(gòu)。動(dòng)作在這里指的是由智能體產(chǎn)生的一個(gè)模型結(jié)構(gòu),而環(huán)境對(duì)應(yīng)著該模型將要應(yīng)用的任務(wù)。當(dāng)環(huán)境得到了模型結(jié)構(gòu)后,環(huán)境將輸出當(dāng)前任務(wù)下該模型的輸出以及對(duì)輸出結(jié)果的評(píng)價(jià),二者分別對(duì)應(yīng)強(qiáng)化學(xué)習(xí)中的狀態(tài)和獎(jiǎng)勵(lì)。將這兩個(gè)信息反饋給智能體后,智能體會(huì)對(duì)該狀態(tài)下生成的模型結(jié)果有一個(gè)新的了解,從而對(duì)自身結(jié)構(gòu)生成的模型進(jìn)行調(diào)整,之后繼續(xù)生成更優(yōu)的模型結(jié)構(gòu)。 圖6 基于強(qiáng)化學(xué)習(xí)的結(jié)構(gòu)搜索過(guò)程[61] 不同強(qiáng)化學(xué)習(xí)方法的區(qū)別在于如何表示智能體的策略以及如何優(yōu)化智能體的策略。Zoph等人[21]在2017年首次將強(qiáng)化學(xué)習(xí)應(yīng)用到網(wǎng)絡(luò)結(jié)構(gòu)搜索任務(wù)中,該方法將網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)看作是序列生成任務(wù),使用字符序列對(duì)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行表述。使用由強(qiáng)化學(xué)習(xí)指導(dǎo)訓(xùn)練出的循環(huán)神經(jīng)網(wǎng)絡(luò)作為控制器,對(duì)模型結(jié)構(gòu)序列(目標(biāo)任務(wù)網(wǎng)絡(luò)結(jié)構(gòu))進(jìn)行預(yù)測(cè),從而針對(duì)目標(biāo)任務(wù)生成高效的網(wǎng)絡(luò)結(jié)構(gòu)。Baker等人[22]提出的MetaQNN,使用帶ε貪婪搜索策略和經(jīng)驗(yàn)回放的Q-learning方法來(lái)訓(xùn)練智能體,從而優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。之后,Zoph等人[13]于2018年提出了NASNet,該方法使用近端策略優(yōu)化(Proximal Policy Optimization)對(duì)智能體進(jìn)行優(yōu)化,加快了搜索速度,縮減了參數(shù)規(guī)模。而Zhong等人[62]提出的BlockQNN,使用網(wǎng)絡(luò)結(jié)構(gòu)編碼來(lái)表示網(wǎng)絡(luò)中的層,并使用了分布式異構(gòu)框架和早停策略來(lái)提升搜索速度。 與強(qiáng)化學(xué)習(xí)和進(jìn)化算法在離散空間進(jìn)行結(jié)構(gòu)搜索不同,基于梯度的搜索方法是在連續(xù)空間上進(jìn)行的。該方法將模型結(jié)構(gòu)建模為超網(wǎng)絡(luò)中的結(jié)構(gòu)參數(shù),之后使用基于梯度的方法對(duì)超網(wǎng)絡(luò)中的參數(shù)進(jìn)行優(yōu)化,最終根據(jù)其中的結(jié)構(gòu)參數(shù)離散出模型結(jié)構(gòu),完成結(jié)構(gòu)搜索的過(guò)程。 如1.3節(jié)所述,為了解決離散空間中搜索代價(jià)大、效率低下等問(wèn)題,Liu等人[16]最先提出了可微結(jié)構(gòu)搜索方法DARTS。除了在基于DARTS提出的連續(xù)搜索空間中使用基于梯度的方法進(jìn)行搜索之外[18,47-48],研究者們也進(jìn)行了其他的嘗試。Wu等人[63]提出的DNAS將搜索最優(yōu)網(wǎng)絡(luò)結(jié)構(gòu)的問(wèn)題簡(jiǎn)化為搜索最優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu)的分布問(wèn)題,并通過(guò)Gumbel Softmax[64]使用基于梯度下降的優(yōu)化方法SGD來(lái)訓(xùn)練結(jié)構(gòu)分布,并且訓(xùn)練隨機(jī)超網(wǎng)絡(luò)的Loss由改善準(zhǔn)確率的交叉熵Loss和減少目標(biāo)設(shè)備延時(shí)的Loss兩部分組成。Cai等人[65]提出的ProxylessNAS方法,首次不使用代理方法,而是直接對(duì)結(jié)構(gòu)進(jìn)行搜索,同時(shí)通過(guò)路徑級(jí)二值化的方法節(jié)約內(nèi)存消耗,并且針對(duì)目標(biāo)硬件使用基于梯度的方法來(lái)進(jìn)行優(yōu)化。Xie[66]等人提出的SNAS用隨機(jī)神經(jīng)網(wǎng)絡(luò)來(lái)表達(dá)網(wǎng)絡(luò)結(jié)構(gòu)搜索任務(wù),在同一輪反向傳播中訓(xùn)練網(wǎng)絡(luò)操作參數(shù)和結(jié)構(gòu)分布參數(shù),并用損失函數(shù)來(lái)替代精確率,提高了搜索效率。 除了上文提到的基于進(jìn)化算法、強(qiáng)化學(xué)習(xí)以及梯度的方法之外,結(jié)構(gòu)搜索策略還有很多其他的方法,例如基于貝葉斯優(yōu)化的方法和基于隨機(jī)搜索的方法。 基于貝葉斯優(yōu)化的方法在搜索網(wǎng)絡(luò)結(jié)構(gòu)超參數(shù)的任務(wù)中表現(xiàn)較好,能夠在給定模型結(jié)構(gòu)的基礎(chǔ)上找到最適用于當(dāng)前任務(wù)的超參數(shù)。Bergstra等人[67]于2013年首次設(shè)計(jì)了基于貝葉斯優(yōu)化的神經(jīng)網(wǎng)絡(luò)超參數(shù)搜索算法,在三個(gè)計(jì)算機(jī)視覺(jué)任務(wù)上取得了最佳成績(jī)。Swersky等人[68]對(duì)此工作進(jìn)行了改進(jìn),在條件參數(shù)空間中定義了新內(nèi)核,共享結(jié)構(gòu)間信息,提升了模型質(zhì)量和貝葉斯優(yōu)化結(jié)果。 由于網(wǎng)絡(luò)結(jié)構(gòu)搜索任務(wù)中不同方法對(duì)預(yù)處理、超參數(shù)的優(yōu)化及搜索空間的定義等都是不同的,實(shí)際上進(jìn)行性能比較是很困難的。部分研究人員通過(guò)實(shí)驗(yàn)驗(yàn)證了隨機(jī)搜索是網(wǎng)絡(luò)結(jié)構(gòu)搜索任務(wù)上合理的基線[16,20,53,69-70],基于此,Yang等人[71]提出使用隨機(jī)搜索策略的平均架構(gòu)作為基線。但與上述結(jié)論不同,Bender等人[72]認(rèn)為在實(shí)際任務(wù)中高效的搜索策略比隨機(jī)搜索更好,因?yàn)橐酝膶?shí)驗(yàn)結(jié)果大多數(shù)是集中在小數(shù)據(jù)集上,限制了高效搜索策略的性能,從而導(dǎo)致和隨機(jī)搜索策略的性能相差無(wú)幾。 表2和表3對(duì)比了不同網(wǎng)絡(luò)結(jié)構(gòu)搜索方法在CIFAR-10數(shù)據(jù)集和ImageNet數(shù)據(jù)集上的性能表現(xiàn)。由于不同網(wǎng)絡(luò)結(jié)構(gòu)搜索方法往往針對(duì)不同任務(wù)特點(diǎn)進(jìn)行設(shè)計(jì),例如,有的網(wǎng)絡(luò)結(jié)構(gòu)的性能更好,但參數(shù)量更大;而有的網(wǎng)絡(luò)結(jié)構(gòu)性能一般,但參數(shù)量很小,更適用于移動(dòng)設(shè)備,所以這里只展示了每種方法的代表性結(jié)果。 表2 不同NAS方法在CIFAR-10數(shù)據(jù)集上的性能比較(Top-1) 表3 不同NAS方法在ImageNet數(shù)據(jù)集上的性能比較(Top-1) 從表中不難看出,早期的工作更多集中在對(duì)進(jìn)化算法和強(qiáng)化學(xué)習(xí)的研究,雖然網(wǎng)絡(luò)結(jié)構(gòu)性能較高,但是資源消耗卻十分巨大。例如,AmoebaNet[14]在CIFAR-10數(shù)據(jù)集和ImageNet數(shù)據(jù)集上都取得了較好的結(jié)果,但是搜索花費(fèi)了3 150個(gè)GPU天。而之后的工作則更注重同時(shí)保證高性能和高效率。例如,ENAS[34]通過(guò)參數(shù)共享策略,將搜索時(shí)間縮短到了一個(gè)GPU天內(nèi)。雖然在部分方法中,基于梯度的搜索策略取得了優(yōu)異成績(jī),不過(guò)其也并不能保證在性能表現(xiàn)上遠(yuǎn)超進(jìn)化算法和強(qiáng)化學(xué)習(xí)方法,如在ImageNet任務(wù)中進(jìn)化算法取得了SOTA的效果。 需要注意的是,雖然表2和表3展示了不同方法之間的性能對(duì)比,但是由于不同方法的結(jié)果是在不同的實(shí)驗(yàn)條件下得到的,所以這種比較是不夠公平的。Ying等人[88]提供的Nas-bench-101是第一個(gè)供網(wǎng)絡(luò)結(jié)構(gòu)搜索研究使用的數(shù)據(jù)集,包含423 624個(gè)不同的網(wǎng)絡(luò)結(jié)構(gòu),并在CIFAR-10數(shù)據(jù)集上進(jìn)行多次訓(xùn)練和評(píng)估,使其他研究人員可以通過(guò)查表快速獲得模型的訓(xùn)練結(jié)果。Dong等人[89]則在Ying等人[88]的基礎(chǔ)上進(jìn)行了擴(kuò)展,Nas-bench-201具有不同的搜索空間、在多個(gè)數(shù)據(jù)集上的結(jié)果和更多的訓(xùn)練信息。這些統(tǒng)一數(shù)據(jù)集使得研究人員避免了不必要的重復(fù)訓(xùn)練,而只專注于搜索算法本身,間接推動(dòng)了網(wǎng)絡(luò)結(jié)構(gòu)搜索研究的發(fā)展。 搜索策略一般被看作結(jié)構(gòu)搜索任務(wù)的核心,其構(gòu)建其一套方式來(lái)對(duì)搜索空間進(jìn)行高效探索,再結(jié)合后文將介紹的性能評(píng)估方法來(lái)完成整個(gè)神經(jīng)網(wǎng)絡(luò)的自動(dòng)設(shè)計(jì)。對(duì)于搜索策略來(lái)說(shuō),前文所述的三類主流方法主要可分為兩種思路: 強(qiáng)化學(xué)習(xí)和進(jìn)化算法的方式將待搜索的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)看作彼此獨(dú)立的對(duì)象,通過(guò)激勵(lì)信號(hào)或先驗(yàn)知識(shí)來(lái)促進(jìn)更優(yōu)秀的網(wǎng)絡(luò)結(jié)構(gòu)的產(chǎn)生;而基于梯度的方法則是采用結(jié)構(gòu)即參數(shù)的思想進(jìn)行設(shè)計(jì),通過(guò)可微分的參數(shù)將組成神經(jīng)網(wǎng)絡(luò)的局部結(jié)構(gòu)組合起來(lái),通過(guò)梯度的指導(dǎo)對(duì)搜索空間進(jìn)行探索。這兩類方法均為通過(guò)機(jī)器學(xué)習(xí)算法的搜索策略,而對(duì)于隨機(jī)搜索的方式更多的是被研究人員作為相關(guān)任務(wù)的基線,用來(lái)判斷在不加以指導(dǎo)的情況下,相同算力的系統(tǒng)能夠找到怎樣的神經(jīng)網(wǎng)絡(luò)模型。對(duì)于實(shí)際應(yīng)用來(lái)說(shuō),近些年基于梯度的搜索策略憑借高效的搜索效率得到廣泛關(guān)注,如DARTS[16]及其相關(guān)變體。但受限于基于梯度算法低魯棒性問(wèn)題,梯度方法相關(guān)研究在最近熱度降低,而基于進(jìn)化算法的研究工作開(kāi)始得到更多的關(guān)注[35,90-91]。 網(wǎng)絡(luò)結(jié)構(gòu)搜索過(guò)程中往往會(huì)產(chǎn)生大量的中間結(jié)構(gòu),為了評(píng)估它們的性能,最簡(jiǎn)單的方法是在訓(xùn)練數(shù)據(jù)上訓(xùn)練搜索出來(lái)的網(wǎng)絡(luò)結(jié)構(gòu),并在驗(yàn)證集上評(píng)估其性能,但是,從頭開(kāi)始訓(xùn)練并評(píng)估每個(gè)網(wǎng)絡(luò)結(jié)構(gòu)往往需要耗費(fèi)大量的計(jì)算時(shí)間。因此需要快速、準(zhǔn)確地評(píng)估這些結(jié)構(gòu)的性能優(yōu)劣,以保證在搜索過(guò)程中可以有效地挑選出高質(zhì)量的模型結(jié)構(gòu)。表4列出了常見(jiàn)的評(píng)估策略以及相應(yīng)方法的核心思想。 表4 網(wǎng)絡(luò)結(jié)構(gòu)搜索中的性能評(píng)估策略對(duì)比 一種常見(jiàn)的方法是從數(shù)據(jù)及超參數(shù)的角度簡(jiǎn)化模型訓(xùn)練的難度。具體來(lái)說(shuō),從數(shù)據(jù)角度可以采取減少訓(xùn)練集數(shù)據(jù)[25]和降低圖像分辨率[26]等方法。而從超參數(shù)角度可以采取減少模型網(wǎng)絡(luò)層數(shù)、減少訓(xùn)練輪數(shù)、減少每層網(wǎng)絡(luò)中神經(jīng)元數(shù)量等方法[13-14,92]來(lái)簡(jiǎn)化模型參數(shù),達(dá)到加速訓(xùn)練和評(píng)估的目的。雖然上述方法降低了性能評(píng)估過(guò)程的計(jì)算成本,但是也在網(wǎng)絡(luò)結(jié)構(gòu)評(píng)估中引入了偏差,不能準(zhǔn)確地對(duì)模型的絕對(duì)性能進(jìn)行評(píng)價(jià)。不過(guò)其結(jié)果已經(jīng)能夠?yàn)樾阅茉u(píng)估起到一定指示作用,并幫助搜索策略對(duì)結(jié)構(gòu)生成的過(guò)程進(jìn)行調(diào)優(yōu)。 另一種方法希望從訓(xùn)練過(guò)程的角度出發(fā),讓中間過(guò)程產(chǎn)生的模型結(jié)構(gòu)能夠在現(xiàn)有模型參數(shù)上進(jìn)行繼續(xù)優(yōu)化,從而快速達(dá)到收斂狀態(tài)進(jìn)行性能評(píng)估。Cai等人[27]提出的路徑級(jí)網(wǎng)絡(luò)轉(zhuǎn)換方法,使用分配和合并策略,以多分支操作代替單層操作,從而重用之前訓(xùn)練好的網(wǎng)絡(luò)結(jié)構(gòu)和現(xiàn)有的網(wǎng)絡(luò)結(jié)構(gòu),提高采樣效率。Cai等人[93]提出的EAS框架使用編碼器網(wǎng)絡(luò)來(lái)學(xué)習(xí)給定網(wǎng)絡(luò)結(jié)構(gòu)的低維表示并生成網(wǎng)絡(luò)轉(zhuǎn)換動(dòng)作,同時(shí)為了將可變長(zhǎng)度網(wǎng)絡(luò)結(jié)構(gòu)作為輸入,采用Bi-LSTM作為編碼器網(wǎng)絡(luò)。這類方法無(wú)需從頭訓(xùn)練中間結(jié)構(gòu),通過(guò)“熱啟動(dòng)”方式對(duì)模型參數(shù)進(jìn)行優(yōu)化,大幅減少性能評(píng)估過(guò)程中的時(shí)間消耗[19,28-29]。 模型性能預(yù)測(cè)也是一個(gè)具有潛力的加速評(píng)估過(guò)程的方法,這種方式旨在通過(guò)少量訓(xùn)練過(guò)程中的性能變化曲線來(lái)預(yù)估模型是否具有潛力,從而快速終止低性能模型的訓(xùn)練過(guò)程,節(jié)約訓(xùn)練時(shí)間。Baker等人[31]首次將學(xué)習(xí)曲線預(yù)測(cè)應(yīng)用到NAS任務(wù)中,并結(jié)合了網(wǎng)絡(luò)結(jié)構(gòu)信息、超參數(shù)信息和時(shí)序上的驗(yàn)證精度信息來(lái)進(jìn)行預(yù)測(cè),提高了性能預(yù)測(cè)的準(zhǔn)確性。Domhan等人[32]提出的概率學(xué)習(xí)曲線模型,通過(guò)加權(quán)組合11種不同的遞增飽和函數(shù),從隨機(jī)梯度下降的過(guò)程中推斷出模型性能,可提前終止性能較差模型的訓(xùn)練。 除了根據(jù)訓(xùn)練過(guò)程中的學(xué)習(xí)曲線進(jìn)行模型性能的預(yù)測(cè)之外,也有研究人員根據(jù)局部結(jié)構(gòu)的性能來(lái)對(duì)整體結(jié)構(gòu)的性能進(jìn)行預(yù)測(cè),這種方式也能快速地評(píng)估搜索過(guò)程中中間結(jié)構(gòu)的性能[83]。 一次性搜索(one-shot)方法在近幾年受到了廣泛的關(guān)注和研究[16,94-96],該方法的核心思想是將所有網(wǎng)絡(luò)結(jié)構(gòu)都看作是同一個(gè)超網(wǎng)絡(luò)的不同子網(wǎng)絡(luò),具有該超網(wǎng)絡(luò)共同邊的不同子網(wǎng)絡(luò)結(jié)構(gòu)之間共享權(quán)重。這樣只需要訓(xùn)練超網(wǎng)絡(luò)的權(quán)重,然后從超網(wǎng)絡(luò)中繼承訓(xùn)練好的權(quán)重來(lái)評(píng)估網(wǎng)絡(luò)結(jié)構(gòu),而不需要重新開(kāi)始訓(xùn)練,大大加快了網(wǎng)絡(luò)結(jié)構(gòu)的性能評(píng)估[97]。Brock等人[81]提出的SMASH方法使用輔助網(wǎng)絡(luò)來(lái)為不同網(wǎng)絡(luò)結(jié)構(gòu)生成權(quán)重,并且與正常訓(xùn)練的權(quán)重在準(zhǔn)確率上存在關(guān)聯(lián)性,加快了性能評(píng)估速度。Dong等人[79]提出的自我評(píng)價(jià)模板網(wǎng)絡(luò)采用均勻隨機(jī)的訓(xùn)練策略,降低了one-shot方法所帶來(lái)的偏差,提高了所采樣網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)秀率,從而更有可能找到最優(yōu)網(wǎng)絡(luò)結(jié)構(gòu)。Zhang等人[80]對(duì)one-shot的權(quán)重共享機(jī)制進(jìn)行了改進(jìn),提出了NSAS損失函數(shù),以解決超網(wǎng)絡(luò)訓(xùn)練過(guò)程中由于權(quán)重共享而導(dǎo)致的多模型遺忘問(wèn)題。Guo等人引入單路徑超網(wǎng)絡(luò)的范式,通過(guò)均勻路徑采樣對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練[94]。雖然一次性搜索的權(quán)重共享方法能夠減少搜索時(shí)間,但是卻將所有可能的網(wǎng)絡(luò)結(jié)構(gòu)限制在了超網(wǎng)絡(luò)中,并且這種方法也帶來(lái)了較大的偏差。因此,在實(shí)際應(yīng)用中,更多是通過(guò)該方法對(duì)網(wǎng)絡(luò)的性能做出近似的評(píng)估后進(jìn)行排名。 而網(wǎng)絡(luò)態(tài)射(Network Morphism)方法則是通過(guò)不斷擴(kuò)展初始網(wǎng)絡(luò),在保證網(wǎng)絡(luò)性能的前提下增加網(wǎng)絡(luò)的容量[98-100]。相比于one-shot方法將網(wǎng)絡(luò)限制在超網(wǎng)絡(luò)中,該方法沒(méi)有限制網(wǎng)絡(luò)的大小,但也因此可能導(dǎo)致過(guò)于復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)。因此需要對(duì)其進(jìn)行壓縮或移除來(lái)降低模型的復(fù)雜度[29,101]。 此外,基于DARTS的工作[16,18,47-48]也使用了類似的權(quán)重共享思想。但不同的是,基于DARTS的工作直接對(duì)超網(wǎng)絡(luò)進(jìn)行優(yōu)化,根據(jù)學(xué)習(xí)到的混合權(quán)重,將最佳子網(wǎng)絡(luò)與超網(wǎng)絡(luò)解耦。 除了上述方法之外,代理模型也是性能評(píng)估中常用的方法,該方法采用近似任務(wù)代替實(shí)際的訓(xùn)練任務(wù),代理模型的性能即為目標(biāo)網(wǎng)絡(luò)結(jié)構(gòu)的性能[83]。例如,在ImageNet數(shù)據(jù)集上進(jìn)行網(wǎng)絡(luò)結(jié)構(gòu)搜索時(shí),大多數(shù)方法都會(huì)將在CIFAR-10數(shù)據(jù)集上的結(jié)構(gòu)搜索作為代理任務(wù)[14,16,47,78,83,102],之后將在代理任務(wù)上搜索到的最優(yōu)網(wǎng)絡(luò)結(jié)構(gòu)遷移到ImageNet數(shù)據(jù)集上。 對(duì)于性能評(píng)估方法來(lái)說(shuō),其目的在于能夠更快速地對(duì)搜索過(guò)程中探索的中間結(jié)構(gòu)進(jìn)行性能驗(yàn)證,因此不同方法的選擇需要考慮到所使用的搜索策略,如在基于進(jìn)化算法、強(qiáng)化學(xué)習(xí)等方法下的搜索,中間結(jié)構(gòu)會(huì)被作為獨(dú)立個(gè)體進(jìn)行性能評(píng)估,因此數(shù)據(jù)及超參數(shù)的調(diào)整、性能預(yù)測(cè)、代理模型等方式會(huì)被用來(lái)加速性能驗(yàn)證的過(guò)程[13-14]。而對(duì)于基于梯度的方法來(lái)說(shuō),在搜索的過(guò)程中已經(jīng)會(huì)對(duì)超網(wǎng)絡(luò)中參數(shù)進(jìn)行直接優(yōu)化或者維護(hù)超網(wǎng)絡(luò)參數(shù),因此往往會(huì)使用現(xiàn)有參數(shù)的繼承及復(fù)用以及一次性搜索等策略來(lái)對(duì)中間結(jié)構(gòu)進(jìn)行效果評(píng)估[16,79]。 網(wǎng)絡(luò)結(jié)構(gòu)搜索技術(shù)的出現(xiàn)有望將研究人員從設(shè)計(jì)模型結(jié)構(gòu)的工作上解放出來(lái),并且設(shè)計(jì)出完全不同于人工設(shè)計(jì)的網(wǎng)絡(luò)結(jié)構(gòu),突破人類專家的思維范式。目前大部分網(wǎng)絡(luò)結(jié)構(gòu)搜索工作主要集中在卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)上,前者用于解決目標(biāo)識(shí)別問(wèn)題,后者用于語(yǔ)言建模任務(wù)。但是將網(wǎng)絡(luò)結(jié)構(gòu)搜索方法推廣到其他領(lǐng)域和任務(wù)中時(shí),還有許多問(wèn)題和挑戰(zhàn)需要解決。 首先,在目前的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索中候選結(jié)構(gòu)的表示問(wèn)題亟待解決。無(wú)論在離散空間還是連續(xù)空間中,所有候選的局部結(jié)構(gòu)往往并未經(jīng)過(guò)建模即被組成各式網(wǎng)絡(luò)進(jìn)行探索和效果驗(yàn)證。該過(guò)程忽略了局部結(jié)構(gòu)(如激活函數(shù)、殘差鏈接等)之間的內(nèi)部聯(lián)系,最終導(dǎo)致完整網(wǎng)絡(luò)的表示不穩(wěn)定,為結(jié)構(gòu)搜索系統(tǒng)的可復(fù)現(xiàn)性造成嚴(yán)重負(fù)面影響。雖然很多方法能夠達(dá)到和人類專家設(shè)計(jì)的模型性能一樣甚至更好的結(jié)果,但是缺乏嚴(yán)格的數(shù)學(xué)證明,無(wú)法合理解釋搜索算法的傾向性。針對(duì)該問(wèn)題,設(shè)計(jì)有效的結(jié)構(gòu)建模器對(duì)候選結(jié)構(gòu)之間的關(guān)聯(lián)關(guān)系進(jìn)行學(xué)習(xí)將有效改進(jìn)未來(lái)結(jié)構(gòu)搜索系統(tǒng)的可靠性。此外,為結(jié)構(gòu)搜索任務(wù)構(gòu)建統(tǒng)一的實(shí)驗(yàn)數(shù)據(jù)和平臺(tái)同樣也有助于對(duì)比不同方法效果,如Nas-bench-101[89]和Nas-bench-201[90]等,未來(lái)更多相關(guān)資源的構(gòu)建同樣對(duì)于解決神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索可復(fù)現(xiàn)性的問(wèn)題具有重大幫助。 另一方面,對(duì)于候選局部結(jié)構(gòu)的顆粒度自動(dòng)調(diào)節(jié)也是未來(lái)影響結(jié)構(gòu)表示的關(guān)鍵問(wèn)題之一。目前,在表示搜索空間中的網(wǎng)絡(luò)結(jié)構(gòu)時(shí)局部結(jié)構(gòu)的最小顆粒度主要根據(jù)研究人員對(duì)任務(wù)理解的經(jīng)驗(yàn)進(jìn)行設(shè)計(jì)。顆粒度小,可達(dá)到矩陣的基礎(chǔ)運(yùn)算[103-104],而對(duì)于大顆粒度的候選局部結(jié)構(gòu)可達(dá)到使用一層人工經(jīng)驗(yàn)的網(wǎng)絡(luò)(如一層的前饋網(wǎng)絡(luò)、注意力網(wǎng)絡(luò)等)[16,45]。顆粒度大小直接決定搜索空間中能表示的網(wǎng)絡(luò)多樣性,進(jìn)而對(duì)搜索空間的規(guī)模產(chǎn)生影響。類似自然語(yǔ)言處理任務(wù)中對(duì)于分詞顆粒度的研究,如果能針對(duì)目標(biāo)任務(wù)自動(dòng)調(diào)節(jié)找到最適合當(dāng)前場(chǎng)景的局部結(jié)構(gòu)顆粒度的話,將能夠有可能在保證找到最佳結(jié)構(gòu)的條件下保證搜索效率,是一個(gè)非常有潛力且重要的研究問(wèn)題。 此外,受到自然語(yǔ)言處理領(lǐng)域預(yù)訓(xùn)練模型的啟發(fā)[105-108],網(wǎng)絡(luò)結(jié)構(gòu)預(yù)搜索也是一個(gè)有潛力的方向。例如在大規(guī)模數(shù)據(jù)上進(jìn)行網(wǎng)絡(luò)結(jié)構(gòu)搜索得到表示能力更強(qiáng)的模型結(jié)構(gòu),之后再針對(duì)具體任務(wù)進(jìn)行搜索微調(diào),這種方式有效提升了模型結(jié)構(gòu)的復(fù)用性,同時(shí)從大規(guī)模數(shù)據(jù)上獲取到的信息很有可能會(huì)比特定任務(wù)下受限數(shù)據(jù)集合中所獲取的信息更加充分,能夠更好地指導(dǎo)模型結(jié)構(gòu)的設(shè)計(jì),在未來(lái)也是一個(gè)頗具研究潛力的方向。 本文根據(jù)圖1對(duì)網(wǎng)絡(luò)結(jié)構(gòu)搜索工作進(jìn)行了詳細(xì)的介紹與分析,并且比較了現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)搜索方法在CIFAR-10和ImageNet數(shù)據(jù)集上的性能和效率,同時(shí)討論了一些未來(lái)可能的研究方向。雖然現(xiàn)階段網(wǎng)絡(luò)結(jié)構(gòu)搜索取得了不錯(cuò)的成果,但是到目前為止,網(wǎng)絡(luò)結(jié)構(gòu)搜索技術(shù)仍處于發(fā)展的初級(jí)階段,還需要更多的理論研究和深入分析,距離完全取代人工網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì),還有很長(zhǎng)一段路要走。但可以相信,未來(lái)的工作一定會(huì)使網(wǎng)絡(luò)結(jié)構(gòu)搜索技術(shù)更加完善,更具有實(shí)用價(jià)值。1.2 基于單元的搜索空間
1.3 連續(xù)搜索空間
2 搜索策略
2.1 進(jìn)化算法
2.2 強(qiáng)化學(xué)習(xí)
2.3 基于梯度的方法
2.4 其他方法
2.5 性能比較
3 性能評(píng)估策略
3.1 數(shù)據(jù)及超參數(shù)的調(diào)整
3.2 現(xiàn)有參數(shù)的繼承及復(fù)用
3.3 模型性能預(yù)測(cè)
3.4 一次性搜索
3.5 代理模型
4 展望
5 總結(jié)