堆疊網路演算法
Ⅰ ai鍙嶅悜鍫嗗彔鏄浠涔堟剰鎬濓紵
AI鍙嶅悜鍫嗗彔鏄鎸囧熷姪鏈哄櫒瀛︿範涓鐨勭炵粡緗戠粶鏉ュ規暟鎹榪涜屽弽鍚戝勭悊錛屼粠鑰岀敓鎴愬師濮嬫暟鎹鐨勪竴縐嶆柟娉曘傚叿浣撴潵璇達紝鍙嶅悜鍫嗗彔鐨勮繃紼嬫槸灝嗘暟鎹閫氳繃涓涓閫愬眰闄嶇淮鐨勮繃紼嬶紝鐒跺悗鍐嶉氳繃閫愬眰鍗囩淮鐨勮繃紼嬮噸寤哄嚭鍘熷嬫暟鎹銆傝繖縐嶆柟娉曞彲浠ュ簲鐢ㄤ簬鍥懼儚鍒嗘瀽銆佽闊寵瘑鍒絳夐嗗煙錛屼嬌寰楁満鍣ㄥ︿範綆楁硶鏇村姞鍑嗙『銆
AI鍙嶅悜鍫嗗彔鍙浠ュ疄鐜伴珮鏁堢殑鍥懼儚澶勭悊鍜岄珮綺懼害鐨勮闊寵瘑鍒銆傝繖縐嶆柟娉曞彲浠ュ逛紶緇熺殑鍥懼儚澶勭悊鏂規硶鍜岃闊寵瘑鍒妯″瀷榪涜屼紭鍖栧拰鎻愬崌錛屼嬌寰楁満鍣ㄥ︿範搴旂敤鏇村姞騫挎硾銆傚悓鏃訛紝AI鍙嶅悜鍫嗗彔涔熷彲浠ュ府鍔╂垜浠娣卞叆浜嗚В紲炵粡緗戠粶鐨勮繍琛屾満鍒訛紝騫舵帰緔㈡洿娣卞叆鐨勬満鍣ㄥ︿範搴旂敤棰嗗煙銆
AI鍙嶅悜鍫嗗彔宸茬粡搴旂敤浜庡浘鍍忓勭悊銆佽闊寵瘑鍒鍜岃嚜鐒惰璦澶勭悊絳夐嗗煙銆備絾鏄錛孉I鍙嶅悜鍫嗗彔鍦ㄥ簲鐢ㄨ繃紼嬩腑涔熼潰涓寸潃涓浜涙寫鎴橈紝濡傜畻娉曠殑璋冭瘯鍜屼紭鍖栥佹暟鎹澶勭悊鐨勫嶆潅鎬с佺畻鍔涚殑瑕佹眰絳夈傛湭鏉ワ紝闅忕潃鏈哄櫒瀛︿範鎶鏈鐨勪笉鏂鍙戝睍鍜屾櫘鍙婏紝AI鍙嶅悜鍫嗗彔灝嗗湪鏇村箍娉涚殑棰嗗煙寰楀埌搴旂敤錛屽苟鍦ㄥ疄璺典腑涓嶆柇浼樺寲綆楁硶錛屽厠鏈嶆妧鏈鎸戞垬銆
Ⅱ 網路架構搜索
作為計算智能方法的代表,起源於上個世紀四十年代的人工神經網路經歷了五六十年代的繁榮,七十年代的低潮,八十年代的再次復甦,到近十年的廣泛關注,如今已經成為理論日趨完善,應用逐步發展的前沿方向。Hinton 等人2006 年在《Science》上發表的文章引發了深度神經網路研究的熱潮。面對大數據的諸多挑戰,以深度信念網路、卷積神經網路和遞歸神經網路為代表的深度神經網路模型在很多應用領域展示出明顯的優勢和潛力,特別是隨著數據量和數據維數的增加,深度學習的優勢愈加突出。例如,Google 藉助深度學習開發的AlphaGo 能從海量的對弈中學習正確的決策,微軟語音識別採用深度學習使識別錯誤率顯著降低,網路基於深度學習開發的機器人「小度」在跨年齡人臉識別上超越了人類。
經過多年的研究和發展,基於人工神經網路的識別方法也逐漸取代傳統的模式識別方法。神經網路已成為當前比較先進的技術,用來解決許多具有挑戰性的識別任務如文字識別、語音識別、指紋識別、遙感圖像識別、人臉識別、手寫體字元的識別等。其中主流的神經網路模型有卷積網路和遞歸神經網路,卷積神經網路由 Yann LeCun 在 1998 年提出,自從 AlexNe 在 2012 年的 ImageNet 比賽中使用了這一架構拔得頭籌,卷積神經網路迅速流行起來並廣泛應用到視覺任務。如今,最先進的卷積神經網路演算法在進行圖像識別時,甚至可以超過人類肉眼識別的准確率。遞歸神經網路網路提出於 1990 年,被視為循環神經網路的推廣,遞歸神經網路可以引入門控機制以學習長距離依賴,適用於包含結構關系的機器學習任務,在序列識別方面有重要應用。
深度神經網路和深度學習演算法因為在科研工作與工程任務中都取得了顯著的效果從而大受歡迎。它取代了傳統的手動提取特徵方法,夠端到端地自動提取和學習特徵。而其中取得顯著成功的深度神經網路通常是由於它們成功的架構設計,研究的工作重心從提取特徵轉移到了尋找最優架構上。通常來說,模型的容量越大網路的性能就越好,能夠擬合任意函數。因此為了提升網路性能,網路結構被設計的越來越復雜。例如,VGG-16 約有1.4億浮點數參數,整個網路佔用超過500兆存儲空間,需要153億次浮點操作來處理一個$224\times224$大小的圖像。雖然更深的網路層次和復雜的拓撲結構能夠更有效地學習特徵,但是網路規模的增大意味著人工設計網路時需要花費更多時間來反復試驗,即使是專家也需要大量的資源和時間來創建性能良好的模型。
神經網路架構搜索(NAS)是一種自動化學習網路結構的新方法,用於減少繁重的網路設計成本。目前為止,NAS方法設計的網路在識別任務上的表現已經超過了人工設計的架構。NAS可以視作自動機器學習(AutoML)的子領域,與超參數優化和元學習有明顯的重疊。不同的NAS方法的區別主要在於三個維度:搜索空間、搜索策略和性能評估,我們對此分別進行了調研。
搜索空間:搜索空間定義了網路的所有可選結構和操作,通常指數級大,甚至無界。在設計搜索空間時結合先驗知識,即參考現有的針對當前任務的先進結構設計知識,能夠有效減小搜索空間並簡化搜索。但這也會引入偏好,從而限制網路學習到超越當前人類知識的結構。
搜索策略:定義搜索空間後,搜索策略引導尋找高性能的模型架構,其中的難點是保證探索和利用的平衡。一方面,希望快速找到性能良好的架構,另一方面,需要避免過早收斂到次優的架構。
性能評估:NSA的目的是找到一個在未知數據上具有良好泛化性能的架構,一旦模型生成,就需要對其性能進行評估。直觀的方法是在訓練集上訓練收斂,並在驗證集上得到其性能,但是這種方法會耗費巨大的算力,從而限制了可探索的網路結構。一些先進的方法關注於減小性能評估時的計算代價,但會引入誤差。因此,平衡評價的效率和效果是一個需要研究的問題。
從計算的角度來看,神經網路代表了一個通過一系列操作將輸入變數 x 轉換為輸出變數 y 的函數。基於計算圖語言,神經網路可以表示為一個有向無環圖(DAG),其中每個節點表示一個張量 z ,通過邊連接其父節點 I(k),每條邊表示從候選操作集O中選擇的一個操作 o 。節點 k 的計算公式為:
其中候選操作集合$O$主要包括卷積、池化、激活函數、跳躍連接、拼接、加法等基本操作。此外,為了進一步提高模型的性能,一些先進的人工設計模塊也可以作為候選操作,如深度可分離卷積、膨脹卷積、組卷積。基於操作的類型可以選擇不同的超參數,例如輸入節點選取、卷積核數量、尺寸、步長等。不同的搜索空間設計,選擇和組合操作的方法也不同所以參數化的形式也不一樣。一般來說,一個好的搜索空間應該能夠排除人類的偏見,並且足夠靈活,能夠覆蓋更廣泛的模型架構。
全局搜索空間搜索一個完整的網路結構,具有很高的自由度。最簡單的例子是鏈式搜索空間,見圖1左。固定的數量的節點按順序堆疊,只有前一個節點的輸出提供給後一個節點作為輸入,每個節點代表一個層,並具有指定的操作。右圖引入更復雜的跳躍鏈接和多支路結構,此時當前節點可以結合前面所有節點的輸出作為輸入,使得搜索的自由度顯著增大。許多網路都是多分支網路的特例,比如
1)鏈式網路: ;
2)殘差網路: ;
3)DenseNets:
雖然整體結構搜索很容易實現,但它也有一些缺點。首先,搜索空間的大小與網路深度是指數級關系,尋找泛化性能好的深度網路計算成本高。此外,生成的架構缺乏可遷移性和靈活性,在小型數據集上生成的模型可能不適合較大的數據集。有研究提出,初始架構的選擇在搜索全局結構時十分重要。在適當的初始條件下,可以獲得與單元搜索空間性能相當的架構,但是初始架構選擇的指導原則仍然不明確。
基於單元的搜索空間受啟發於人工設計知識,許多有效的網路結構都會重復使用固定結構,例如在RNNs中重復LSTM塊或堆疊殘差模塊。因此可以只搜索這樣的重復單元(cells),整個神經結構的搜索問題被簡化為在單元搜索空間中搜索最優的單元結構,從而極大的減小搜索空間。大多數研究對比了基於全局搜索空間和單元搜索空間的實驗結果,證明在基於單元的搜索空間中可以獲得良好的性能。單元搜索空間的另一個優勢是能方便地在數據集和任務之間進行泛化,因為通過增減卷積核和單元的數量,架構的復雜性幾乎可以任意改變。
NASNet是最早提出的單元搜索空間之一,也是當前最熱門的選擇,之後的大部分改進只是在此基礎上對操作選擇和單元組合策略進行了少量修改。如圖2所示,它由兩種單元組成,分別為保持輸入特徵維度的標准單元(normal cell),和減小空間維度的簡化單元(rection cell)。每個單元由b個塊組成,每個塊由它的兩個輸入和相應的操作定義。可選的輸入包括前兩個單元的輸出和單元中先前定義的塊的輸出,所以它支持跨單元的跳躍連接。未使用的塊被連接起來並作為單元格的輸出,最終通過預定義好的規則級聯這些單元。
不同於上面將單元結構按照人工定義的宏結構進行連接,層次結構是將前一步驟生成的單元結構作為下一步單元結構的基本組成部件,通過迭代的思想得到最終的網路結構。Hier提出的層次搜索空間,通過合並低層單元生成高級單元實現單元級別和網路級別的同時優化。此方法具體分為3層。第一層包含一系列的基礎操作;第二層通過有向無環圖連接第一層的基礎操作,構建不同的單元,圖結構用鄰接矩陣編碼;第三層是網路級的編碼,決定如何連接第二層的單元,組合成一個完整的網路。基於單元的搜索空間可以看作是這種層次搜索空間的一個特殊情況。
強化學習方法(RL)能夠有效建模一個順序決策的過程,其中代理與環境相互作用,代理學會改善其行為從而使目標回報最大化。(圖3)給出了一個基於強化的NAS演算法的概述。代理通常是一個遞歸神經網路(RNN),它在每一步t執行一個動作 來從搜索空間采樣一個新的樣本,同時接收狀態 的觀察值和環境中的獎勵 ,以更新代理的采樣策略。這種方法非常適合於神經結構搜索,代理的行為是生成神經結構,行為空間是搜索空間,環境是指對代理生成的網路進行訓練和評估,獎勵是訓練後的網路結構對未知數據的預測性能,在最後一個行為之後獲得。
4.2進化演算法
進化演算法(EA)是一種成熟的全局優化方法,具有較高的魯棒性和廣泛的適用性。許多研究使用進化演算法來優化神經網路結構。進化演算法演化了一組模型,即一組網路;在每個世代中,至少從這組模型中選擇一個模型,作為親本在突變後作為生成子代。在對子代進行訓練之後,評估它們的適應度並將它們添加到種群中。
典型的進化演算法包括選擇、交叉、變異和更新等步驟。選擇時一般使用聯賽選擇演算法對父類進行采樣,其中適應性最好的一個作為親本。Lemonade對適應度使用核密度估計,使網路被選擇的概率與密度成反比。交叉方式因編碼方案的不同而不同。突變針對的是親本的部分操作,例如添加或移除層,改變層的超參數,添加跳躍連接,以及改變訓練超參數。對於產生的後代,大多數方法隨機初始化子網路權重,而Lemonade把父網路學習到的權重通過使用網路態射傳遞給其子網路。Real等人讓後代繼承其父母的所有不受突變影響的參數,雖然這種繼承不是嚴格意義上的功能保留,它可以加速學習。生成新的網路的同時需要從種群中移除一些個體。Real等人從群體中移除最差的個體,AmoebaNet移除最老的個體。也有一些方法定期丟棄所有個體,或者完全不移除個體。EENA通過一個變數調節最壞模型和最老模型的刪除概率。
基於代理模型的優化方法(SMBO)用一個代理模型來近似目標函數。即不需要訓練采樣到的網路結構,只需要訓練一個代理模型,使用代理模型預測網路的性能。通常在實踐中只需要得到架構的性能排序,而不一定要計算出具體的損失值,因此代理模型只需要預測相對得分並選出有前途的候選架構。然後只對預測性能好的架構進行評估,用它們的驗證精度更新代理模型,這樣只需要完全訓練少量候選架構,大大減少搜索時間。代理模型通常訓練為最小化平方誤差:
貝葉斯優化(BO)是用於超參數優化的最流行的方法之一。最經典的是基於高斯過程的BO,生成的神經結構的驗證結果可以建模為高斯過程,然而,基於高斯的BO方法在觀察次數上的推理時間尺度是立方的,並且不擅長處理變長神經網路。有些工作使用基於樹或者隨機森林的方法來在非常高維的空間中高效的搜索,並且在很多問題上取得了優異的效果。Negrinho利用其搜索空間的樹形結構,並使用蒙特卡洛樹搜索。雖然沒有完整的比較,但初步的證據表明這些方法可以超越進化演算法。
上面的搜索策略搜是從一個離散的搜索空間提取神經結構樣本。DARTS提出搜索空間的連續鬆弛,在連續可微的搜索空間上搜索神經架構如圖4所示,並使用如下softmax函數來鬆弛離散空間:
鬆弛後,架構搜索的任務轉化為網路架構與神經權值的聯合優化。這兩類參數分別在訓練集和驗證集上交替優化,表示為一個雙層優化問題。
為了對搜索過程進行引導,必須對產生的神經網路性能進行評估。一種直觀的方法是訓練網路至收斂,然後評估其性能。但是,這種方法需要大量的時間和計算資源。因此提出了幾種加速模型評估的方法。
為了減少計算負擔,可以用實際性能的低質近似來估測性能。實現方法包括: 縮短訓練時間、選擇數據集的子集、在低解析度的圖像上訓練、每層使用更少的通道數、堆疊更少的單元結構。在低質條件下搜索到的最優網路或單元,構建出最終結構在數據集上重新訓練,得到目標網路。雖然這些低精度的近似能夠減少訓練花費,但性能被低估的同時不可避免地引入了誤差。最近的研究表明,當這種低質評價與完全評價之間的差異較大時,網路性能的相對排名可能變化很大,並強調這種誤差會逐漸增加。
早停技術最初用於防止過擬合。一些研究通過在訓練初期預測網路性能,在驗證集上預計表現不佳的模型被強制停止訓練,以此來加速模型評估。一種在早期估計網路性能的方法是學習曲線外推法。Domhan 等提出訓練初期對學習曲線進行插值,並終止那些預測性能不好的網路結構的訓練。Swersky等在評估學習曲線的好壞時,把網路架構的超參數作為參考因素。另一種方法根據梯度的局部統計信息實現早期停止,它不再依賴驗證集,允許優化器充分利用所有的訓練數據。
代理模型可以被訓練用預測網路性能。PNAS提出訓練一個代理網路(LSTM)來預測網路結構的性能,他不考慮學習曲線而是基於結構的特點來預測性能,並在訓練時推斷更大的網路結構。SemiNAS是一種半監督NAS方法,利用大量的未標記架構進一步提高搜索效率。不需要在對模型進行訓練,只使用代理模型來預測模型精度。預測網路性能的主要難點是:為加快搜索過程,需要在對較大的搜索空間進行較少的評估的基礎上進行良好的預測。當優化空間過大且難以量化,且對每個結構的評估成本極高時,基於代理的方法就不適用。
代理模型還可以用來預測網路權重。超網路(Hypernetworks)是一種神經網路,被訓練來為各種架構生成網路權值。超網路在搜索過程中節省了候選體系結構的訓練時間,因為它們的權值是通過超網路的預測得到的。Zhang等人提出了一種計算圖表示,並使用圖超網路(GHN)比常規超網路(SMASH)更快更准確地預測所有可能架構的權值。
權重繼承是讓新網路結構繼承之前訓練完成的其他網路結構的權值。其中一種方法是網路態射,一般的網路設計方法是首先設計出一個網路結構,然後訓練它並在驗證集上查看它的性能表現,如果表現較差,則重新設計一個網路。可以很明顯地發現這種設計方法會做很多無用功,因此耗費大量時間。而基於網路態射結構方法能夠在原有的網路結構基礎上做修改,修改後的網路可以重用之前訓練好的權重。其特殊的變換方式能夠保證新的網路結構還原成原網路,因此子網路的表現至少不會差於原網路,並且能在較短的訓練時間內繼續成長為一個更健壯的網路。具體地,網路射態能夠處理任意非線性激活函數,可以添加跳躍連接,並且支持添加層或通道得到更深或更寬的等效模型。經典的網路態射只能使網路變大,這可能導致網路過於復雜,之後提出的近似網路態射通過知識蒸餾允許網路結構減小。進化演算法經常使用基於網路態射的變異,或者直接讓孩子繼承親本的權重,再執行一般變異操作,這樣產生的網路具有一個更好的初始值,而不用重頭開始訓練。