李繼洲, 林 欣
(華東師范大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 上海 200062)
隨著深度神經(jīng)網(wǎng)絡(luò)模型的發(fā)展, 相比自然語(yǔ)言處理、計(jì)算機(jī)視覺(jué)等各個(gè)人工智能領(lǐng)域的傳統(tǒng)方法, 深度神經(jīng)網(wǎng)絡(luò)具有明顯的性能優(yōu)勢(shì), 因此深度學(xué)習(xí)在人工智能領(lǐng)域中占據(jù)了越來(lái)越大的比例. 然而, 隨著深度神經(jīng)網(wǎng)絡(luò)模型深度的提高與結(jié)構(gòu)的日益復(fù)雜化, 越來(lái)越多的研究者將大量的精力花費(fèi)在了嘗試各種可能的網(wǎng)絡(luò)結(jié)構(gòu)、網(wǎng)絡(luò)深度、通道數(shù)等工作上. 不難想象, 這不僅費(fèi)時(shí)費(fèi)力, 而且可能出現(xiàn)不少重復(fù)工作, 因此通過(guò)自動(dòng)化的搜索來(lái)代替人工搜索變成了自然而然的思路.
神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索 (Neural Architecture Search, NAS) 算法將自動(dòng)化超參數(shù)搜索技術(shù)引入深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)過(guò)程當(dāng)中, 通過(guò)啟發(fā)式方法自動(dòng)化地搜索出比人類研究者手工設(shè)計(jì)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)擁有更高性能的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu). 自從這種算法被提出后, 這一領(lǐng)域受到了許多研究者的關(guān)注, 但同樣引人注意的是它對(duì)于計(jì)算資源的消耗極高, 在該領(lǐng)域以之得名的工作中[1], 每個(gè)獨(dú)立搜索出來(lái)的網(wǎng)絡(luò)結(jié)構(gòu)都需要進(jìn)行完整訓(xùn)練與性能評(píng)估, 所使用的計(jì)算資源總量達(dá)到了驚人的上萬(wàn)GPU days(GPU 天, 算法運(yùn)行過(guò)程中所用GPU 數(shù)量與天數(shù)的乘積). 因此, 如何更高效、更準(zhǔn)確地提高神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索算法的搜索能力與搜索效率是這個(gè)領(lǐng)域最廣為討論的話題之一.
最近的許多工作都綜合應(yīng)用了多種方法來(lái)提高NAS 算法的搜索效率, 其中最為常用, 也是被后續(xù)工作廣泛采納的方案分別是基于單元的NAS 算法[2]和權(quán)值共享策略[3-4]. 基于單元的NAS 算法將原本拓?fù)浣Y(jié)構(gòu)的搜索空間約束為數(shù)量級(jí)遠(yuǎn)小于原本搜索空間的微型拓?fù)浣Y(jié)構(gòu)單元, 再由數(shù)十個(gè)結(jié)構(gòu)相同的拓?fù)鋯卧€性堆疊形成完整的神經(jīng)網(wǎng)絡(luò)模型. 權(quán)值共享策略則將整個(gè)或者部分搜索空間直接構(gòu)建成完整的網(wǎng)絡(luò). 對(duì)于搜索到的模型結(jié)構(gòu), 權(quán)值共享策略不再通過(guò)完整訓(xùn)練這個(gè)模型來(lái)對(duì)其性能進(jìn)行評(píng)估, 而是直接從這個(gè)完整的網(wǎng)絡(luò)中繼承訓(xùn)練得到的參數(shù), 從而縮短對(duì)單個(gè)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行評(píng)估的平均時(shí)間.
基于單元的NAS 算法和權(quán)值共享策略的綜合使用大大提高了NAS 算法的搜索效率, 前者在排除了大量低質(zhì)量模型的同時(shí)也將一些潛在的高性能模型排除在外. 近兩年來(lái)也有許多研究工作[5]表明,現(xiàn)有的許多模型的高性能歸功于人工精心設(shè)計(jì)的搜索空間, 在這些空間中, 即使是隨機(jī)采樣得到的模型, 也能擁有與搜索得到的最優(yōu)模型相去不遠(yuǎn)的性能. 權(quán)值共享策略在目前是一個(gè)尚有爭(zhēng)議的策略,尚沒(méi)有成熟的理論解釋為何可以通過(guò)繼承網(wǎng)絡(luò)層權(quán)重的方法對(duì)模型的性能進(jìn)行評(píng)估. 在理論上, 完整搜索空間所構(gòu)成的大型網(wǎng)絡(luò)中的參數(shù)依賴于網(wǎng)絡(luò)結(jié)構(gòu), 實(shí)驗(yàn)也證明了繼承自該大型網(wǎng)絡(luò)的權(quán)重并不能使所搜索到的小型網(wǎng)絡(luò)得到最佳性能. 雖然一些工作致力于緩解這種耦合問(wèn)題[6], 但仍有許多評(píng)論指出, 權(quán)值共享方案所得到的網(wǎng)絡(luò)性能并不能很好地代表網(wǎng)絡(luò)完整訓(xùn)練的性能, 并且這個(gè)問(wèn)題隨著NAS 算法搜索空間的擴(kuò)大而越發(fā)明顯[7].
本文試圖在保持與前沿方案相近的搜索效率的基礎(chǔ)上, 探索一個(gè)相比現(xiàn)有的基于單元的NAS 算法具有更大搜索空間的高效神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索算法. 從而能在較高的效率下搜索到被基于單元的NAS 算法所忽略的高性能模型. 為此, 本文設(shè)計(jì)了一個(gè)遞歸形式的模型搜索空間, 這種結(jié)構(gòu)在搜索空間上介于線性單元模型與拓?fù)湫湍P椭g, 其遞歸型結(jié)構(gòu)便于對(duì)模型的一部分進(jìn)行簡(jiǎn)單化或者復(fù)雜化, 從而可以更為靈活地得到所需要的模型. 此外, 本文還設(shè)計(jì)了一種適配于所提出的搜索空間的分步模型搜索算法, 可以以較小的效率損失為代價(jià)在一定程度上緩解權(quán)值共享策略的問(wèn)題.
本文的主要結(jié)果如下.
(1) 設(shè)計(jì)了一個(gè)比現(xiàn)有的線性單元化模型空間更大的搜索空間, 使得權(quán)值共享策略所適用的高效率NAS 算法的搜索空間邊界有所拓寬, 從而能夠搜索到原有搜索空間所不能涵蓋的潛在高性能模型.此外, 此方案可以用于對(duì)神經(jīng)網(wǎng)絡(luò)宏觀結(jié)構(gòu)的探索, 與已有的一系列基于單元的神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索算法相互獨(dú)立, 可以一起使用來(lái)進(jìn)一步提高算法的性能.
(2) 提出了針對(duì)本文所設(shè)計(jì)模型的分步擴(kuò)展算法, 這個(gè)方案能夠在有限降低算法效率的情況下緩解權(quán)值共享方案所帶來(lái)的問(wèn)題, 提高權(quán)值共享策略的有效性.
(3) 實(shí)驗(yàn)證明, 以本文所提出的算法作為獨(dú)立的神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索算法, 在進(jìn)行搜索時(shí), 比現(xiàn)有的在大規(guī)模搜索空間[1,3-4,8]進(jìn)行網(wǎng)絡(luò)結(jié)構(gòu)搜索的算法有著更優(yōu)的性能, 但與最新的基于精心設(shè)計(jì)的單元化搜索空間的算法相比仍然有較小差距. 而以本文所提出的NAS 算法作為單元化搜索空間算法的擴(kuò)展, 可以進(jìn)一步提高算法的性能.
神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索算法致力于通過(guò)自動(dòng)化方法, 使用機(jī)器代替人類專家完成深度神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)設(shè)計(jì). 通常NAS 算法首先需要定義一個(gè)包含了這個(gè)算法所有可能探索到的神經(jīng)網(wǎng)絡(luò)模型的搜索空間, 而后通過(guò)某種啟發(fā)式算法在這個(gè)搜索空間中進(jìn)行探索, 從而得到其中最優(yōu)的模型結(jié)構(gòu).
早期的NAS 算法[1]將待搜索的神經(jīng)網(wǎng)絡(luò)模型定義在一個(gè)巨大的拓?fù)湫途W(wǎng)絡(luò)搜索空間中, 以此對(duì)網(wǎng)絡(luò)模型的結(jié)構(gòu)進(jìn)行搜索, 并通過(guò)完整的訓(xùn)練評(píng)估每個(gè)采樣所得到的網(wǎng)絡(luò)的性能. 這一搜索空間對(duì)模型結(jié)構(gòu)具有很強(qiáng)的表達(dá)能力, 但強(qiáng)大的表達(dá)能力所對(duì)應(yīng)的巨大的模型搜索空間使得模型搜索效率難以優(yōu)化, 最初的方案是對(duì)每個(gè)搜索到的模型單獨(dú)訓(xùn)練以進(jìn)行模型間的評(píng)估, 完成這一方案需要大量的計(jì)算資源, 即使在CIFAR-10 之類的小型數(shù)據(jù)集上, 完成少量網(wǎng)絡(luò)結(jié)構(gòu)搜索也需要成千上萬(wàn)的GPU days.
受到現(xiàn)有的人工構(gòu)造神經(jīng)網(wǎng)絡(luò)通過(guò)串聯(lián)相同構(gòu)造的網(wǎng)絡(luò)模塊來(lái)設(shè)計(jì)整體網(wǎng)絡(luò)模型的啟發(fā),Zoph 等[2]提出將模型轉(zhuǎn)換為由多個(gè)結(jié)構(gòu)相同的小型拓?fù)鋯卧€性堆疊而成的結(jié)構(gòu), 這種結(jié)構(gòu)可以大幅裁剪模型的搜索空間. 此外, 這種方案可以使用相對(duì)較少單元堆疊而成的模型, 在數(shù)據(jù)量較小的代理數(shù)據(jù)集上對(duì)單元結(jié)構(gòu)進(jìn)行搜索, 從而得到單個(gè)小型拓?fù)鋯卧淖顑?yōu)結(jié)構(gòu). 再使用由這種最優(yōu)結(jié)構(gòu)的網(wǎng)絡(luò)單元堆疊而成的模型對(duì)最終所得到的模型性能進(jìn)行評(píng)估. 同時(shí), 也可以通過(guò)調(diào)整堆疊的模塊數(shù)量將搜索到的網(wǎng)絡(luò)結(jié)構(gòu)遷移到大型任務(wù)上, 這一工作被隨后的NAS 算法所廣泛采用. 此外, Liu 等[8]則探究了使用兩層拓?fù)浣Y(jié)構(gòu)定義模型中的一個(gè)單元, 其中第一層拓?fù)浣Y(jié)構(gòu)使用幾種基本卷積操作進(jìn)行構(gòu)造, 第二層拓?fù)浣Y(jié)構(gòu)則使用第一層所得到的幾個(gè)較優(yōu)神經(jīng)網(wǎng)絡(luò)單元作為基本操作進(jìn)行構(gòu)造.
文獻(xiàn)[2,9-11]通過(guò)改進(jìn)模型的搜索算法, 使用改進(jìn)的序列決策方案對(duì)搜索空間進(jìn)行采樣, 使得能在更短的時(shí)間內(nèi)搜索到較好的模型. 文獻(xiàn)[12-13]通過(guò)使用耗時(shí)更短的評(píng)估方案來(lái)使得不必進(jìn)行完整的訓(xùn)練便可以對(duì)候選結(jié)構(gòu)進(jìn)行評(píng)估. 在這類方案中, 對(duì)后續(xù)的工作影響最大的一個(gè)方案被稱為權(quán)值共享策略[3-4], 這種方案將一部分搜索空間編碼為共享參數(shù)的超網(wǎng), 通過(guò)單次訓(xùn)練評(píng)估超網(wǎng)覆蓋的所有搜索空間, 優(yōu)化模型性能評(píng)估效率, 大幅減少了神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索算法所需要的計(jì)算資源.
Pham 等[4]提出的one-shot 方案使用單個(gè)超網(wǎng)表示完整的搜索空間, 在算法的過(guò)程中只進(jìn)行一次超網(wǎng)訓(xùn)練, 而后通過(guò)對(duì)其進(jìn)行子網(wǎng)絡(luò)的采樣與評(píng)估來(lái)得到所需要的模型, 再將所得到的結(jié)構(gòu)進(jìn)行完整的訓(xùn)練. 雖然這大幅提高了NAS 算法的搜索效率, 但在one-shot 方法中, 超網(wǎng)的參數(shù)與超網(wǎng)本身的結(jié)構(gòu)是高度耦合的[4], 為何權(quán)值共享策略對(duì)于NAS 算法任務(wù)是有效的這一點(diǎn)在學(xué)術(shù)界仍然有所爭(zhēng)議. 文獻(xiàn)[14]也表明使用權(quán)值共享策略繼承超網(wǎng)參數(shù)得到的子網(wǎng)的性能排序, 與這些子網(wǎng)經(jīng)過(guò)完整訓(xùn)練后的性能排序之間存在較大的差異, 且這種差異隨著NAS 算法所對(duì)應(yīng)的搜索空間的擴(kuò)大而減小. Guo等[6]進(jìn)一步簡(jiǎn)化了這類模型的搜索空間, 對(duì)于線性模型空間中的每個(gè)模塊只給出有限的模塊結(jié)構(gòu)選擇, 同時(shí)在訓(xùn)練超網(wǎng)的過(guò)程中每次隨機(jī)采樣一條路徑作為子網(wǎng)進(jìn)行訓(xùn)練, 緩解了超網(wǎng)內(nèi)部的耦合問(wèn)題.Luo 等[15]提出搜索空間將原本的離散空間嵌入連續(xù)空間中, 使用向量表示采樣的網(wǎng)絡(luò)結(jié)構(gòu)和梯度方法對(duì)模型的采樣進(jìn)行優(yōu)化. Chu 等[14]通過(guò)更為公平的采樣方式讓超網(wǎng)中同一選擇模塊內(nèi)處于競(jìng)爭(zhēng)關(guān)系的各個(gè)候選模塊之間經(jīng)過(guò)等量的訓(xùn)練, 從而保證所采樣得到的各個(gè)模型性能評(píng)估的公正性. You 等[16]則認(rèn)為由于在訓(xùn)練過(guò)程中各個(gè)模塊的耦合, 在超網(wǎng)訓(xùn)練階段, 較差路徑會(huì)影響到較好路徑的訓(xùn)練, 因此, 他們提出在超網(wǎng)訓(xùn)練的過(guò)程中采用開(kāi)發(fā)-探索平衡的方法對(duì)采樣路徑進(jìn)行約束. Cai 等[17]提出的模型once-for-all 考慮到了部署的需求, 將模型的卷積核尺寸、通道數(shù)以及輸入的分辨率等納入考慮, 提出了只需訓(xùn)練一次超網(wǎng)便可以同時(shí)為擁有多種不同需求的場(chǎng)景提供模型的方案, 分?jǐn)偭擞?xùn)練成本.
Liu 等[18]提出了一類特殊的one-shot 方案DARTS, 將對(duì)模塊結(jié)構(gòu)的選擇視為在連續(xù)空間內(nèi)的權(quán)重優(yōu)化問(wèn)題, 從而將模型搜索過(guò)程參數(shù)化, 將原有的超網(wǎng)訓(xùn)練-子網(wǎng)搜索與評(píng)估轉(zhuǎn)換為超網(wǎng)參數(shù)與選擇權(quán)重的聯(lián)合優(yōu)化問(wèn)題. Chu 等[19]提出將用于選擇權(quán)重的變量從競(jìng)爭(zhēng)式的softmax 變?yōu)閟igmoid, 從而在一定程度上改善了由DARTS 內(nèi)部殘差連接與普通網(wǎng)絡(luò)模塊的性能競(jìng)爭(zhēng)所導(dǎo)致的模型退化問(wèn)題.Xu 等[20]通過(guò)隨機(jī)采樣通道解決了DARTS 模型在超網(wǎng)訓(xùn)練過(guò)程中內(nèi)存消耗巨大的問(wèn)題. Chen 等[21]認(rèn)為在小模型上能使其得到最佳性能的最優(yōu)模塊結(jié)構(gòu)與大模型的最優(yōu)模塊結(jié)構(gòu)并不一致, 他們通過(guò)漸進(jìn)式的模型遷移緩解了這一問(wèn)題.
雖然在NAS 領(lǐng)域已經(jīng)有了許多令人矚目的工作, 但除了早期Zoph 等[1]與Liu 等[8]的工作, 后續(xù)的研究大多都集中于神經(jīng)網(wǎng)絡(luò)的微觀局部結(jié)構(gòu)的配置與優(yōu)化. 通常所搜索到的模型總體結(jié)構(gòu)由18 層單元線性堆疊構(gòu)成, 通過(guò)兩個(gè)額外的下采樣模塊均勻隔開(kāi). 但實(shí)際上, 并沒(méi)有研究證明這種設(shè)置一定是最優(yōu)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu). 因此, 本文從現(xiàn)有的NAS 算法對(duì)于神經(jīng)網(wǎng)絡(luò)宏觀結(jié)構(gòu)的重視有所不足這一點(diǎn)入手, 提出了對(duì)宏觀結(jié)構(gòu)進(jìn)行搜索的遞歸式NAS 算法. 一方面, 該算法可以作為獨(dú)立的搜索空間進(jìn)行神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的搜索; 另一方面, 該算法可以在已有工作的基礎(chǔ)上擴(kuò)大模型結(jié)構(gòu)搜索空間和已有NAS 算法的搜索空間, 進(jìn)一步提高所得到模型的性能.
首先, 本章回顧one-shot 類NAS 算法的搜索空間與運(yùn)行過(guò)程, 然后介紹本文所提出的遞歸式結(jié)構(gòu), 模型的總體結(jié)構(gòu)和one-shot 類方案相近, 但在下采樣過(guò)程之間使用遞歸形式的模塊而非多個(gè)選擇模塊的堆疊來(lái)構(gòu)造整個(gè)模型.
神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索算法通常分為兩個(gè)迭代進(jìn)行的階段: 網(wǎng)絡(luò)結(jié)構(gòu)搜索階段與網(wǎng)絡(luò)結(jié)構(gòu)評(píng)估階段.網(wǎng)絡(luò)結(jié)構(gòu)搜索階段的目標(biāo)是選擇合適的模型結(jié)構(gòu), 網(wǎng)絡(luò)結(jié)構(gòu)評(píng)估階段則是對(duì)網(wǎng)絡(luò)結(jié)構(gòu)搜索階段所選擇的模型結(jié)構(gòu)進(jìn)行評(píng)估. 其中網(wǎng)絡(luò)結(jié)構(gòu)評(píng)估階段對(duì)于NAS 算法較為重要, 網(wǎng)絡(luò)結(jié)構(gòu)搜索階段所得到的模型評(píng)估的準(zhǔn)確性會(huì)影響算法的有效性, 網(wǎng)絡(luò)結(jié)構(gòu)評(píng)估的效率會(huì)直接影響算法得到最終結(jié)果的速度.
對(duì)于一個(gè)模型最為精確的評(píng)估是從頭開(kāi)始訓(xùn)練模型直到其收斂, 再對(duì)其性能進(jìn)行測(cè)試, 然而這一評(píng)估方案的成本過(guò)于高昂. 例如, 在小型數(shù)據(jù)集CIFAR-10 上完整訓(xùn)練ResNet 模型需要數(shù)個(gè)GPU hours, 而在大型數(shù)據(jù)集ImageNet 上則會(huì)增加到10 GPU days 以上. 早期的工作[1]使用這種策略在CIFAR-10 數(shù)據(jù)集上合計(jì)使用了約22 400 個(gè)GPU days 來(lái)完成對(duì)于模型的搜索.
最近的工作[3-4,6,14-21]不再為每個(gè)單一的模型結(jié)構(gòu)進(jìn)行完整的訓(xùn)練, 轉(zhuǎn)而使用共享網(wǎng)絡(luò)參數(shù)的策略同時(shí)訓(xùn)練整個(gè)或部分模型空間, 從而將NAS 算法所占用的計(jì)算資源從上萬(wàn)GPU days 降低到了數(shù)個(gè)GPU days. 具體來(lái)說(shuō), 權(quán)值共享策略將搜索空間的一部分或者整個(gè)搜索空間A轉(zhuǎn)化為一個(gè)帶有參數(shù)WA的大型神經(jīng)網(wǎng)絡(luò)N(A,WA) , 對(duì)于每個(gè)采樣所得到的子結(jié)構(gòu), 其模型的參數(shù)都直接從WA繼承, 如果有需要, 可以在繼承后進(jìn)行模型的微調(diào), 但不進(jìn)行從頭開(kāi)始的完整訓(xùn)練. 通常稱這個(gè)大型神經(jīng)網(wǎng)絡(luò)為超網(wǎng), 而將屬于它的一部分的候選子模型稱為子網(wǎng). 通過(guò)這種方式, 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索所需要的計(jì)算資源被大大降低了.
One-shot 方案就是一種采用了權(quán)值共享策略的神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索算法, 這種方案將搜索空間設(shè)計(jì)為多個(gè)神經(jīng)網(wǎng)絡(luò)模塊的線性串聯(lián), 每個(gè)模塊有若干個(gè)候選模塊, 而后將整個(gè)搜索空間轉(zhuǎn)換為一個(gè)超網(wǎng). One-shot 方案分為兩個(gè)步驟: 第一步, 對(duì)整個(gè)超網(wǎng)進(jìn)行訓(xùn)練, 計(jì)算公式為
第二步, 在訓(xùn)練好的超網(wǎng)上進(jìn)行子網(wǎng)的搜索并選出最優(yōu)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu), 計(jì)算公式為
早期工作[1]先進(jìn)行神經(jīng)網(wǎng)絡(luò)模型的采樣再對(duì)每個(gè)神經(jīng)網(wǎng)絡(luò)模型的參數(shù)進(jìn)行訓(xùn)練, 而one-shot 方案是先對(duì)搜索空間所對(duì)應(yīng)的超網(wǎng)進(jìn)行參數(shù)優(yōu)化, 再通過(guò)子網(wǎng)的采樣與參數(shù)的繼承對(duì)子網(wǎng)進(jìn)行評(píng)估. 由于從超網(wǎng)繼承的參數(shù)是與整個(gè)超網(wǎng)耦合的, 所以一般來(lái)說(shuō), 需要進(jìn)行另外的完整訓(xùn)練以使最佳子網(wǎng)達(dá)到其最佳性能.
由于早期方案的搜索空間過(guò)大, 同時(shí)沒(méi)有太好的模型評(píng)估策略, 導(dǎo)致所需要的總體計(jì)算資源量過(guò)大, 只能極為有限地在搜索空間中進(jìn)行探索. 因此, 在后續(xù)研究工作[2-4,6,14-21]中, 通常使用基于線性堆疊單元的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu), 在相對(duì)較小的搜索空間中尋找最優(yōu)結(jié)構(gòu).
One-shot 模型則著眼于線性堆疊的各個(gè)單元之間的差異性, 經(jīng)典的one-shot 模型[4,14,16]同樣由多個(gè)單元線性堆疊而成(圖1), 每個(gè)單元被稱為選擇模塊, 由若干個(gè)相同結(jié)構(gòu)的候選模塊構(gòu)成, oneshot 模型的搜索目標(biāo)是通過(guò)對(duì)每一個(gè)選擇模塊中的候選模塊進(jìn)行選擇, 從而構(gòu)成一個(gè)最優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu). 這種搜索空間雖然保證了權(quán)值共享策略的有效性, 但僅僅給了單個(gè)模塊有限的幾種選擇, 這幾種選擇又是在已有神經(jīng)網(wǎng)絡(luò)的人工設(shè)計(jì)中精心挑選出來(lái)的結(jié)構(gòu), 通過(guò)條件約束, 壓縮了one-shot 模型的搜索空間.
圖1 One-shot 模型結(jié)構(gòu)Fig. 1 One-shot model structure
為了提高權(quán)值共享策略在復(fù)雜搜索空間上的有效性, 本文假設(shè)存在一種復(fù)雜化操作f可以將一個(gè)模型進(jìn)行復(fù)雜化并形成一個(gè)新的搜索空間, 且這種操作滿足: 如果一個(gè)模型結(jié)構(gòu)是搜索空間中的最優(yōu)結(jié)構(gòu), 那么基于這個(gè)結(jié)構(gòu)的細(xì)化空間中的最優(yōu)結(jié)構(gòu)也是這個(gè)搜索空間中所有結(jié)構(gòu)的細(xì)化空間中的最優(yōu)結(jié)構(gòu):
式中:f(a) 為細(xì)化某個(gè)模型a所得到的新的搜索空間,g(·) 為在所給的搜索空間中的最優(yōu)模型結(jié)構(gòu).
通過(guò)這種假設(shè), 可以將在指定搜索空間中進(jìn)行搜索的任務(wù)分解為兩個(gè)在遠(yuǎn)小于原有搜索空間的子空間內(nèi)的任務(wù), 而根據(jù)權(quán)值共享策略所得到的子網(wǎng)性能排序和經(jīng)過(guò)完整訓(xùn)練所得到的模型性能排序的匹配程度與NAS 算法所對(duì)應(yīng)的搜索空間大小成正相關(guān)這一結(jié)論, 如果不考慮現(xiàn)有的搜索與評(píng)估方式所帶來(lái)的誤差, 通過(guò)分步搜索方案所得到的模型應(yīng)當(dāng)優(yōu)于僅使用一次one-shot 方案所得到的模型.
本文考慮構(gòu)造一個(gè)通過(guò)迭代進(jìn)行超網(wǎng)訓(xùn)練過(guò)程和模型搜索過(guò)程的one-shot 方案, 通過(guò)迭代的方式擴(kuò)展one-shot 方案所對(duì)應(yīng)的搜索空間, 這個(gè)方案需要滿足以下特征.
(1)為了保證參數(shù)共享策略的有效性, 單次迭代過(guò)程的搜索空間不能太大, 在最理想的情況下, 每次迭代的搜索空間應(yīng)當(dāng)不能有任何重疊. 但同時(shí), 所有迭代過(guò)程的疊加需要能夠表示完整的搜索空間.
(2) 擴(kuò)大搜索空間所帶來(lái)的多次超網(wǎng)訓(xùn)練所消耗的計(jì)算資源不能過(guò)大, 最好限制在原有方案的2 ~ 3 倍.
根據(jù)上述需求, 本文設(shè)計(jì)了一個(gè)遞歸形式的NAS 算法搜索空間, 這種形式的搜索空間大小介于早期工作的拓?fù)涫剿阉骺臻g大小與基于單元的NAS 算法的線性搜索空間大小之間. 在本文所給出的遞歸方案中, 一個(gè)遞歸模塊分為兩個(gè)部分: 第一個(gè)部分是處理部分, 可以由一個(gè)基本操作或兩個(gè)遞歸模塊構(gòu)成, 其中將只包含一個(gè)基本操作的遞歸模塊定義為基本遞歸模塊, 將包含兩個(gè)基本遞歸模塊的遞歸模塊定義為復(fù)合遞歸模塊. 第二個(gè)部分為組合部分, 可以通過(guò)超參數(shù)決定是否需要在這個(gè)模塊的輸入與輸出間加上殘差連接.
如圖2, 其中基本遞歸模塊是遞歸模塊的最小表示結(jié)構(gòu), 而復(fù)合遞歸模塊的設(shè)計(jì)則保證了神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)可以向下遞歸得到一個(gè)樹(shù)形結(jié)構(gòu). 通過(guò)將一個(gè)網(wǎng)絡(luò)中的基本遞歸模塊替換為含有兩個(gè)基本遞歸模塊的復(fù)合遞歸模塊, 可以進(jìn)一步復(fù)雜化神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu), 增加神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的模塊數(shù), 得到更為復(fù)雜的神經(jīng)網(wǎng)絡(luò)模型.
圖2 遞歸模塊的設(shè)計(jì)Fig. 2 Design of a recursive module
本文將神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索過(guò)程分為兩個(gè)階段: 第一階段是模型結(jié)構(gòu)擴(kuò)張階段; 第二階段是模型細(xì)節(jié)選擇階段.
在模型結(jié)構(gòu)擴(kuò)張階段中, 本文所提出的模型對(duì)于神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的搜索主要聚焦于各個(gè)遞歸模塊間的殘差連接, 在這個(gè)過(guò)程中, 進(jìn)行多輪超網(wǎng)訓(xùn)練-子網(wǎng)搜索過(guò)程的迭代, 在每次迭代過(guò)程中, 將上一輪搜索所得到的最優(yōu)子網(wǎng)結(jié)構(gòu)所對(duì)應(yīng)的遞歸樹(shù)中的葉子節(jié)點(diǎn) (即上一輪中處理部分中的基本遞歸模塊) 替換為含有兩個(gè)基本遞歸模塊的復(fù)合遞歸模塊(圖3). 在模型結(jié)構(gòu)擴(kuò)張階段中, 每輪迭代所得到的模型深度可以達(dá)到上一輪所得到的模型深度的兩倍, 由于在其他條件不變的情況下, 模型訓(xùn)練時(shí)間與模型的深度成正比, 因此在模型結(jié)構(gòu)擴(kuò)張階段中, 本文所提出的NAS 算法所使用的計(jì)算資源約為單次超網(wǎng)完整訓(xùn)練過(guò)程所使用的計(jì)算資源的兩倍左右:
圖3 遞歸模塊的結(jié)構(gòu)擴(kuò)張過(guò)程Fig. 3 The architecture expansion process of the recursive module
式中:E是模型擴(kuò)張的次數(shù);Tf是最終搜索到的模型的運(yùn)行時(shí)間;To是模型中除遞歸模塊之外, 其他模塊運(yùn)行所需的時(shí)間, 與擴(kuò)張次數(shù)無(wú)關(guān)且小于遞歸模塊運(yùn)行所需要的時(shí)間.
模型細(xì)節(jié)選擇階段是對(duì)確定結(jié)構(gòu)的模型進(jìn)行基本遞歸模塊內(nèi)卷積的選擇以及注意力機(jī)制的選擇,這個(gè)過(guò)程可以決定模型的實(shí)現(xiàn)細(xì)節(jié), 進(jìn)而得到效果更好的模型.
卷積層的選擇是為了保證各個(gè)模塊之間的參數(shù)量、運(yùn)算量相近, 本文分別選取了以下模塊作為卷積層的候選項(xiàng), 其中bottleneck 層是He 等[22]提出的卷積模塊, 而MBConv6 則是Sandler 等[23]提出的卷積模塊:
(1)使用 3×3 卷積的MBConv6 層;
(2)使用 5×5 卷積的MBConv6 層;
(3)使用 7×7 卷積的MBConv6 層;
(4) 使用 3×3 膨脹卷積的MBConv6 層;
(5)使用 5×5 膨脹卷積的MBConv6 層;
(6) 使用 1×7 和 7×1 可分離卷積的MBConv6 層;
(7) 使用 3×3 卷積的bottleneck 層;
(8)使用 3×3 膨脹卷積的bottleneck 層.
事實(shí)上, 卷積層的選擇可以任意配置, 只需要保證各候選項(xiàng)之間的性能差距不大即可, 甚至可以使用由已有的NAS 算法所得到的高效微觀結(jié)構(gòu). 在這種情況下, 可以通過(guò)本文所提出的NAS 算法在所對(duì)應(yīng)的已有NAS 算法上進(jìn)一步擴(kuò)大在模型宏觀結(jié)構(gòu)上的搜索空間并進(jìn)行搜索.
本文選取的注意力機(jī)制的選擇有以下幾種:
(1) 不使用注意力機(jī)制;
(2) 使用通道注意力機(jī)制;
(3) 使用空間注意力機(jī)制;
(4) 使用CBAM (Convolutional Block Attention Module) 注意力機(jī)制.
受FairNAS[8]的啟發(fā), 本文所提出的模型, 在超網(wǎng)訓(xùn)練的階段每次隨機(jī)采樣N條互不重合的子網(wǎng)路徑進(jìn)行訓(xùn)練. 其中N為選擇模塊內(nèi)候選操作的數(shù)量, 通過(guò)這個(gè)方法, 可以保證在每次超網(wǎng)訓(xùn)練的過(guò)程中所有的候選操作都經(jīng)過(guò)了相同次數(shù)的訓(xùn)練, 從而避免某個(gè)候選操作由于訓(xùn)練次數(shù)較多而在超網(wǎng)訓(xùn)練完成后對(duì)子網(wǎng)性能的比較中獲得優(yōu)勢(shì).
在模型搜索方面, 與Guo 等[6]提出的模型SPOS (Single Path One-Shot)一樣, 本文通過(guò)普通的遺傳算法對(duì)超網(wǎng)進(jìn)行采樣. 如算法1 中所述, 在每輪迭代中根據(jù)種群中最優(yōu)的一些個(gè)體作為基礎(chǔ), 通過(guò)交叉與變異操作生成下一輪操作的種群. 需要注意的是, 由于本文所提出的NAS 算法需要進(jìn)行多輪的搜索過(guò)程, 并且后期的迭代搜索空間大于早期的迭代搜索空間, 所以所使用的遺傳算法的迭代次數(shù)隨著模型中選擇模塊數(shù)量的增加而線性增加.
算法 1 基于遺傳算法的架構(gòu)搜索算法W Q輸入: 超網(wǎng)參數(shù) ; 種群大小 ; 迭代次數(shù) ; 驗(yàn)證集輸出: 搜索到最優(yōu)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)a?TD Q 1: 隨機(jī)生成大小為 的初始種群q0 2: For i=1 ~T do 3: 繼承超網(wǎng)參數(shù) , 在驗(yàn)證集 上獲得上一代種群 qi?1 中每個(gè)個(gè)體的準(zhǔn)確率P i?1 W D 4: 獲得上一代種群中性能最高的k 個(gè)模型Top-k 作為這一代族群的種子5: 通過(guò)雜交與突變操作, 基于種子Top-k 生成本代種群qi 6: End for 7: Return 最終種群 qi 在驗(yàn)證集 D 上擁有最高準(zhǔn)確率的模型結(jié)構(gòu)
本文所提出的模型在搜索空間方面, 使用了搜索空間較小的分步搜索方案組合成了一個(gè)大型搜索空間, 相比已有的方案[4,6,8]在更大的搜索空間中對(duì)模型結(jié)構(gòu)進(jìn)行搜索. 在搜索時(shí)間方面, 本文所提供的方案僅少量延長(zhǎng)了已有模型[4]的訓(xùn)練時(shí)間.
由于實(shí)驗(yàn)條件的限制, 本文選用了CIFAR-10 與CIFAR-100 作為實(shí)驗(yàn)數(shù)據(jù)集, 從原有訓(xùn)練集中隨機(jī)采樣了5 000 張圖片作為模型選擇過(guò)程中的驗(yàn)證集, 以避免模型結(jié)構(gòu)在結(jié)構(gòu)搜索過(guò)程中對(duì)原有的測(cè)試集出現(xiàn)過(guò)擬合現(xiàn)象, 原有訓(xùn)練集中剩余的45 000 張圖片則作為新的訓(xùn)練集. 在最終搜索到的神經(jīng)網(wǎng)絡(luò)模型完成重新訓(xùn)練后, 原有測(cè)試集將用于其性能評(píng)估.
在訓(xùn)練方面, 本文使用0.025 的初始學(xué)習(xí)率以及余弦退火學(xué)習(xí)率衰減策略對(duì)所提出的模型進(jìn)行訓(xùn)練. 在模型搜索階段中, 每一次超網(wǎng)訓(xùn)練使用100 輪迭代進(jìn)行訓(xùn)練, 而對(duì)于最終搜索得到的子網(wǎng)使用600 輪迭代進(jìn)行完整的重新訓(xùn)練. 整個(gè)實(shí)驗(yàn)過(guò)程使用一張NVIDIA GTX 1080Ti 顯卡進(jìn)行實(shí)驗(yàn).
如圖4 所示, 本文所使用的模型結(jié)構(gòu)帶有兩個(gè)下采樣層, 每個(gè)下采樣之間都使用一個(gè)基本遞歸模塊作為初始狀態(tài). 為了使本文所提出的模型在參數(shù)量和計(jì)算量方面, 和基線模型如NASNet[2]與DARTS[18]等相近, 通過(guò)同時(shí)調(diào)整模型擴(kuò)張的次數(shù)與模型的初始通道數(shù)來(lái)維持模型參數(shù)數(shù)量為3 百萬(wàn) ~ 4 百萬(wàn).本文選取了初始通道數(shù)為55, 其所對(duì)應(yīng)的模型擴(kuò)張次數(shù)為2 和初始通道數(shù)為40, 其所對(duì)應(yīng)的模型擴(kuò)張次數(shù)為3 這兩種設(shè)置對(duì)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行搜索與評(píng)估.
圖4 模型的基礎(chǔ)結(jié)構(gòu)Fig. 4 Basic architecture of the model
此外, 本文所提出的搜索空間可以視為在基于單元的NAS 算法基礎(chǔ)上額外定義的搜索空間. 因此, 本文使用了由DARTS[18]得到的單元結(jié)構(gòu)作為基本操作, 將以32 為初始通道數(shù), 經(jīng)過(guò)3 輪模型擴(kuò)張后搜索得到的模型來(lái)評(píng)估本文所提出的NAS 算法所帶來(lái)的性能增益. 本文使用了NAS 領(lǐng)域常用的幾項(xiàng)指標(biāo)對(duì)所提出模型的性能進(jìn)行評(píng)估, 包括: 模型準(zhǔn)確率、模型的參數(shù)量以及搜索時(shí)間. 表1 給出了本文所提出模型與其他研究工作中所提出的模型的模型性能對(duì)比. 通過(guò)與其他模型的比較, 本文所提出的算法作為一種搜索整個(gè)神經(jīng)網(wǎng)絡(luò)模型架構(gòu)的方案擁有優(yōu)越的性能, 但是相比最新的基于同構(gòu)單元的NAS 算法仍然有著一定的性能差距. 本文所提出的NAS 算法與目前已有的基于單元的NAS 算法相獨(dú)立, 可以作為一個(gè)組件.
表1 在CIFAR-10 和CIFAR-100 上的模型性能對(duì)比Tab. 1 Performance comparison of models on CIFAR-10 and CIFAR-100
在分步搜索方案的驗(yàn)證過(guò)程中, 會(huì)多次采樣隨機(jī)子網(wǎng)進(jìn)行完整訓(xùn)練, 出于對(duì)實(shí)驗(yàn)效率的考慮, 同時(shí)考慮到無(wú)論是直接搜索策略還是分步搜索策略都存在一定的誤差, 為了避免過(guò)大的搜索空間導(dǎo)致評(píng)估結(jié)果的不穩(wěn)定, 使用初始通道數(shù)為16, 經(jīng)過(guò)2 次模型擴(kuò)張后搜索到的模型進(jìn)行評(píng)估. 由于這個(gè)過(guò)程中模型的參數(shù)量與運(yùn)算量都相差不大, 因此這部分實(shí)驗(yàn)只對(duì)模型間的性能進(jìn)行比較, 而不注明模型的參數(shù)量與運(yùn)算量.
對(duì)于分步搜索方案的驗(yàn)證分為有效性和高效性兩個(gè)部分: 有效性指的是分步模型的搜索空間保證不遺漏完整搜索空間中的高性能模型, 這一指標(biāo)難以衡量, 因此只能通過(guò)在完整的搜索空間與分步搜索空間內(nèi)所有模型的預(yù)計(jì)分布來(lái)大致表現(xiàn); 高效性指的是分步搜索方案相比整體搜索方案在相同的時(shí)間里能找到更好的模型結(jié)構(gòu). 對(duì)于分步搜索方案有效性的驗(yàn)證, 使用3 種方案與本文所提出的方案進(jìn)行比較, 分別為: 在完整的搜索空間中隨機(jī)采樣得到的模型結(jié)構(gòu); 第一步使用演化搜索, 第二步使用隨機(jī)采樣; 第一步使用隨機(jī)采樣, 第二步使用演化搜索. 對(duì)于分步搜索方案高效性的驗(yàn)證, 構(gòu)建了一個(gè)建立在本文所提出的完整搜索空間上的超網(wǎng)并通過(guò)單次演化方法進(jìn)行直接搜索. 通過(guò)對(duì)比, 從而對(duì)本文所提出的分步搜索方案進(jìn)行驗(yàn)證.
由于直接搜索整個(gè)空間的方案所需要的超網(wǎng)的模型結(jié)構(gòu)更為復(fù)雜且路徑更多, 本文使用了更多的迭代次數(shù)來(lái)對(duì)這一方案的超網(wǎng)進(jìn)行訓(xùn)練. 具體來(lái)說(shuō), 在分步搜索方案中, 對(duì)于每一步的搜索都只使用100 輪迭代對(duì)當(dāng)前階段的超網(wǎng)進(jìn)行訓(xùn)練. 在直接搜索方案中, 本文使用200 輪迭代對(duì)超網(wǎng)進(jìn)行訓(xùn)練.在子網(wǎng)的采樣階段, 由于直接搜索方案中超網(wǎng)的選擇模塊個(gè)數(shù)更多, 單輪搜索的搜索空間更大, 因此將會(huì)進(jìn)行更多次的迭代搜索. 在對(duì)數(shù)據(jù)的統(tǒng)計(jì)過(guò)程中, 本文將涉及隨機(jī)采樣的方案都進(jìn)行了10 次采樣, 直接搜索方案與分步搜索方案則全部完整運(yùn)行了3 次以獲得平均性能. 表2 展現(xiàn)了對(duì)分步搜索方案有效性和高效性驗(yàn)證的實(shí)驗(yàn)數(shù)據(jù).
表2 分步搜索方案有效性和高效性的驗(yàn)證Tab. 2 Validation of the effectiveness and efficiency of step-by-step search solutions
從有效性角度來(lái)看, 在完整空間中進(jìn)行隨機(jī)采樣所得到的模型平均性能低于在第一步使用演化搜索所得到的最優(yōu)結(jié)構(gòu). 第二步使用隨機(jī)采樣所得到的模型平均性能, 這顯示了分步搜索方案在一定程度上確實(shí)屏蔽了一部分性能較低的宏觀結(jié)構(gòu). 第一步搜索所得到的結(jié)果使得第二步的搜索空間相對(duì)而言偏向性能較優(yōu)的局部搜索空間.
從高效性角度來(lái)看, 比起直接搜索方案, 分步搜索方案的平均性能更優(yōu), 并且相對(duì)而言更為穩(wěn)定,這證明本文所提出的分步搜索方案在一定程度上緩解了使用權(quán)值共享策略搜索到的模型性能隨著搜索空間的增大而降低的問(wèn)題. 相比直接搜索方案, 分步搜索方案在相同時(shí)間內(nèi)可以找到性能更高的模型結(jié)構(gòu).
表2 顯示了權(quán)值共享策略在神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索算法中的有效性. 通過(guò)使用權(quán)值共享策略, 可以以較高的效率得到較優(yōu)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu). 隨機(jī)采樣所得到的性能最高的模型, 優(yōu)于使用直接搜索方案所搜索到的性能最低的模型, 這一點(diǎn)則說(shuō)明了權(quán)值共享策略僅是一個(gè)近似解決方案, 并不能保證得到最優(yōu)的解決方案, 因此還需要進(jìn)一步的研究以保證其有效性與獲得結(jié)果的穩(wěn)定性.
本文所提出的遞歸型搜索空間與分步搜索方案去除了部分較差的網(wǎng)絡(luò)結(jié)構(gòu), 提高了網(wǎng)絡(luò)搜索效率. 但需要注意的是與此同時(shí)可能也剔除了一些潛在的、更為高效的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu). 因此, 未來(lái)在此基礎(chǔ)上, 需要對(duì)更為復(fù)雜的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行研究.
相比于已有的工作, 本文的工作可以作為一個(gè)新的完整搜索空間, 同時(shí)也可以視作對(duì)原有搜索空間的一個(gè)拓展. 對(duì)于權(quán)值共享策略的有效性隨搜索空間的擴(kuò)大而降低的問(wèn)題, 本文提出了分步的思路:將整個(gè)搜索空間分而治之, 保證每次使用權(quán)值共享策略所得到的結(jié)果更為可信, 在每次對(duì)模型結(jié)構(gòu)的選擇決策中使用貪心的策略得到最終的神經(jīng)網(wǎng)絡(luò)模型并對(duì)其進(jìn)行了評(píng)估. 此外, 將本文所提出的方案與其他已有的方案進(jìn)行比較, 證明了本文所提出方案的有效性. 本文所提出的方案同樣存在一定的局限性, 分步搜索方案雖然削弱了權(quán)值共享策略對(duì)于搜索空間尺寸的敏感性, 但同時(shí)引入了分步搜索方案的有效性問(wèn)題. 在未來(lái)的工作中, 仍舊需要探索更為理想的分步搜索方案以及能表示更為復(fù)雜的宏觀結(jié)構(gòu)的搜索空間.