馬連博,李 楠,程 適
(1 東北大學 軟件學院,遼寧 沈陽 110819;2 陜西師范大學 計算機科學學院,陜西 西安 710119)
物聯(lián)網(wǎng)、大數(shù)據(jù)等新型技術及相關應用的涌現(xiàn),促進了深度學習方法的創(chuàng)新發(fā)展[1]。從多層神經(jīng)網(wǎng)絡演化而來的深度學習是當前大數(shù)據(jù)處理與分析的主流方法[2]。深度學習的概念源于人工神經(jīng)網(wǎng)絡的研究,它通過組合低層特征形成更加抽象的高層表示屬性類別或特征的機制,以發(fā)現(xiàn)數(shù)據(jù)的分布式特征表示[3]。神經(jīng)網(wǎng)絡是深度學習的基礎模塊,其本質是一種體現(xiàn)特征映射關系的網(wǎng)絡模型,用來學習輸入與輸出之間的對應關系及規(guī)律。傳統(tǒng)神經(jīng)網(wǎng)絡結構分為輸入層、隱藏層、輸出層,各層之間的連接是單向的,并且每層的神經(jīng)元之間沒有連接。輸入層和輸出層之間的網(wǎng)絡層被稱為隱藏層。隱藏層和輸出層中的每個神經(jīng)元將與其相連的上一層神經(jīng)元的值進行加權求和,通過激活函數(shù)進行非線性轉化作為下一層的輸入。在此過程中,數(shù)據(jù)值從輸入層通過隱藏層的計算后傳遞至輸出層。訓練過程一般使用誤差反向傳播算法(error backpropagation,BP)進行訓練。
神經(jīng)網(wǎng)絡模型精度的影響因素主要包括神經(jīng)元數(shù)量、網(wǎng)絡層數(shù)、權重及學習率等參數(shù)[4],而這些參數(shù)的調整都存在不同的問題。通過人工去調節(jié)神經(jīng)元數(shù)量、網(wǎng)絡層數(shù)、學習率等參數(shù)需要大量的專業(yè)知識,即使是專業(yè)人士也需要多次試錯。針對神經(jīng)網(wǎng)絡的權重優(yōu)化主要是采用基于梯度的算法,存在陷入局部最優(yōu)解的風險[5]。
近些年,隨著人工智能算法的快速發(fā)展以及工程應用領域問題的復雜化,研究人員提出了一系列神經(jīng)網(wǎng)絡結構和神經(jīng)元模型去解決相應的機器學習問題。例如,卷積神經(jīng)網(wǎng)絡在圖片處理上取得了出色的應用效果[6];循環(huán)神經(jīng)網(wǎng)絡在自然語言處理領域得到了較多的應用[7];脈沖神經(jīng)網(wǎng)絡作為“類腦”研究的關鍵模型受到了廣泛關注[8];一些基于圖模型的神經(jīng)網(wǎng)絡結構也成為研究熱點,并在多個工業(yè)應用場景取得了較好的性能表現(xiàn)[9]。面對不同的學習任務,如何優(yōu)化神經(jīng)網(wǎng)絡的各種(超)參數(shù)(權重、層數(shù)等)是應用神經(jīng)網(wǎng)絡處理復雜問題的首要任務。首先,如何高效地優(yōu)化神經(jīng)網(wǎng)絡的權重是一個重要挑戰(zhàn)[10]。目前,常見的權重優(yōu)化方法是基于導數(shù)的方式(如梯度法、擬牛頓法等),但存在容易陷入局部最優(yōu)解的現(xiàn)象。更重要的是,在神經(jīng)網(wǎng)絡模型的訓練過程中,訓練樣本不均衡、網(wǎng)絡結構過于復雜等問題會導致梯度消失、模型坍陷、梯度爆炸等現(xiàn)象,而傳統(tǒng)梯度方法很難處理這類問題。其次,如何自適應調整神經(jīng)網(wǎng)絡的結構參數(shù)(如層數(shù)等)是另一個重要挑戰(zhàn)。目前,神經(jīng)網(wǎng)絡結構的設定主要基于人為經(jīng)驗,這本身就是一個復雜且耗時耗力的過程[11]。隨著神經(jīng)網(wǎng)絡模型的結構越來越復雜、參數(shù)越來越多,很多新興的分布式機器學習模型及應用(如聯(lián)邦學習[12]、云計算[13]等)需要兼顧神經(jīng)網(wǎng)絡的訓練效率與學習精度,這對神經(jīng)網(wǎng)絡的訓練方法提出了更高的挑戰(zhàn)。
上述神經(jīng)網(wǎng)絡的優(yōu)化本質上是一個超參數(shù)優(yōu)化問題,即如何根據(jù)訓練樣本的特點,尋找合適的網(wǎng)絡結構和相應的參數(shù)。進化計算[14](evolutionary computation)作為一種隨機搜索的優(yōu)化方法,其具有不需要梯度信息、可分布式處理、魯棒性強、全局搜索等特點,對于解決不可微、NP-hard問題以及尋找最優(yōu)結構問題有著較好的表現(xiàn)[15]。本文從神經(jīng)網(wǎng)絡與進化計算結合的角度去闡述進化神經(jīng)網(wǎng)絡的現(xiàn)狀以及面臨的挑戰(zhàn)。
進化計算的靈感來自于大自然的生物進化[16],例如:人們通過模仿環(huán)境選擇、基因交叉和變異這一生物演化的迭代過程,提出了能夠用于求解最優(yōu)化問題的遺傳算法[17]。遺傳算法使用群體搜索技術,將一組問題的解用種群代替,通過將選擇、交叉和變異等一系列遺傳操作施加到當前種群來產(chǎn)生新一代的種群,并逐漸使種群進化到包含近似最優(yōu)解的狀態(tài)。在進化過程中,適應度大的個體具有較大的生存概率,同時獲得更適應環(huán)境的基因序列[18]。因此,其具有強魯棒性、自組織、自適應和自學習等特性[19],具體流程如圖1所示。
圖1 遺傳算法框架
在初始化種群時,由于遺傳算法不能直接處理問題空間的參數(shù),因此需要將求解的問題表示成遺傳空間的染色體或個體[20],這一過程通常被稱為編碼。常見的編碼方式主要有樹型結構[21]、線性結構和圖型結構[22]等。一般采用目標函數(shù)值作為評估個體適應度的標準。適應度函數(shù)在整個進化過程中可以是恒定的,也可以根據(jù)期望的目標或情況而變化。正是由于適應度函數(shù)變化的特點使得進化算法具有高度的適應性[23]。選擇操作的目的是把精英個體直接遺傳到下一代或通過交叉操作將產(chǎn)生的新個體遺傳到下一代。變異操作則是對選中的個體,以某一概率改變基因值為其他的等位基因。
進化計算主要的應用場景包括以下3種:對變量值的優(yōu)化,即在一個很大的搜索空間內去尋找一個較好的解集;對新結構的設計,探索解決問題的最優(yōu)結構;對舊參數(shù)或結構的改進,主要是對現(xiàn)有模型結構或相關參數(shù)的進一步優(yōu)化[24]。
進化神經(jīng)網(wǎng)絡是將進化計算和神經(jīng)網(wǎng)絡相結合的一種新型網(wǎng)絡模型。這種模型將神經(jīng)網(wǎng)絡的學習特性以及群體智能中自適應進化的機制結合起來,有效地緩解了傳統(tǒng)神經(jīng)網(wǎng)絡模型存在的缺點。相關學者將進化神經(jīng)網(wǎng)絡的優(yōu)化問題分為3類:(超)參數(shù)、網(wǎng)絡結構和模型自身缺陷[4,25]。基本思路是將神經(jīng)網(wǎng)絡的優(yōu)化問題抽象為進化計算中的適應度函數(shù)優(yōu)化問題,主要分為如下3步:首先,要將神經(jīng)網(wǎng)絡模型存在的問題轉換為一個最優(yōu)化求解的問題;其次,根據(jù)相應的問題設計合適的編碼方式;最后,選取合適的進化算法。
目前,關于進化神經(jīng)網(wǎng)絡尚未提出一種通用可行的基本思路,作者通過整理相關文獻,對進化神經(jīng)網(wǎng)絡的思路進行總結,如圖2所示。
圖2 進化神經(jīng)網(wǎng)絡基本思路
2.2.1 參數(shù)優(yōu)化 神經(jīng)網(wǎng)絡的權重是影響神經(jīng)網(wǎng)絡擬合精度的一個關鍵參數(shù)。傳統(tǒng)的網(wǎng)絡參數(shù)優(yōu)化大部分采用基于梯度的方法,例如批量梯度下降(batch gradient descent,BGD)、隨機梯度下降(stochastic gradient descent,SGD)和小批量梯度下降(mini-batch gradient descent,MBGD)[26],這些方法均會受限于梯度信息,存在陷入局部最優(yōu)的風險。
影響神經(jīng)網(wǎng)絡性能的另一類參數(shù)是超參數(shù)。超參數(shù)優(yōu)化存在如下問題:第一,該問題是一個組合優(yōu)化問題, 無法使用傳統(tǒng)的梯度方法進行優(yōu)化;第二,待優(yōu)化的超參數(shù)可能是混合變量(參數(shù)中既有連續(xù)變量,又有類別變量),現(xiàn)有方法很難處理這些混合變量優(yōu)化問題;第三,待優(yōu)化的超參數(shù)與最終的評價指標之間不一定是線性關系。很多情況下,研究人員依靠試錯法對超參數(shù)進行優(yōu)化,需要大量的先驗知識才能夠獲得更高的模型精度[27]。
進化計算作為一種隨機搜索的算法,具有很好的全局搜索能力,不依靠梯度信息進行對可行域的探索,可以有效地避免陷入權重局部最優(yōu)解的困境;另外,它也可以有效處理組合優(yōu)化、混合變量等復雜問題。目前,已有研究人員使用遺傳算法[28]、粒子群優(yōu)化[29]、差分進化[30]和進化策略[31]的方法來優(yōu)化神經(jīng)網(wǎng)絡超參數(shù)(學習率、卷積核尺寸等參數(shù))。
在神經(jīng)網(wǎng)絡權重優(yōu)化方面,研究人員將梯度算法的局部搜索與進化計算的全局搜索能力相結合。具體思路為:先通過進化計算尋找合適的起始點,再采用梯度算法進行尋優(yōu)。這種算法結合二者的優(yōu)勢,將速度和精度做了有機的結合[32]。例如:將權值的求解區(qū)間進行離散化,使用蟻群算法搜尋起始點的最佳組合方式,通過梯度算法得到最終的解,權值離散化方式如圖3所示。
圖3 權值離散化示意圖
在超參數(shù)優(yōu)化方面,Loussaief等[28]將每條染色體視為一個卷積神經(jīng)網(wǎng)絡(convolutional neural network,CNN)超參數(shù)集的候選解決方案,一條染色體可以表示多個超參數(shù)的組合情況。使用訓練精度作為染色體的適應度函數(shù)。該方法的局限性體現(xiàn)在它以一個確定的卷積神經(jīng)網(wǎng)絡架構為前提,對涉及的超參數(shù)進行組合優(yōu)化,未能實現(xiàn)卷積神經(jīng)網(wǎng)絡結構和超參數(shù)的同步優(yōu)化。
2.2.2 結構優(yōu)化 網(wǎng)絡結構通常由人工進行預定義,而一個好的模型結構(即不存在多余的節(jié)點以及過多的網(wǎng)絡層數(shù))可以在給定的數(shù)據(jù)集上得到令人滿意的結果[33]。對于一個確定的問題,節(jié)點數(shù)以及隱藏層數(shù)過少會導致模型的擬合精度不足;過多的節(jié)點數(shù)以及隱藏層數(shù)則會將噪聲一起訓練,引起過擬合等問題,造成網(wǎng)絡泛化能力下降。同時,由于層數(shù)過多,導致基于梯度的算法在梯度回傳時會引發(fā)梯度消失的問題。
上述問題限制了神經(jīng)網(wǎng)絡的進一步應用。因此,迫切需要尋找一種最佳網(wǎng)絡模型結構的設計方法。從優(yōu)化角度來看,該問題可以理解為在結構空間中尋求一個最優(yōu)結構的探索問題。如何對優(yōu)化變量進行編碼是上述方法的一個關鍵點。編碼方式可分為直接編碼法和間接編碼法:直接編碼法是將網(wǎng)絡全部的信息采用編碼的方式表現(xiàn),其優(yōu)點是可以對網(wǎng)絡進行特殊的約束,缺點是只能用于固定的網(wǎng)絡結構,當優(yōu)化的網(wǎng)絡結構規(guī)模較大時計算效率會很低;間接編碼法克服了直接編碼方式的缺點,可以對大型網(wǎng)絡結構進行優(yōu)化求取最優(yōu)結構[25]。
CNN作為深度學習領域中的重要網(wǎng)絡類型之一,其主要包含卷積層、池化層、全連接層。卷積層通過卷積操作提取圖片的局部特征。池化層通過減小表征的空間尺寸來減少參數(shù)個數(shù)。全連接層將分布式特征表示映射到樣本標記空間[34]。這些網(wǎng)絡層的數(shù)量以及排列方式會影響卷積神經(jīng)網(wǎng)絡的性能。例如,由于池化層會損失一部分信息,過多的池化層會導致網(wǎng)絡精度降低。
傳統(tǒng)方法在設計CNN網(wǎng)絡結構時,通常根據(jù)先驗知識去設計合理的網(wǎng)絡模型,但無法滿足模型的最優(yōu)結構。針對CNN的結構優(yōu)化問題,現(xiàn)階段有研究人員使用粒子群算法[35]以及遺傳算法[36]對CNN的結構進行優(yōu)化。也有研究人員通過進化算法使用基于圖的編碼方式優(yōu)化卷積神經(jīng)網(wǎng)絡的結構并取得了不錯的成就。
Wang等[35]使用粒子群算法(particle swarm optimization,PSO)結合變長編碼方式,對CNN網(wǎng)絡結構進行了優(yōu)化。編碼方式借鑒了計算機網(wǎng)絡中關于網(wǎng)絡地址的編碼方式,通過掩碼的方式,將一個定長結構轉化為變長的結構。PSO在進化過程中參數(shù)少,可以加速尋找最優(yōu)結構的過程。實驗結果表明,通過該算法得出的結構優(yōu)于大部分關于圖片處理的模型。
Sun等[36]將該問題轉化為一個通過變長編碼的方式求解卷積層、池化層、全連接層最優(yōu)的組合優(yōu)化問題,提出了一種基于最大先驗的變長編碼方式,結合遺傳算法得出各層之間的組合優(yōu)化結果。其提出的編碼方式有如下的約束條件:第一,在每種結構中默認第一層是卷積層;第二,全連接層在卷積和池化層分配結束后進行數(shù)量的分配;第三,通過先驗知識確定每一類型層的最大數(shù)量。具體的編碼結構如圖4所示。該團隊提出了一種不需要大量計算資源的個體適應度評估方法。但是,該模型只在中等規(guī)模的數(shù)據(jù)上進行了測試,在大規(guī)模的數(shù)據(jù)集上需要大量的計算資源并且需要很長的時間。
圖4 3種不同長度的染色體
2.2.3 模型缺陷的優(yōu)化 上述問題是所有神經(jīng)網(wǎng)絡的共性問題。此外,還有一類特殊問題,即神經(jīng)網(wǎng)絡模型在設計之初就存在的不可避免的缺陷。例如,生成對抗網(wǎng)絡(generative adversarial networks,GAN)作為一種新穎的深度學習模型,獲得了很多研究人員的關注[37-39]。GAN一般由生成器(generator)以及判別器(discriminator)兩部分構成:生成器的任務是盡可能產(chǎn)生同真實數(shù)據(jù)分布相似的偽數(shù)據(jù);鑒別器的任務是判別輸入的數(shù)據(jù)是真實數(shù)據(jù)還是偽數(shù)據(jù)。二者通過對抗訓練的方式使得GAN模型獲得更好的訓練精度[37-38]。
GAN是一種生成式模型,與其他只用到反向傳播而不需要馬爾科夫鏈的生成模型(玻爾茲曼機)相比,它可以產(chǎn)生更加清晰、真實的樣本。但是GAN也存在許多自身無法避免的問題:訓練過程是一個高維非凸優(yōu)化問題,初始化對模型是否收斂到納什均衡點具有關鍵意義;生成器重復地生成完全一致的圖像時會引起模型坍塌問題[39]。
最近有關GANs的研究工作集中于設計各種對抗訓練目標去處理模型坍塌問題[40]?;舅悸窞椋杭僭O給定的鑒別器是最優(yōu)鑒別器,生成器的不同目標函數(shù)旨在測量在不同度量下生成的分布和目標數(shù)據(jù)分布之間的距離,進而分析實驗結果,求取最小化距離。然而,不同的距離最小化方法都有各自的優(yōu)缺點,未能很好地解決模型訓練不穩(wěn)定問題。
為了緩解上述問題,研究人員提出多種方法改進網(wǎng)絡結構[41]與損失函數(shù)[42]。Wang等[43]設計了一種算法來進化一個生成器種群以適應動態(tài)環(huán)境(即鑒別器)。與傳統(tǒng)的遺傳神經(jīng)網(wǎng)絡相比,進化模式允許提出的進化神經(jīng)網(wǎng)絡克服個體對抗目標的限制,并在每次迭代后保留精英個體。同時,采用3種變異算子產(chǎn)生不同的子代去解決模型坍塌和不收斂、不穩(wěn)定問題。所提出的進化生成對抗網(wǎng)絡訓練結構如圖5所示。
圖5 進化生成對抗網(wǎng)絡訓練結構
針對神經(jīng)網(wǎng)絡結構以及(超)參數(shù)優(yōu)化的問題,可以理解為求解單目標優(yōu)化問題[44-45]。然而,現(xiàn)實工程問題通常是多屬性的,需要同時優(yōu)化多個相互沖突的目標[46]。例如,神經(jīng)網(wǎng)絡的可解釋性和泛化能力是彼此相互沖突(矛盾)的兩個目標。泛化能力越高的神經(jīng)網(wǎng)絡模型意味著其具有較差的可解釋性。多目標進化優(yōu)化算法可以很好地平衡這兩個目標,同時提供給研究人員多種解決方案[47-48],增加神經(jīng)網(wǎng)絡的應用場景。
研究人員已經(jīng)在脈沖神經(jīng)網(wǎng)絡[49]、卷積神經(jīng)網(wǎng)絡[50]以及聯(lián)邦學習[51]中,使用多目標進化優(yōu)化的方式為這些神經(jīng)網(wǎng)絡在不同應用背景下的架構設計提供了合理方案。Jin等[52]將訓練性能以及脈沖神經(jīng)網(wǎng)絡的連通性作為待優(yōu)化的兩個目標。訓練性能的評估是以分類誤差的百分比或均方根誤差最小化作為標準;連通性的評估是以連接數(shù)或延遲之和最小化作為指標。仿真結果表明,基于帕累托的脈沖神經(jīng)網(wǎng)絡進化優(yōu)化能夠對脈沖神經(jīng)網(wǎng)絡的性質和所面臨的問題提供更深刻的見解[53],算法的整體架構如圖6所示。
圖6 一種優(yōu)化簡單神經(jīng)網(wǎng)絡連通性和權重的多目標遺傳算法
在多目標進化優(yōu)化中,需要對每一代中不同的網(wǎng)絡模型進行評估,這本身就是一個昂貴的目標,需要消耗很多的計算資源。Lu等[50]通過在搜索過程中逐漸縮小體系結構以及使用貝葉斯模型建立一種共享機制,從而解決了探索過程中需要大量計算資源的困境;在聯(lián)邦學習領域,Zhu等[51]采用一種網(wǎng)格編碼的方式,提高了進化深度神經(jīng)網(wǎng)絡的效率。在多層感知機和卷積神經(jīng)網(wǎng)絡上的實驗結果表明,與標準全連接神經(jīng)網(wǎng)絡相比,其不僅能夠顯著降低通信成本,而且能夠提高聯(lián)邦學習的整體性能。
深度學習已經(jīng)在模式識別、圖片處理、機器翻譯等領域有廣泛應用[54]。傳統(tǒng)神經(jīng)網(wǎng)絡結構都是基于人工先驗知識設計,耗時長且不能保證結構最優(yōu)。這一缺陷逐漸成為制約深度學習進一步發(fā)展的因素。神經(jīng)網(wǎng)絡架構搜索(neural architecture search,NAS)的出現(xiàn)有望結束手動網(wǎng)絡架構設計的繁瑣試錯過程,而且它能探索出一個完全不同于人工設計的網(wǎng)絡結構,從而突破人類現(xiàn)有的思維定式[55]。
目前,基于進化的探索策略在對抗神經(jīng)網(wǎng)絡[56]、圖卷積神經(jīng)網(wǎng)絡[57]、卷積神經(jīng)網(wǎng)絡[58]、液體狀態(tài)機[59](liquid state machine,LSM)上取得了令人矚目的成就。Tian等[59]提出一種基于模擬退火算法對液體狀態(tài)機結構進行搜索的框架,其實現(xiàn)過程如下:第一步,隨機初始化網(wǎng)絡結構;第二步,對結構進行搜索,選擇出適合的網(wǎng)絡層數(shù);第三步,對網(wǎng)絡每一層的結點數(shù)進行優(yōu)化;第四步,對結點之間的參數(shù)進行優(yōu)化。該框架的整體結構如圖7所示。
圖7 基于模擬退火算法的NAS算法框架
NAS對計算資源的需求量大,研究人員主要采用特殊的編碼方式[60]以及使用無監(jiān)督學習[61]或梯度增強決策樹[62]的訓練策略來緩解這種問題。
進化神經(jīng)網(wǎng)絡無論是在結構和超參數(shù)優(yōu)化方面,還是在權衡可解釋性和泛化能力的多目標優(yōu)化領域均取得了良好的效果,但是也存在如下問題。
第一,進化神經(jīng)網(wǎng)絡的可解釋性不足。進化計算與神經(jīng)網(wǎng)絡的可解釋性較差,將進化計算應用到神經(jīng)網(wǎng)絡的方法在運行時間、收斂保證和參數(shù)設置方面仍然缺乏數(shù)學證明,這將會成為限制進化神經(jīng)網(wǎng)絡進一步發(fā)展的重要因素。由于進化計算的隨機性和不確定性,結果可能存在不是最優(yōu)的情況,陷入未成熟收斂的困境。例如,在一些模型上使用進化計算對權值進行優(yōu)化求解無法達到梯度算法可以達到的精度,并且速度方面也不具備優(yōu)勢。
第二,進化神經(jīng)網(wǎng)絡的計算開銷巨大。進化計算是以種群為基礎的算法,需要評估每一代個體的適應度值。迭代過程伴隨著大量的訓練和評估,需要巨大的計算資源,難以滿足工業(yè)的需求。
第三,進化神經(jīng)網(wǎng)絡可擴展性差。面對大規(guī)模的數(shù)據(jù)集,特征數(shù)量和實例數(shù)量的增加通常需要更大的內存和更長的計算時間。由于其較差的可擴展性,進化神經(jīng)網(wǎng)絡不能很好地處理存在數(shù)據(jù)缺失、含有噪聲或者不平衡的數(shù)據(jù)集。
第四,先驗知識的使用。目前針對進化神經(jīng)網(wǎng)絡,研究人員使用先驗知識降低搜索空間的維度,但是這種方法需要先驗知識的準確性。當面對復雜網(wǎng)絡結構時,先驗知識將不再可靠。
GPU設備和云計算設施等硬件的快速發(fā)展已經(jīng)緩解了計算開銷大的問題。未來關于進化神經(jīng)網(wǎng)絡的發(fā)展方向可以概括為如下幾個方面:第一,針對昂貴目標的評估設計相應的方法;第二,進化神經(jīng)網(wǎng)絡的可擴展性研究;第三,進化神經(jīng)網(wǎng)絡模型的可解釋性;第四,群體智能領域中其他算法同神經(jīng)網(wǎng)絡模型相結合。