徐 哲,雷振宇,王子謙,孟祥蓮,周 瑜,高尚策
(1.常州工學院計算機信息工程學院,江蘇常州 213032;2.富山大學工學部,日本富山 930-8555)
隨著科技的發(fā)展,工程問題變得越來越復雜。由于這些復雜非線性問題都定義在高維度空間,傳統(tǒng)的方法不能有效地解決這些問題。一些學者則利用人工神經(jīng)網(wǎng)絡(luò)模擬生物神經(jīng)網(wǎng)絡(luò)的信息處理機制去解決這些復雜問題。人工神經(jīng)網(wǎng)絡(luò)對非線性問題有很好的擬合效果,已經(jīng)成功用于圖像識別、語言識別、文本分類等問題。為了解決更復雜的問題,許多學者也提出了許多不同的神經(jīng)網(wǎng)絡(luò),如循環(huán)神經(jīng)網(wǎng)絡(luò)[1]、卷積神經(jīng)網(wǎng)絡(luò)[2]、前饋神經(jīng)網(wǎng)絡(luò)[3]、樹突狀神經(jīng)元模型。其中,樹突狀神經(jīng)元模型模擬了一個神經(jīng)元信息傳遞的過程。由于其易于解釋、實現(xiàn)簡單等特點已經(jīng)被許多學者用來解決各種復雜問題,如預測問題[4]、分類問題[5]等。一些學者則利用非BP 學習方法來訓練網(wǎng)絡(luò)模型[6]。
進化計算是受自然啟發(fā)的啟發(fā)式算法,其模擬自然界中生物的生活模式去求解問題,例如粒子群算法(Particle Swarm Optimization,PSO)是模仿自然界中鳥群、魚群的集體行為,通過不斷地對精英個體和自身經(jīng)驗的學習去探索問題解[7]。重力搜索算法(Gravitational Search Algorithm,GSA)是模擬牛頓的萬有引力定律,每個個體擁有質(zhì)量并且通過個體間的相互作用去探索整個搜索空間[8]。差分進化(Differential Evolution,DE)是通過一系列的變異、雜交、選擇等操作,尋找更優(yōu)解[9]。進化計算已經(jīng)應用于很多工程問題,如模式識別[10]、控制工程[11]、土木工程[12]等。文中利用進化計算的算法訓練容易理解的樹突狀神經(jīng)元模型。
突觸層是一個神經(jīng)元連接到另一個神經(jīng)元或者細胞體的相互接觸的結(jié)構(gòu)。神經(jīng)元通過突觸將信號傳遞給下個神經(jīng)元或者細胞體,這時神經(jīng)元或者細胞體則由于不同的阽危呈現(xiàn)抑制狀態(tài)或者激活狀態(tài)。將這些不同的突觸組合成突觸層來接收外界的信號,第i個突觸連接到第j個突觸層被定義為式(1):
其中,Yij是第i個突觸在第j個突觸層上的輸出,k是一個正常數(shù),xi是第i個突觸上的輸入,wij和θij分別是學習的權(quán)重和閾值。
根據(jù)不同的權(quán)重和閾值,神經(jīng)元與神經(jīng)元或細胞體之間有4 種不同的連接狀態(tài):常0 狀態(tài),與輸入無關(guān);常1 狀態(tài),此時輸出為恒定值1,與輸入無關(guān);抑制連接,此時輸入與輸出成反比;興奮連接,此時輸入與輸出成正比。
樹突層接收突觸層的各個突觸傳入的信號,由于突觸的非線性,樹突層采用乘法操作來處理非線性信號。這種乘法操作即為邏輯AND 操作,定義為式(2):
其中,N是突觸層數(shù)量,Yij是突觸層輸入。
膜層接收每一個樹突傳來的信號,通過求和操作處理后傳遞給胞體層。這種求和操作即為邏輯OR 操作,定義為式(3):
其中,M是樹突層數(shù)量,Zj是樹突層輸入。
信號通過層層處理,胞體層接收膜層的信號,利用sigmoid 函數(shù)給出最終的結(jié)果,胞體層定義為式(4):
其中,k是一個常數(shù),V是膜層處理的輸入信號,θs閾值由0 變到1。
針對高維度、非線性、不可微的復雜問題,許多學者受自然啟發(fā)提出了許多啟發(fā)式算法,如差分進化(DE)[13]、重力搜索算法(GSA)[14]、粒子群算法(PSO)[15]等。許多學者也已經(jīng)證明了啟發(fā)式算法能夠解決高維度、非線性的問題。
進化計算與傳統(tǒng)BP 訓練神經(jīng)網(wǎng)絡(luò)[16]的目的都是通過調(diào)整權(quán)重和閾值減小模型誤差。進化計算按照網(wǎng)絡(luò)模型的結(jié)構(gòu)隨機初始化一個種群,這個隨機種群包含了模型的權(quán)重和閾值。這些權(quán)重和閾值決定模型層之間信息的傳遞,決定最終的輸出。種群被隨機初始化,其中個體代表一組網(wǎng)絡(luò)的權(quán)重和閾值,定義為式(5):
進化計算優(yōu)化的目標函數(shù)則是模型輸出結(jié)構(gòu)目標結(jié)果的誤差。其目標函數(shù)定義為:
其中,P是訓練樣本的個數(shù),Tp是第p個樣本的目標,Op是第p個樣本真實的網(wǎng)絡(luò)輸出。
粒子群算法是受魚群、鳥群啟發(fā),模擬自然界的群體行為,每個個體有他們自己的速度和位置,粒子的位置也代表了潛在的解。每個種群中有當前全局最優(yōu)解和每個個體的最優(yōu)解。利用全局最優(yōu)和個體最優(yōu)來更新粒子的速度和位置去探索,如式(7)和式(8)所示。
其中,c1和c2是兩個正常數(shù),vi是區(qū)間(0,1)內(nèi)的隨機數(shù),是粒子在時刻t時的歷史最優(yōu)位置,粒子通過向自己最優(yōu)和全局最優(yōu)學習來更新自己的位置。通過式(6)作為優(yōu)化目標不斷地更新粒子的位置,直到達到終止條件。粒子群算法的易于實現(xiàn)、穩(wěn)定等特點已經(jīng)用來解決許多非線性問題。
差分進化是一個簡單有效的進化算法,進化計算類似于一般的進化算法通過編譯、交叉和選擇來搜索解。進化計算的基本流程為按照式(5)隨機初始化種群,基于當前種群通過差分策略生成變異向量,進行雜交操作形成子代種群,選擇子代中優(yōu)于父代的個體留在新的種群中。
變異操作是基于當前種群利用不同差分策略產(chǎn)生變異個體的,例如:
其中,下標r0、r1 和r2 是在集合{1,2,3,…,NP}中選取的隨機數(shù);xbest是當前種群中最好的個體;Fi是常數(shù),用來控制差分幅度。
交叉操作在變異操作后定義為式(12):
其中,CRi是交叉概率,rand(a,b)是在區(qū)間(a,b)上隨機取一個整數(shù);jrand是隨機在(0,1)上隨機選一個整數(shù)。
選擇操作根據(jù)目標函數(shù)的適應度在父代和子代選擇更好的個體構(gòu)成新的父代,定義為式(12):
其中,f()?是目標函數(shù)的適應度即式(6)。
重力搜索算法可以看作基于種群的啟發(fā)算法,重力搜索算法是基于萬有引力定律啟發(fā),利用萬有引力定律和牛頓第二定律,計算粒子的加速度去更新粒子的速度、位置。
重力搜索算法利用式(5)隨機初始化種群,將神經(jīng)網(wǎng)絡(luò)中的權(quán)重和閾值作為有質(zhì)量的粒子并通過萬有引力更新它們的位置。粒子xi和粒子xj之間的萬有引力被定義為式(13):
其中,G(t)是萬有引力常量,Rij是粒子xi和粒子xj之間的歐氏距離,Mi(t)和Mj(t)分別是粒子xi和粒子xj在t時刻的重量。GSA 通過重力不斷更新粒子位置,搜尋最優(yōu)個體。GSA 流程圖如圖1 所示。
圖1 GSA流程圖
重力搜索算法將權(quán)重和閾值作為空間中有質(zhì)量的個體,不斷地更新個體的位置,直到達到終止條件。
文中將神經(jīng)網(wǎng)絡(luò)與進化計算進行了結(jié)合,提出了進化神經(jīng)網(wǎng)絡(luò)。在進化神經(jīng)網(wǎng)絡(luò)中,神經(jīng)網(wǎng)絡(luò)使用進化算法訓練。神經(jīng)元之間的權(quán)重和閾值被隨機初始化,然后通過進化算法進行優(yōu)化,減小網(wǎng)絡(luò)的誤差。
為了驗證進化計算在神經(jīng)網(wǎng)絡(luò)訓練上的有效性,PSO、GSA、DE 用來訓練神經(jīng)網(wǎng)絡(luò),在不同的分類數(shù)據(jù)集XOR、Balloon、Iris 和Heart 中驗證進化計算在神經(jīng)網(wǎng)絡(luò)訓練中的魯棒性。表1 描述了詳細信息。
表1 數(shù)據(jù)集詳述
針對不同的數(shù)據(jù)集,樹突狀神經(jīng)元模型的參數(shù)包括樹突層數(shù)量M、閾值θ和k。不同的參數(shù),模型的泛化能力不同。通過正交實驗法,確定了網(wǎng)絡(luò)模型的參數(shù),確保更優(yōu)地解決擬合問題,其參數(shù)設(shè)置如表2 所示。
表2 神經(jīng)網(wǎng)絡(luò)模型參數(shù)設(shè)置
進化計算代替?zhèn)鹘y(tǒng)的BP 學習去訓練神經(jīng)網(wǎng)絡(luò)的權(quán)重和閾值,文中用DE、GSA、PSO 訓練樹突狀神經(jīng)元模型。表3 記錄了DE、GSA 和PSO 與傳統(tǒng)BP 的實驗結(jié)果,包括30 次實驗的均值、標準差和p值。
通過表3 可以發(fā)現(xiàn),進化計算在所有的數(shù)據(jù)集上都優(yōu)于傳統(tǒng)BP 學習,擁有更小的誤差。此外,Heart 數(shù)據(jù)集上的收斂圖為圖2。由于進化算法和傳統(tǒng)BP 的迭代次數(shù)不同,給出了進化計算的收斂因子圖,方便觀察。通過收斂圖可以發(fā)現(xiàn),進化計算收斂速度明顯優(yōu)于傳統(tǒng)BP。不同的進化算法也存在差異,因此,選擇合適的進化計算算法也是十分重要的。
表3 進化計算與傳統(tǒng)BP的實驗結(jié)果
圖2 Heart數(shù)據(jù)集的收斂圖
箱線圖能夠更直觀地展現(xiàn)算法的穩(wěn)定性和收斂效果。通過圖3 可以觀察到進化計算能夠搜索到更優(yōu)解,并且有較強的穩(wěn)定性。
圖3 Heart數(shù)據(jù)集的箱線圖
實驗表明,進化計算能夠代替?zhèn)鹘y(tǒng)的BP學習訓練神經(jīng)網(wǎng)絡(luò),并且進化計算能夠取得更優(yōu)的結(jié)果[17-19]。
此外,樹突狀神經(jīng)元模型,由于神經(jīng)元之間的連接有4 種不同的狀態(tài),因此可以根據(jù)連接狀態(tài)進行裁剪并用邏輯電路實現(xiàn)。GSA 訓練的Heart 數(shù)據(jù)集的最終網(wǎng)絡(luò)模型利用邏輯電路呈現(xiàn),如圖4 所示。
圖4 裁剪后的神經(jīng)網(wǎng)絡(luò)的邏輯電路圖
通過圖4 可以發(fā)現(xiàn),樹突狀神經(jīng)元很容易利用邏輯電路實現(xiàn),而且通過裁剪大幅度優(yōu)化了網(wǎng)絡(luò)的復雜度,更加容易理解。同時可以發(fā)現(xiàn)GSA 訓練的神經(jīng)網(wǎng)絡(luò)模型減少了樹突層的個數(shù),由原始的七層減少到了兩層。
文中用進化計算算法訓練樹突狀神經(jīng)元模型,并在不同的數(shù)據(jù)集上進行測試。結(jié)果表明進化計算比傳統(tǒng)的訓練方法更有效。在未來工作中,仍能改進計算算法,進一步提高訓練精度。