周夢, 呂志剛, 邸若海, 李葉
(西安工業(yè)大學(xué)電子信息工程學(xué)院, 西安 710021)
BP(back propagation)神經(jīng)網(wǎng)絡(luò)技術(shù)作為現(xiàn)代人工智能領(lǐng)域的一個重要組成部分,具有非線性映射能力強和并行信息處理能力強的特點[1],在實際中得到了廣泛的應(yīng)用,主要用來實現(xiàn)模式識別、數(shù)據(jù)分類、函數(shù)擬合等功能。Gallant等[2]經(jīng)過研究表明若要使得網(wǎng)絡(luò)輸出結(jié)果與實際值無限接近,則需使用于訓(xùn)練的樣本量無限大。但在實際生產(chǎn)中,采集到大量可以用于神經(jīng)網(wǎng)絡(luò)建模的數(shù)據(jù)十分困難,數(shù)據(jù)量較少時所建模型精度往往不符合要求,甚至?xí)霈F(xiàn)與實際結(jié)果相反的情況。
小樣本BP神經(jīng)網(wǎng)絡(luò)建模問題引發(fā)了中外學(xué)者的廣泛關(guān)注。針對小樣本問題,Joerding 等[3]提出將專家知識融入建模過程中,使得小樣本條件下神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)果達到與大量樣本訓(xùn)練相似的效果,但該方法僅適用于模型輸入輸出均為一維的情況。宗宸生等[4]通過將改進粒子群算法與BP神經(jīng)網(wǎng)絡(luò)相結(jié)合解決了小樣本條件下糧食產(chǎn)量預(yù)測問題,但該方法僅對初始權(quán)值與閾值進行優(yōu)化,并未從根本上解決小樣本預(yù)測問題。王宏剛等[5]提出分別采用Bootstrap法和核密度拉丁超立方采樣法擴充訓(xùn)練樣本,利用擴充后的樣本訓(xùn)練BP神經(jīng)網(wǎng)絡(luò),在保障小樣本自身規(guī)律的情況下,解決了小樣本數(shù)據(jù)BP神經(jīng)網(wǎng)絡(luò)建模問題,并驗證了Bootstrap方法具有更高的適用性,但該方法無法適用于大規(guī)模的實際系統(tǒng)中。趙文清等[6]通過設(shè)計殘差BP神經(jīng)網(wǎng)絡(luò),以一個殘差BP神經(jīng)網(wǎng)絡(luò)作為一個模塊,通過將多個模塊進行堆疊提高小樣本BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練精度,但該方法設(shè)計過程過于復(fù)雜。
目前解決小樣本條件下BP神經(jīng)網(wǎng)絡(luò)建模問題的方法主要分為兩種,一種是擴充數(shù)據(jù)的方法,獲得與小樣本數(shù)據(jù)相同分布規(guī)律的擴充數(shù)據(jù),利用擴充后的數(shù)據(jù)進行建模,但當(dāng)所獲取的擴充數(shù)據(jù)不準(zhǔn)確時,網(wǎng)絡(luò)訓(xùn)練結(jié)果同樣不準(zhǔn)確;另一種是將專家知識與神經(jīng)網(wǎng)絡(luò)相結(jié)合的方法,但目前已有的方法對不同類型的專家知識的融合沒有統(tǒng)一的框架,且預(yù)測精度不高。增廣拉格朗日乘子法為不同類型的約束條件提供了統(tǒng)一的框架,因此現(xiàn)通過增廣拉格朗日乘子法將專家知識融入神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程中,提高小樣本條件下BP神經(jīng)網(wǎng)絡(luò)預(yù)測精度。同時,通過遺傳算法獲取最優(yōu)的初始權(quán)值與閾值。
BP神經(jīng)網(wǎng)絡(luò)是一種多層前饋神經(jīng)網(wǎng)絡(luò),采用梯度下降法進行反向傳播[7],是目前應(yīng)用最廣的神經(jīng)網(wǎng)絡(luò)。如圖1所示為BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。
圖1 BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Structure of BP neural network
根據(jù)實際應(yīng)用,確定好BP神經(jīng)網(wǎng)絡(luò)各層神經(jīng)元數(shù)目及所需使用的激活函數(shù)后,就可以開始進行訓(xùn)練。BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程如下。
神經(jīng)網(wǎng)絡(luò)的輸入向量為
X=(x1,x2,…,xi,…,xn)T
(1)
隱含層各神經(jīng)元輸入為
nj=ω1jx1+ω2jx2+…+ωnjxn
(2)
隱含層各神經(jīng)元輸出為
Hj=f(nj-aj)
(3)
隱含層輸出向量為
H=(H1,H2,…,Hj,…,Hl)T
(4)
輸出層各神經(jīng)元輸入為
lk=ω1kH1+ω2kH2+…+ωlkHl
(5)
輸出層各神經(jīng)元輸出為
ok=g(lk-bk)
(6)
式中:wj為隱含層權(quán)值;wk為輸出層權(quán)值;f(·)為sigmoid函數(shù);g(·)為Purelin函數(shù);aj為隱含層閾值;bk為隱含層閾值。
懲罰函數(shù)法的作用是將約束優(yōu)化問題轉(zhuǎn)變?yōu)闉闊o約束優(yōu)化問題[8]。懲罰函數(shù)法的主要任務(wù)是確定懲罰項及初始罰因子。根據(jù)懲罰項設(shè)計的形式不同,懲罰函數(shù)法分為靜態(tài)懲罰函數(shù)[9],動態(tài)懲罰函數(shù)[10]和自適應(yīng)懲罰函數(shù)[11]。其中自適應(yīng)懲罰函數(shù)法的懲罰因子可以根據(jù)優(yōu)化過程不斷調(diào)整,并且自適應(yīng)懲罰函數(shù)法可以根據(jù)優(yōu)化過程中反饋信息及時對懲罰函數(shù)進行調(diào)節(jié),與其他幾種懲罰函數(shù)相比,具有一定的優(yōu)勢。假設(shè)有約束問題minf(x),需滿足限制ci(x)≤0,懲罰函數(shù)法的一般形式φ(x)為
(7)
(8)
式中:ci(x)為不同類型的約束條件;I為約束條件個數(shù);f(x)為目標(biāo)函數(shù);懲罰函數(shù)φ(x)第二項為懲罰項;σ為懲罰因子。
專家知識指的是領(lǐng)域?qū)<以趯ρ芯繂栴}的機理有一定的了解。專家知識又被稱為先驗知識、機理信息、領(lǐng)域知識等。胡包鋼等[12]將先驗信息定義如下:先驗信息(prior information)是指在建模前就通過已有經(jīng)驗得知的輸入與輸出間的關(guān)系。本文中主要研究單調(diào)性專家知識,其數(shù)學(xué)定義如下。
如果對于函數(shù)f(x)在定義域內(nèi)任意兩點x1、x2都存在
(9)
則稱函數(shù)f(x)在此區(qū)間是單調(diào)遞增的。
如果對于函數(shù)f(x)在定義域內(nèi)任意兩點x1、x2都存在
(10)
則稱函數(shù)f(x)在此區(qū)間是單調(diào)遞減的。
(11)
將單調(diào)性作為專家知識。對于具有單調(diào)關(guān)系的問題,可以對通過神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練產(chǎn)生的輸出數(shù)據(jù)進行單調(diào)性判斷。如果實際數(shù)學(xué)關(guān)系是單調(diào)遞增(遞減)的,神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)果也是單調(diào)遞增(遞減)的,那么說明符合這次訓(xùn)練過程專家知識,不加懲罰,如果判斷后結(jié)果與實際值相反,則給予懲罰處理。
罰函數(shù)的收斂速度較慢,且當(dāng)懲罰因子過大時,容易引起轉(zhuǎn)化后的無約束問題的過擬合,當(dāng)懲罰因子過小時,起不到懲罰作用。拉格朗日乘子法中只有當(dāng)約束優(yōu)化目標(biāo)具有局部凸結(jié)構(gòu)時,乘子λ的更新才是有意義的,并且拉格朗日函數(shù)的收斂比較費時。增廣拉格朗日乘子法可以有效克服兩者存在的缺點。
一般BP神經(jīng)網(wǎng)絡(luò)通過輸出值與真實值之間的均方誤差判斷其是否滿足給定精度,來判斷是否停止訓(xùn)練。若不滿足精度,則遵循梯度下降法反向更新BP神經(jīng)網(wǎng)絡(luò)的權(quán)值與閾值,最終使得均方誤差最小。本文中以專家知識作為約束條件,通過將增廣拉格朗日函數(shù)作為BP神經(jīng)網(wǎng)絡(luò)目標(biāo)函數(shù),使得BP神經(jīng)網(wǎng)絡(luò)輸出結(jié)果既滿足均方誤差,又滿足專家知識。設(shè)單調(diào)性專家知識為輸入S與輸出G為單調(diào)遞增關(guān)系,以此作為約束條件,增廣拉格朗日乘子法對約束優(yōu)化問題的一般處理方法為
(12)
式(12)中:P為輸入樣本的個數(shù);X為BP神經(jīng)網(wǎng)絡(luò)輸入;Y為BP神經(jīng)網(wǎng)絡(luò)輸出;e為BP神經(jīng)網(wǎng)絡(luò)輸出值與實際值間的誤差。
引入輔助變量z,將不等式約束優(yōu)化問題替換為等式約束優(yōu)化問題,即
(13)
根據(jù)以上約束優(yōu)化問題,構(gòu)建增廣拉格朗日函數(shù)為
(14)
式(14)中:λ為乘子;μ為懲罰因子。
通過求ψ關(guān)于z的一階導(dǎo)數(shù),消除所引入的輔助變量z,即
(15)
(16)
由此可將增廣拉格朗日乘子法后半部分表達出來使
(17)
設(shè)a=μg(x)-λ,當(dāng)a>0時,有
(18)
當(dāng)a<0時,有
(19)
綜上得
(20)
通過判斷a的正負(fù)判斷BP神經(jīng)網(wǎng)絡(luò)是否滿足約束。a>0時,BP神經(jīng)網(wǎng)絡(luò)輸出值滿足約束。反之,不滿足約束。將增廣拉格朗日函數(shù)作為BP神經(jīng)網(wǎng)絡(luò)目標(biāo)函數(shù),按照梯度下降法反向傳播對其權(quán)值閾值進行更新,其更新過程如下。
(1)當(dāng)a>0時,BP神經(jīng)網(wǎng)絡(luò)輸出滿足專家知識,BP神經(jīng)網(wǎng)絡(luò)的目標(biāo)函數(shù)為
(21)
當(dāng)BP神經(jīng)網(wǎng)絡(luò)輸出不滿足收斂條件時,其逆向傳播權(quán)值閾值更新公式為
(22)
(23)
(24)
(25)
(2)當(dāng)a≤0時,BP神經(jīng)網(wǎng)絡(luò)輸出不滿足專家知識,BP神經(jīng)網(wǎng)絡(luò)的目標(biāo)函數(shù)為
(26)
當(dāng)BP神經(jīng)網(wǎng)絡(luò)輸出不滿足收斂條件時,其逆向傳播權(quán)值和閾值更新公式為
(27)
(28)
a(1-Hi)Hiwk(wjxi-2Hiwjxi+1)
(29)
a(1-Hi)Hiwk(1-2Hi)wj
(30)
遺傳算法(genetic algorithm,GA)是優(yōu)化方法中的一種,在搜索空間中尋找最優(yōu)的種群[13]。通過遺傳算法防止BP神經(jīng)網(wǎng)絡(luò)需隨機產(chǎn)生初始權(quán)值閾值的情況發(fā)生,可以有效避免因隨機產(chǎn)生的初始值導(dǎo)致BP神經(jīng)網(wǎng)絡(luò)陷入局部極小。如下所示為用遺傳算法的具體實施步驟。
(1)數(shù)據(jù)歸一化。實際應(yīng)用中所獲取的數(shù)據(jù)往往較大,且存在不同輸入數(shù)據(jù)之間量綱不一致的情況。為了防止因輸入數(shù)據(jù)導(dǎo)致預(yù)測結(jié)果不正確的情況,第一步要對輸入數(shù)據(jù)進行歸一化處理,其公式為
(31)
式(31)中:xmax、xmin分別為輸入數(shù)據(jù)的最大、最小值。
(2)染色體編碼。染色體編碼是指將輸入數(shù)據(jù)寫為二進制形式,以便后續(xù)遺傳、變異、交叉等操作。
(3)種群初始化。對輸入數(shù)據(jù)進行二進制編碼后,隨機產(chǎn)生一組數(shù)據(jù),一組數(shù)據(jù)是一個單獨的個體,這些個體形成了一個群體。
(4)適應(yīng)度函數(shù)的評價。個體遺傳的復(fù)雜程度通過適應(yīng)度函數(shù)所求的值來確定。設(shè)一個適應(yīng)度值為F,則其適應(yīng)度函數(shù)公式為
(32)
式(32)中:k為有關(guān)系數(shù)。
(5)進行遺傳操作。對基因進行選擇、交叉和變異操作。遺傳選擇是對個體適應(yīng)度而言的,文中采用輪盤賭法對個體進行選擇。經(jīng)過這一階段的遺傳操作之后,個體會進行各種遺傳交叉和遺傳變異。
(6)判斷是否滿足終止條件,如果滿足,則輸出結(jié)果,否則回到步驟(3)重新進行操作,直到符合條件。
融合專家知識的GA-BP神經(jīng)網(wǎng)絡(luò)算法流程如圖2所示。
圖2 算法流程圖Fig.2 Algorithm flow chart
本文中采用實際中的結(jié)晶動力學(xué)問題驗證融合專家知識的BP神經(jīng)網(wǎng)絡(luò)建模方法,即
(33)
(2)設(shè)置BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練集及測試集樣本個數(shù),并確定各層激活函數(shù)。
(3)根據(jù)2.3節(jié)利用遺傳算法優(yōu)化初始權(quán)值閾值。
(4)設(shè)置增廣拉格朗日乘子法的初始乘子及罰因子。乘子初始值c=0.1。
(5)根據(jù)式(1)~式(6)訓(xùn)練神經(jīng)網(wǎng)絡(luò)。
(6)根據(jù)式(21)~式(30)判斷神經(jīng)網(wǎng)絡(luò)是否滿足專家知識,設(shè)置目標(biāo)函數(shù)
(7)判斷目標(biāo)函數(shù)是否滿足目標(biāo)誤差,如果滿足停止迭代,如果不滿足,更新權(quán)值閾值,回到第四步。
根據(jù)上述算法流程,首先通過遺傳算法為BP神經(jīng)網(wǎng)絡(luò)獲取最優(yōu)的初始權(quán)值閾值,如圖3所示為經(jīng)過遺傳算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)(GA-BP)訓(xùn)練結(jié)果。
從圖3可以看出遺傳算法對BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)果有一定的改進。
圖3 BP與GA-BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)果對比Fig.3 Comparison of BP and GA-BP neural network training results
其次通過分析結(jié)晶動力學(xué)模型公式,獲取專家知識。由上述模型分析可得,本文中所采用的模型3個輸入變量與輸出G均存在單調(diào)性關(guān)系。因此共有3條專家知識。根據(jù)式(11)對比加入1條專家知識與3條專家知識的GA-BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練結(jié)果,如圖4所示。
由圖4可以直觀地看出融合3條專家知識的GA-BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)果最好,有效解決了小樣本條件下BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練精度不高的問題。
圖4 融合專家知識的GA-BP神經(jīng)網(wǎng)絡(luò)Fig.4 GA-BP neural network integrating expert knowledge
選用均方誤差(mean squares error,MSE)作為評價指標(biāo),以直觀地看出本文所提出的建模方法的有效性,均方誤差計算公式為
(34)
如表1所示為不同模型預(yù)測結(jié)果的均方誤差,其中GA-BP-1是指融合1條專家知識,GA-BP-3是指融合3條專家知識。
表1 不同模型預(yù)測結(jié)果均方誤差Table 1 Mean square error of prediction results of different models
通過對比不同模型的均方誤差可知,融合專家知識的GA-BP神經(jīng)網(wǎng)絡(luò)均方誤差最小,因此本文算法可以提高小樣本條件下BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練精度。
交叉驗證(cross validation,CV)用來在離線過程中評估模型的泛化能力。用于本文算法驗證的結(jié)晶動力學(xué)模型數(shù)據(jù)共有100條,將這100組數(shù)據(jù)等分為5份進行五重交叉驗證,分別定義為Y1、Y2、 Y3、Y4和Y5,采用這5個數(shù)據(jù)集輪流作為訓(xùn)練集來訓(xùn)練不同的模型,這5個數(shù)據(jù)集輪流交替作為訓(xùn)練集和驗證集。這個交叉驗證過程總共需要執(zhí)行5次,那么 5個數(shù)據(jù)集中的每一個數(shù)據(jù)集都會保證做一次訓(xùn)練集。最后,通過比較MSE對其進行評估,其結(jié)果如圖5所示。
圖5 五重交叉驗證Fig.5 Five-fold cross-validation
如表2為五重交叉驗證傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)果與融合專家知識的BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)果的平均誤差。
表2 五重交叉驗證平均誤差Table 2 Average error of five-fold cross-validation
由表2及圖5可知,針對不同的訓(xùn)練集樣本,對比其加約束與不加約束的BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)果,根據(jù)其平均誤差,可以得知本文所提的融合專家知識的BP神經(jīng)網(wǎng)絡(luò)建模方法,在小樣本建模問題解決方面,具有較強的泛化能力。
通過融合專家知識解決小樣本條件下BP神經(jīng)網(wǎng)絡(luò)建模問題,首先通過遺傳算法防止BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練陷入局部最優(yōu),其次通過增廣拉格朗日乘子法將專家知識融入BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中。首先通過對比融合1條專家知識的神經(jīng)網(wǎng)絡(luò)與融合三條專家知識的神經(jīng)網(wǎng)絡(luò),仿真結(jié)果表明,3條專家知識訓(xùn)練結(jié)果較優(yōu);其次比較了粒子群算法和遺傳算法的優(yōu)化效果。仿真結(jié)果表明,遺傳算法優(yōu)化結(jié)果較穩(wěn)定,且優(yōu)化結(jié)果較優(yōu)。通過遺傳算法與增廣拉格朗日乘子法相結(jié)合改進BP神經(jīng)網(wǎng)絡(luò),提高了BP神經(jīng)網(wǎng)絡(luò)預(yù)測精度。