趙一
(廣東海洋大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院 廣東省湛江市 524088)
因傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),如卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN) 輸入和輸出都是互相獨(dú)立的,所以需要使用特殊的方法把輸入和輸出緊密結(jié)合。而循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)是需要之前的序列信息才能夠使其任務(wù)繼續(xù)進(jìn)行下去的神經(jīng)網(wǎng)絡(luò),所有的RNN 都具有一種重復(fù)神經(jīng)網(wǎng)絡(luò)模塊的鏈?zhǔn)浇Y(jié)構(gòu)。在標(biāo)準(zhǔn)RNN 神經(jīng)網(wǎng)絡(luò)模型中,這個(gè)重復(fù)的結(jié)構(gòu)模塊以一種非常簡單的結(jié)構(gòu),即輸入層、隱藏層和輸出層。RNN 網(wǎng)絡(luò)只有一個(gè)單元,其更新過程是不停地乘以同一套權(quán)重,故而會發(fā)生梯度消失現(xiàn)象和梯度爆炸現(xiàn)象[1]。而LSTM 方法,是為了解決長期以來問題而專門設(shè)計(jì)出來的,LSTM 同樣是一種鏈?zhǔn)浇Y(jié)構(gòu),但是它不同于單一神經(jīng)網(wǎng)絡(luò)層,因?yàn)長STM 方法中重復(fù)的模塊擁有一個(gè)不同的結(jié)構(gòu),其有四個(gè)特殊的構(gòu)建組成,它們分別是單元狀態(tài)、遺忘門、輸入門、輸出門。LSTM 方法中網(wǎng)絡(luò)改進(jìn)思路是針對RNN 隱藏層單一結(jié)構(gòu)對短期輸入信息非常敏感的原因進(jìn)行了改進(jìn),LSTM 方法是在RNN 網(wǎng)絡(luò)中增加了一個(gè)元胞狀態(tài),使得經(jīng)過其的輸入信息能夠選擇性的長期保存。LSTM 方法的關(guān)鍵問題有三個(gè),即第一控制長期狀態(tài),第二控制即時(shí)狀態(tài)輸入到長期狀態(tài)中,第三控制是否把長期狀態(tài)作為當(dāng)前輸出結(jié)果。
因此,我們研究團(tuán)隊(duì)提出了一種自適應(yīng)度調(diào)節(jié)的遺傳算法優(yōu)化方法,該方法把需要傳入LSTM 模型中的全連接層數(shù)和神經(jīng)元個(gè)數(shù)作為染色體上的基因,代入到改進(jìn)的遺傳算法中進(jìn)行排序選擇,本文改進(jìn)的排序法針對傳統(tǒng)的排序法只度量各個(gè)個(gè)體之間的優(yōu)越次序,而并未度量各個(gè)個(gè)體的分散程度,通過引入BA 網(wǎng)絡(luò)的介性中心性公式對個(gè)體進(jìn)行空間映射擁擠距離算子計(jì)算,因?yàn)橹薪橹行男允且粋€(gè)結(jié)點(diǎn)擔(dān)當(dāng)任意其他兩個(gè)結(jié)點(diǎn)的最短路徑的“橋梁”,所以一個(gè)結(jié)點(diǎn)充當(dāng)“中介”的次數(shù)越多,則它的中介中心性就越大。通過該屬性,我們最終找出遺傳算法中的重要個(gè)體,算出其距離最小值和最大值,選擇時(shí)優(yōu)先選擇擁擠距離大的,從而跳出局部最優(yōu)解,得出全局最(近)優(yōu)解,從而解決了預(yù)測準(zhǔn)確率低的問題,使其準(zhǔn)確率提高到95%
自從LSTM 方法1997 年誕生以來,研究者多集中在改進(jìn)其記憶單元,最早的改進(jìn)由Gers & Schmidhuber[2]在2000年提出,其方法增加了“peephole connections”,即每個(gè)門都可以“內(nèi)視”其單元狀態(tài)。其后由Cho 等人[3]提出了一種LSTM 方法變種,即取消了輸入門,將新信息加入的多少與舊狀態(tài)保留的多少設(shè)為互補(bǔ)的兩個(gè)值(其和為1),即只有當(dāng)需要加入新信息時(shí),我們才會去遺忘;只有當(dāng)需要遺忘時(shí),我們才會加入新信息。之后比較知名的便是Yao 等人[4]在2015 年提出來Depth Gated RNN 模型,Koutnik[5]等人提出Clockwork RNN。但是Greff和Athiwaratkun[6-7]等人對上述幾種變種方法進(jìn)行了初步比較,發(fā)現(xiàn)其在相同數(shù)據(jù)集上運(yùn)行結(jié)果變化不大。
國內(nèi)研究學(xué)者也提出了類似的改進(jìn)LSTM 的方案,如文獻(xiàn)[8]的作者提出一種改進(jìn)的螢火蟲算法,引入種群多樣性特征,作者希望通過種群多樣性指數(shù)來調(diào)節(jié)模型的位置更新,并引入自適應(yīng)步長因子,改進(jìn)其迭代步長,通過文獻(xiàn)實(shí)驗(yàn),表明了改進(jìn)的螢火蟲算法具有較好的搜索性能,文章將改進(jìn)的螢火蟲算法與LSTM 結(jié)合,構(gòu)建了一種流量預(yù)測模型,利用了LSTM 對時(shí)間序列的歷史記憶性以及神經(jīng)網(wǎng)絡(luò)對復(fù)雜非線性系統(tǒng)的擬合性,學(xué)習(xí)和記憶網(wǎng)絡(luò)流量的特征,能更好的選擇LSTM 全連接層的參數(shù),所以可利用該模型針對未來時(shí)刻流量序列進(jìn)行預(yù)測。但是上述文獻(xiàn)的作者并沒有考慮螢火蟲算法的缺陷,螢火蟲算法最早由Yang[9]于2008 年提出。在算法中,螢火蟲個(gè)體通過感知自己可感知范圍內(nèi)其他螢火蟲的光亮,來確認(rèn)其他個(gè)體的存在和吸引力,從而映射到多維空間下的最優(yōu)解搜索過程。但是光信號的強(qiáng)度會伴隨傳播而衰減,則對于一個(gè)螢火蟲個(gè)體,它的光信號只能被小范圍的其他個(gè)體所感知。標(biāo)準(zhǔn)的螢火蟲算法有三個(gè)基本步驟,分別是:初始化、位置更新、亮度更新。在初始化階段,需設(shè)置各個(gè)參數(shù),為群體中選中的單個(gè)螢火蟲定好位置,并將位置向量代入目標(biāo)函數(shù),計(jì)算出螢火蟲的絕對亮度。在位置更新階段,亮度大的螢火蟲吸引亮度小的螢火蟲向自身靠近完成位置更新。位置更新完成后,所有個(gè)體抵達(dá)新的位置,將位置向量代入目標(biāo)函數(shù),實(shí)現(xiàn)亮度的更新。但是遺傳學(xué)算法會隨機(jī)設(shè)置一個(gè)最大迭代次數(shù),用來控制算法的執(zhí)行時(shí)長,正是因?yàn)榈螖?shù)的隨機(jī)性而導(dǎo)致求最優(yōu)解的不穩(wěn)定,如果最大迭代次數(shù)設(shè)置過小,則導(dǎo)致算法提前結(jié)束,得到局部最優(yōu)解;反之,如果最大迭代次數(shù)設(shè)置過大,算法收斂速度過慢。因此國外團(tuán)隊(duì)使用改進(jìn)的遺傳算法來解決非線性極值的局部最優(yōu)解問題,他們著力改進(jìn)遺傳算法中的“交叉”和“變異”步驟,使其跳出局部最優(yōu)尋找全局最優(yōu)。其中文獻(xiàn)[10]使用Gaussian 分布的來實(shí)現(xiàn)隨機(jī)變異,其后,文獻(xiàn)[11]使用Cauchy 分布的兩翼寬大特性實(shí)現(xiàn)更大范圍的變異,以便找到全局最優(yōu)解。
實(shí)驗(yàn)中我們把全連接層數(shù)設(shè)為dense,LSTM 模型三個(gè)參數(shù)設(shè)置為input, units, sequences, input 表示傳進(jìn)LSTM層的輸入,units 表示LSTM 模型中有多少個(gè)神經(jīng)元,sequences 表示判斷是否為LSTM 最后一層,如果不是最后一層,則都需要保留所有輸出以傳入下一層LSTM。在設(shè)計(jì)網(wǎng)絡(luò)時(shí),因設(shè)定的每層神經(jīng)元代表一個(gè)學(xué)習(xí)到的中間特征(即幾個(gè)權(quán)值的組合),網(wǎng)絡(luò)所有神經(jīng)元共同作用來表征輸入數(shù)據(jù)的特定屬性(如圖像分類中,表征所屬類別)。當(dāng)相對于網(wǎng)絡(luò)的復(fù)雜程度(即網(wǎng)絡(luò)的表達(dá)能力、擬合能力)而數(shù)據(jù)量過小時(shí),出現(xiàn)過擬合,顯然此時(shí)神經(jīng)元表示的特征相互之間存在許多關(guān)聯(lián)和冗余。而在LSTM 模型中引入dropout 層作用是減少中間特征的數(shù)量,從而減少冗余,即增加每層各個(gè)特征之間的正交性。在原來的NSGA(帶精英策略的非支配排序遺傳算法)中,人們采用共享函數(shù)來確保多樣性,但需要共享半徑。為了解決這個(gè)問題,我們提出了復(fù)雜網(wǎng)絡(luò)的擁擠度概念:把種群看成是一個(gè)復(fù)雜網(wǎng)絡(luò),其每個(gè)給定點(diǎn)的周圍個(gè)體密度用id 表示。它指出了在個(gè)體i 周圍包含個(gè)體i 本身但不包含其他個(gè)體的最小的長方形。中介中心性指的是一個(gè)結(jié)點(diǎn)擔(dān)任其它兩個(gè)結(jié)點(diǎn)之間最短路的橋梁的次數(shù),如果個(gè)體介性中心性越大,則該個(gè)體是一個(gè)擁擠度越大。通過介性中心性選擇優(yōu)秀個(gè)體組成新的父代,接著從第二代開始,將父代種群與子代種群結(jié)合,進(jìn)行快速非支配排序,同時(shí)對每一個(gè)非支配層中的個(gè)體進(jìn)行介性中心性計(jì)算篩選出重要的個(gè)體,選擇適合的個(gè)體組成新的父代種群。
具體模型如圖1 所示。
圖1:改進(jìn)的遺傳算法-LSTM 模型框架
在改進(jìn)NSGA-II 算法中,支配個(gè)數(shù)np,其代表在可行解空間中可以支配個(gè)體p 的所有個(gè)體的數(shù)量。首先,設(shè)初始種群規(guī)模為N,通過非支配排序的三個(gè)步驟選擇、交叉、變異得到第一代種群;第二步,將父代種群與子代種群結(jié)合,并對其快速非支配排序,同時(shí)對非支配層中的個(gè)體進(jìn)行介性中心性計(jì)算,按照重要性進(jìn)行排序,選取合適的個(gè)體組成新的父代種群。最后,通過遺傳算法的基本操作產(chǎn)生新的子代種群:依此類推,直到滿足程序結(jié)束的條件。如表1 所示。
表1:改進(jìn)NSGA-II 算法
(1)首先,初始化一個(gè)規(guī)模為N 的種群,通過遺傳算法的選擇、交叉、變異三個(gè)基本操作獲到第一代子代種群;
(2)其次,從N-1 代開始,將其父代種群與子代種群合并,進(jìn)行快速非支配排序,同時(shí)對每個(gè)非支配層中的個(gè)體進(jìn)行介性中心性計(jì)算,根據(jù)非支配關(guān)系以及個(gè)體的介性中心性選取合適的個(gè)體組成新的父代種群;
(3)最后,通過遺傳算法的基本操作產(chǎn)生新的子代種群。
支配個(gè)數(shù)np。該量是在可行解空間中可以支配個(gè)體p 的所有個(gè)體的數(shù)量。被支配個(gè)體集合SP。該量是可行解空間中所有被個(gè)體p 支配的個(gè)體組成的集合。
介性中心性指的是一個(gè)結(jié)點(diǎn)擔(dān)任其它兩個(gè)結(jié)點(diǎn)之間最短路的橋梁的次數(shù)。一個(gè)結(jié)點(diǎn)充當(dāng)“中介”的次數(shù)越高,它的中介中心度就越大。如果要考慮標(biāo)準(zhǔn)化的問題,可以用一個(gè)結(jié)點(diǎn)承擔(dān)最短路橋梁的次數(shù)除以所有的路徑數(shù)量。介性中心性算法步驟如表2 所示。
表2:介性中心性算法
首先,我們把需要優(yōu)化的參數(shù)(包括LSTM 層數(shù)和全鏈接層數(shù)及每層的神經(jīng)元個(gè)數(shù))寫到列表num 中,然后將σit(i)作為取值依據(jù),選取最短路徑條數(shù)排前5、前10、前15 和前20 的節(jié)點(diǎn)代入遺傳算法進(jìn)行染色體篩選,把需要傳入文件列表num 當(dāng)成染色體,需要優(yōu)化的參數(shù)映射為染色體上的基因。
第一步:算遺忘信息,稱為遺忘門。計(jì)算公式如下:
第二步:決定單元狀態(tài)中存儲的信息,it表示要留下的信息, 表示遺忘權(quán)重。
利用遺忘門和輸入門,可以計(jì)算出新的單元狀態(tài),計(jì)算公式如下:
最后輸出經(jīng)過ReLU 激活,計(jì)算公式如下:
LSTM 與RNN 不同,在于狀態(tài)通過累加的方式計(jì)算:
在這一章中,我們進(jìn)行了一系列的實(shí)驗(yàn)對比來評估所提出的方法性能。所有實(shí)驗(yàn)都是用Python 來實(shí)現(xiàn)的,所用電腦的CPU是 2.6GHz Intel(R) Core(TM) i7 CPU 和 16GB 內(nèi)存。
實(shí)驗(yàn)訓(xùn)練集和測試集,我們選用mnist 手寫數(shù)據(jù)集,該數(shù)據(jù)集包含了0-9 的手寫數(shù)字。實(shí)驗(yàn)首先創(chuàng)建deep_learning.py 文件,其中包含LSTM 層函數(shù)create_lstm(inputs, units,sequences)和創(chuàng)建全鏈接層create_dense(input, units)。由于傳統(tǒng)的遺傳算法,染色體上的基因取值范圍是相同的,但在LSTM 網(wǎng)絡(luò)中,由于基因的長度不一,所以在實(shí)驗(yàn)中,我們把每條染色體設(shè)置為相同的長度。具體解決辦法:1.將每條染色體設(shè)置為相同的長度(本題來說,因?yàn)長STM 層與全連接層層數(shù)最多三層,加上最前面兩個(gè)表示層數(shù)的基因,故每條染色體上有3+3+2=8 個(gè)基因),達(dá)不到長度要求的后面補(bǔ)零;2.先設(shè)置前面兩個(gè)基因,令其范圍分別在一到三之間,然后根據(jù)這兩個(gè)基因確定后面關(guān)于每層神經(jīng)元個(gè)數(shù)的基因;3.對于交叉函數(shù)的修改,首先確定取出的兩條染色體(設(shè)為a 染色體和b 染色體)上需要交換的位置,然后遍歷兩條染色體在這些位置的基因,如果任一染色體上,此位置上的基因?yàn)?,則取消此位置的交換。ReLU 函數(shù),該函數(shù)的表達(dá)式:
經(jīng)過實(shí)驗(yàn)表明,ReLU 函數(shù)對于隨機(jī)梯度下降的收斂有加速作用。其最大的優(yōu)勢求導(dǎo)簡單,相對于sigmoid 和tanh的運(yùn)算量,ReLU 函數(shù)可認(rèn)為幾乎不存在計(jì)算量,因此對神經(jīng)網(wǎng)絡(luò)的訓(xùn)練有很好的加速作用。一般經(jīng)驗(yàn)是決定dropout之前,需要先判斷是否模型過擬合即dropout=0。欠擬合:嘗試調(diào)整模型的結(jié)構(gòu),暫時(shí)忽略下面步驟。dropout 設(shè)置成0.4-0.6 之間,再次訓(xùn)練得到模型的一些指標(biāo)。如果過擬合明顯好轉(zhuǎn),但指標(biāo)也下降明顯,可以嘗試減少dropout(0.2)如果過擬合還是嚴(yán)重,增加dropout(0.2)重復(fù)上面的步驟多次,就可以找到理想的dropout 值了。在優(yōu)化神經(jīng)網(wǎng)絡(luò)上,用常規(guī)的遺傳算法不易實(shí)現(xiàn)原因如下:傳統(tǒng)的遺傳算法中每條染色體的長度相同,但是優(yōu)化LSTM 網(wǎng)絡(luò)時(shí)染色體的長度會因?yàn)閷訑?shù)的不同而不同,比如:a 染色體有一層LSTM層和一層全連接層,則這個(gè)染色體上共有6 個(gè)基因(兩個(gè)代表層數(shù),兩個(gè)代表神經(jīng)元個(gè)數(shù))b 染色體有二層LSTM 層和二層全連接層,則這個(gè)染色體上共有6 個(gè)基因(兩個(gè)代表層數(shù),四個(gè)代表每層的神經(jīng)元個(gè)數(shù))。
采用兩個(gè)指標(biāo):準(zhǔn)確率,適應(yīng)度來評估手寫體預(yù)測的質(zhì)量。
Precision 和fitness 被定義為:
其中 TP 是正類(true positives)的數(shù)量,i.e.,即同一領(lǐng)域中的任意兩個(gè)服務(wù)是否被正確地分配給同一個(gè)類簇;FP是負(fù)類(false positives)的數(shù)量, i.e., 分配給同一個(gè)類簇的任何兩個(gè)服務(wù)實(shí)際上屬于不同的領(lǐng)域;FN 是正類判定為負(fù)類(false negatives)的數(shù)量, i.e., 同一領(lǐng)域中的任何兩個(gè)服務(wù)都分配給不同的類簇。
圖3:不同子代下兩種方法的適應(yīng)度
為了滿足適應(yīng)度取值非負(fù)的要求,則采用下面方法將目標(biāo)函數(shù)f(x)轉(zhuǎn)換為個(gè)體適應(yīng)度函數(shù)fitness(x),fitness 被定義為:
Cmax是一個(gè)適當(dāng)?shù)南鄬Ρ容^大的值,預(yù)先指定一個(gè)較大的數(shù)(進(jìn)化到當(dāng)前為止的最大目標(biāo)函數(shù))。注意,Precision和fitness 是正度量,也就是說,較高的值表示更好的服務(wù)聚類結(jié)果;而較低的熵值則表示更好的服務(wù)聚類結(jié)果。
在這一章節(jié)中,我們的實(shí)驗(yàn)報(bào)告給出兩組評估結(jié)果:
(1)種群的代數(shù)對改進(jìn)遺傳算法LSTM 模型適應(yīng)度的影響;
(2)四種服務(wù)聚類方法的比較。
4.3.1 fitness 值的影響
在我們提出的方法中,適應(yīng)度越大說明。R 值會影響訓(xùn)練主題模型的質(zhì)量,進(jìn)而影響服務(wù)聚類的性能。為了評估每一代對適應(yīng)度的影響,我們基于不同個(gè)體子代值對mnist 數(shù)據(jù)集進(jìn)行識別,評比在不同子代對數(shù)據(jù)集識別的結(jié)果優(yōu)劣,從1 到12 不同子代中選取最優(yōu)的fitness。
圖 2-3 給出了不同子代下的手寫體識別的準(zhǔn)確率??梢钥闯觯疚母倪M(jìn)遺傳算法結(jié)合LSTM 模型基于在第五代個(gè)體與第9 代個(gè)體上其適應(yīng)度較強(qiáng),優(yōu)于一般遺傳算法LSTM模型約13%;其在第四代個(gè)體和第9 代個(gè)體上其對手寫數(shù)字識別與預(yù)測較為準(zhǔn)確,其準(zhǔn)確率優(yōu)于一般遺傳算法LSTM模型12%。TABLE 3. 四種方法的評估結(jié)果。
圖2:不同子代下兩種方法的準(zhǔn)確率
結(jié)果表明,我們在下面的實(shí)驗(yàn)中應(yīng)該選用6 代和7 代來進(jìn)行模型訓(xùn)練是可以得到較好的手寫體識別效果。
實(shí)驗(yàn)數(shù)據(jù)表明,本文改進(jìn)遺傳算法結(jié)合LSTM 模型基于在第五代個(gè)體與第9 代個(gè)體上其適應(yīng)度較強(qiáng),優(yōu)于一般遺傳算法LSTM 模型約13%;其在第四代個(gè)體和第9 代個(gè)體上其對手寫數(shù)字識別與預(yù)測較為準(zhǔn)確,其準(zhǔn)確率優(yōu)于一般遺傳算法LSTM 模型12%。TABLE 3. 四種方法的評估結(jié)果。