鮮開軍 丁新虎 朱城超 朱鐘華 徐東偉③
(*中國人民解放軍61478 部隊 烏魯木齊830001)
(**浙江工業大學網絡空間安全研究院 杭州310023)
近年來,深度學習的研究成果已經成功應用在圖像識別[1]、語音識別[2]和自然語言處理[3]等諸多領域,具有巨大的發展潛力和社會價值。作為深度學習的重要組成部分,神經網絡模型結構在很大程度上決定著深度學習的性能表現[4]。例如,卷積神經網絡(convolutional neural network,CNN)從提出到現在,已經涌現出了許多經典的網絡模型[5],如AlexNet[6]、VGGNet[7]、GoogLeNet[8]、ResNet[9]、DenseNet[10]等,這些網絡模型成功地應用在了許多領域,尤其是在圖像識別領域[11]。作為深度學習領域中另一類重要的模型,循環神經網絡(recurrent neural network,RNN)擅長處理時間序列數據,基于RNN 而提出的長短期記憶網絡(long short-term memory,LSTM)[12]和門控循環單元(gated recurrent unit,GRU)[13]等變體結構,在文本、音頻和視頻等領域也取得了較好的效果[14]。
神經網絡模型的結構對于模型來說非常重要,因此獲取神經網絡模型結構并對其進行分析具有重要意義。但是當得到一個黑盒模型時,其模型結構無法得知,而構建等價模型可以模擬出一個等價模型來幫助分析黑盒模型。因此等價模型構建具有實際意義。
遺傳算法[15](genetic algorithm,GA)是模擬達爾文生物進化論的自然選擇和遺傳學機理的計算模型,是一種通過模擬自然進化過程搜索最優解的方法[16]。該算法無需準確描述問題的全部特征,且具有較強的通用性和魯棒性,能較快適應問題和環境的變化,在對較為復雜的組合優化問題求解時,通常能較快地獲得較好的優化結果。
構建神經網絡等價模型的本質就是一種較為復雜的優化組合問題,且神經網絡的可解釋性理論研究還處于完善過程中,特別是對于深度神經網絡,更是難以找到合適的數學工具對其表達和訓練能力進行建模[17]。
針對上述問題,本文提出了基于遺傳算法構建神經網絡等價模型的方法,在原模型的輸入輸出數據以及經典神經網絡模型結構的基礎上,將模型的結構參數進行編碼,并充分利用遺傳算法搜索最優解的能力,構建了原模型的等價模型。
整體設計方案的流程圖如圖1 所示。首先提取神經網絡模型的結構參數,再選擇合適的編碼方式將提取的參數進行編碼,并根據編碼結果生成初始種群,然后通過遺傳算法的選擇算子、交叉算子、變異算子對種群進行迭代優化,最終選取最優個體作為最終構建的等價模型。

圖1 等價模型構建流程圖
模型的結構參數與模型結構相關,通過優化結構參數可以使得最終構建的等價模型結構相似于原模型,因此首先需要確定所需優化的結構參數。
本文以經典的卷積神經網絡結構進行說明。卷積神經網絡主要由輸入層、卷積層、池化層和輸出層組成,而卷積層為最核心的結構。在卷積層中,上一層的特征圖被卷積核卷積后,通過激活函數得到輸出特征圖[18]。假設卷積層的輸入特征圖的大小為H×W×N,其中H×W表示輸入特征圖的尺寸,N是輸入特征的通道數,K×K×N表示卷積核尺寸,用M表示卷積核數量與輸出特征圖的通道數[19],卷積操作如圖2 所示。

圖2 卷積計算過程
卷積神經網絡的最后通常由多層全連接網絡組成[18],通過全連接層計算,將特征數據映射到樣本標簽空間,再對其進行分類,全連接層中的核心操作是矩陣向量乘積,如圖3 所示。

圖3 全連接結構
通過分析可知,卷積神經網絡的模型結構與卷積核的尺寸、個數和全連接層的單元個數相關。通過改變這些參數,可以生成不同的模型結構。
編碼是把一個問題的可行解從其解空間通過相應的轉換方式,轉換到遺傳算法所能處理的搜索空間[16]。在遺傳算法編碼方式的選擇問題上,Holland[20]建議采用二進制編碼。雖然還有格雷碼編碼[21]、浮點編碼、樹結構編碼[22]、參數動態編碼[23]等多種編碼方式,但是考慮到本文所提取出的模型結構參數均為正整數,且編解碼方式越簡潔,就越方便后續的交叉變異等遺傳操作,因此本文選用二進制編碼方式。
二進制編碼僅使用{0,1} 2 個符號,將每個個體的參數編碼為二進制符號串,式(1)體現了一個二進制串(bn,…,b1,b0)2與十進制數(a)10相互轉換過程。

本文以經典網絡結構AlexNet[6]為例,提取了AlexNet 的模型結構參數作為等價模型構建時的優化對象,并利用二進制編碼方式對其進行編碼。表1展示了AlexNet 原始網絡的結構。選擇卷積核尺寸、個數和全連接層單元個數作為編碼對象,結果如表2 所示。

表1 AlexNet 網絡結構

表2 AlexNet 編碼結果
適應度函數作為描述個體性能的主要評價指標,依據函數值的大小對個體的優劣進行區分。因此適應度函數的構造至關重要,這對遺傳算法的迭代速度以及全局最優解有著直接影響。
本文通過將神經網絡模型訓練時的損失函數與種群個體的適應度函數建立映射關系,實現種群進化過程中對優化目標函數的尋優。
而神經網絡模型的訓練過程,就是減小損失函數值,直到其收斂至基本穩定的過程。多分類問題一般采用交叉熵損失函數[23],其數學表達式為

其中,m為樣本數量,y(i)為第i個樣本的one-hot 向量,hθ(x(i))為對第i個樣本的預測概率結果。
本文在訓練等價模型時,采用的數據標簽為原模型的預測結果。一般而言,分類問題的最終結果y(i)為one-hot 向量,但從模型的角度而言,模型最終的輸出值其實是對各個類別的預測概率值。因此為了避免精度損失,在訓練等價模型時采用相對熵[24]作為其損失函數,其數學表達式如下:

對比式(2)與式(3),式(3)使用原模型的預測值y(i)pre替換式(2)中的y(i),這避免了y(i)僅考慮原模型預測結果的最大分量而造成的精度損失情況,有利于等價模型在訓練階段盡可能地學到原模型更多的細節信息,力求其預測值hθ(x(i))的概率分布盡可能逼近。
但作為種群進化依據的適應度函數,其函數值越大表示個體的適應性越好,即構建的等價模型越接近原模型。因此選取模型收斂到一定程度時相對熵的倒數作為最終個體的適應度,用于后續遺傳算法對個體進行選擇的依據,其數學表達式如下:

其中,(k,i)代表第k輪迭代中第i個個體,而Hki(θ)為對應模型的損失函數值。
當確定神經網絡模型結構參數,并對結構參數進行編碼后,通過將參數進行不同組合即可產生相應的種群。對種群中每個個體代表的模型進行訓練后,根據適應度函數的結果進行后續遺傳算法的優化。
本文對于模型的訓練過程考慮了訓練數據和訓練方式。
關于訓練數據方面,考慮到原模型最終的輸出值是對各個類別預測的概率值,但在轉換為預測結果時會經過one-hot 編碼,而one-hot 編碼只關注預測結果中最大的分量,將其置為1,而將其他類別預測結果置為0,作為分類問題的最終結果。構建等價模型的目的是為了使構建的模型結構盡可能與原模型一致,因此為了避免one-hot 編碼所造成的轉換損失,在訓練等價模型時,直接采用原模型的預測概率值進行損失函數的計算,數學表達式如式(3)所示。
關于訓練方式方面,考慮到神經網絡模型本身訓練所占時長,為了提高訓練效率,在對種群中個體對應的模型訓練時并不一定要等到損失函數收斂到最優狀態,而是可以設定固定訓練步數。該舉措雖然使模型沒有收斂到最優,但加快了遺傳迭代速度,且訓練步數并不是造成模型結構差異的因素,訓練步數為無關變量,對于后續的選擇算子進行個體的選擇并未造成影響。為了提高最終構建的等價模型精度,可以將通過遺傳算法迭代后最終選擇的個體進行再訓練,直至最優收斂狀態,作為構建的等價模型。總體訓練流程如圖4 所示。

圖4 模型訓練方式
遺傳算法的操作算子包括選擇、交叉和變異3種基本形式,它們是遺傳算法強大搜索能力的核心,是模擬自然選擇遺傳過程中發生的繁殖、雜交和突變現象的主要載體[16]。等價模型構建中的處理流程如圖5 所示。

圖5 遺傳算法優化流程
1.6.1 選擇算子
選擇算子體現適者生存的原理,依據適應度對優質個體進行挑選而拋棄劣質個體,其主要作用是避免基因缺失,并提高全局收斂性和計算效率[16]。常用的選擇算子有輪盤賭選擇[25]、線性排序選擇[26]、最優保留選擇和錦標賽選擇[27]等。
本文首先采用最優保留選擇方式對種群進行選擇,直接將種群中適應度最高的個體結構完整地復制到下一代群體中。然后再按照個體的適應度計算出每個個體被選中的概率,如式(5)所示,依據計算出個體被選中的概率值,進行輪盤賭選擇,從而完成選擇過程。

渤海裝備在與多家用戶日常交流中發現,煙氣輪機用戶大都存在大量備件儲存的現象,既不利于企業資產管理,又嚴重占用了企業資金。針對這種情況,渤海裝備開展了煙氣輪機配件集中儲備工作,建立了配件儲備庫。
1.6.2 交叉算子
在遺傳算法中,交叉算子模擬的是自然界生物遺傳基因交換重組的過程,通過交叉能使個體之間的遺傳物質進行交換從而產生新的個體,一方面保存了種群中的優良基因,另一方面也增加了種群的多樣性。
本文采用二進制編碼方式,而適用于二進制編碼個體的交叉算子有單點交叉、兩點交叉、多點交叉、均勻交叉和算數交叉等[28]。在交叉過程中,選擇合適的交叉概率Pc更有利于算法的尋優與收斂,Pc過小則會在迭代過程中導致新個體產生緩慢,致使優化過程減緩,Pc過大會導致最優個體丟失等情況出現,無法收斂[29]。
綜合考慮下,本文采取兩點交叉法作為交叉算子,在個體的二進制編碼串中隨機設置兩個交叉點,然后將這兩個交叉點之間的內容進行交換。表3 給出了一個具體的實例進行說明,對于選擇出的兩個個體的全連接層進行交叉,得到兩個新的個體。

表3 兩點交叉法
而對于交叉概率Pc的計算,則采用文獻[29]中提出的自適應調節概率計算方式,如式(6)所示。其中pc1與pc2為設定的最大與最小交叉概率值,f′為進行交叉操作的兩個個體中適應度較大的個體,favg與fmax分別為該次迭代中種群的平均適應度與最大適應度。如果進行交叉操作的個體適應度小于平均適應度,則表示此時處于遺傳算法尋優的前期過程,種群的適應度分布較為分散,選擇更小的交叉概率有利于保留種群中表現較好的個體;如果進行交叉的個體適應度大于平均適應度時,則表示此時處于遺傳算法尋優的后期過程,種群的適應度分布較為集中,選擇更大的交叉概率,能在不破壞表現較好個體的前提下,提高新個體的產生概率,可以在一定程度上避免陷入局部最優的困境。

1.6.3 變異算子
變異運算就是將個體的編碼串中某些基因座上的基因值用該基因座上的其他等位基因來替換,從而形成新的個體。常用的變異方式有基本位變異、

均勻變異、邊界變異、高斯近似變異等[30]。同時在變異過程中,變異概率Pm的取值對于遺傳算法的尋優過程與最終收斂結果有著同樣重要的影響,Pm過小不容易誕生新的個體,而Pm過大則會影響遺傳算法的穩定性。
本文采用的編碼方式為二進制編碼,因此選擇基本位變異方式即可。首先計算變異概率Pm,當結果滿足變異條件后;再通過計算個體編碼的變異位點,對其進行取反操作完成變異。表4 給出了一個具體的實例進行說明,對于一個全連接層單元數量做變異操作,生成新的變異個體。

表4 基本位變異
計算變異概率Pm的方式選用文獻[29]中提出的自適應變異概率方法,其計算方式如式(7)所示,其中Pm1與Pm2為設定的最大最小變異概率值,f為當前個體的適應度值,favg與fmax分別為該次迭代中種群的平均適應度與最大適應度。如果個體的適應度大于平均適應度,則表示此時處于遺傳算法尋優的后期過程,種群趨于穩定,個體的表現均較為理想,因此加大變異概率更有利于全新個體的產生。
而當確定變異概率Pm后,對于變異位的確定再做進一步考慮。由于神經網絡對于結構的敏感性,當變異位確定為編碼的高位時,變異結果對于模型結構的變動較為劇烈,容易造成整體結構的不穩定。因此本文提出通過結合編碼的位置信息來確定變異位,使得隨著編碼位的增長而被選中為變異位的概率減小,計算方式如式(8)所示。

其中pl表示編碼中第l位被選中的概率,random(0,1)表示生成0~1 之間的隨機數,L表示編碼的總位數。
根據本文所提出的基于遺傳算法的神經網絡等價模型構建方法,在圖像分類、通信信號調制類型分類、網絡鏈路預測領域[31]進行了模型構建實驗。本文就網絡鏈路領域的模型構建結果進行展示說明。
網絡的鏈路預測問題主要是通過利用網絡結構等信息,預測網絡中缺失的鏈路或未來可能出現的鏈路。在圖深度學習[32]中,鏈路預測問題主要通過圖自編碼器模型[33]解決。本文利用Apache 數據中程序員之間的Email 通訊數據,構建一個3000 個節點左右的Email 通訊網絡,并使用鏈路預測模型對該通訊網絡進行鏈路預測。
表5 展示了多個鏈路預測模型及其對應的模型結構參數。

表5 鏈路預測模型
確定上述模型的可提取結構參數后,根據原模型的參數值,對模型參數的編碼范圍進行確定,并在參數范圍內隨機生成種群并對其進行編碼,如表6所示。

表6 鏈路預測模型參數范圍
實驗中設定遺傳算法迭代次數為30 次,種群規模為20,最小交叉概率pc1和最大交叉概率pc2分別為0.5 和0.9,最小變異概率pm1和最大變異概率pm2分別為0.1 和0.2,對種群進行迭代優化,各個模型的迭代結果如圖6 所示。

圖6 遺傳算法迭代結果
在迭代結束后,取最優參數構建的等價模型進行再訓練,直至最優狀態,最終的曲線下面積(AUC)與平均精度(AP)結果與原模型對比結果如表7 所示。從表中的結果分析可知,構建的等價模型在結構參數上雖然與原模型存在差別,但是在預測精度方面與原模型基本一致,由此證明了本文提出的等價模型構建方法的有效性。

表7 原模型與等價模型對比
在無法獲取準確神經網絡模型結構的情況下,本文充分依據原模型的輸入輸出數據與經典神經網絡模型結構,并結合遺傳算法提出了基于遺傳算法的神經網絡等價模型構建方法,實現在輸入數據相同的情況下,保持原模型的輸出數據與等價模型的輸出數據基本一致。實驗結果表明,本文提出的方法能構建出原神經網絡的等價模型,且精度具有一定的保障。然而,此構建方式在原模型預測精度不高的情況下,構建出的等價模型效果也不理想,因此今后的工作將重點放在提升構建的等價模型擬合精度方面。