何明慧,徐 怡,2,王 冉,胡善忠
1.安徽大學 計算機科學與技術學院,合肥 230601
2.安徽大學教育部智能計算與信號處理實驗室,合肥 230039
酒類品質通常影響著市場商品的供應需求以及食品安全。現實生活中,酒類品質通常由內部因素與外部因素共同影響[1]。通常酒類品質均依靠人工檢驗或經驗判定,當樣本數目逐漸增大,人工方法則會變得效率極低。隨著人工智能技術的發展,神經網絡具有模擬人腦高效處理信息的特點,并且已經廣泛應用于預測估計、模式識別、圖像處理及函數優化等領域[2]。目前BP神經網絡的應用最為廣泛,其具有結構簡單、訓練快速及自學習等特點。BP神經網絡的性能取決于網絡拓撲結構、連接權值及學習函數等。如果上述條件設置不合理,網絡則會出現收斂速度慢,易陷入局部極小值等問題。
神經網絡中每兩個神經元節點之間包含一個連接權值,通常權值的初始化范圍在[-a,a]或[0,a]之間(其中0<a<1)。目前神經網絡的權值初始化的方法共分為兩類,一類為區間分析法,另一類為迭代初始化法。區間分析法主要包括,Nguyen與Widrow提出隱含層的權值區間為(其中H為隱含層節點數,N為隱含層節點的權值個數)[3]。Boers與Kuiper提出權值的初始化區間為(其中din為輸入節點數)[4]。Kim與Ra提出神經網絡的最大權值為(其中η為網絡學習率,din為輸入節點數)[5]。Sodhi與Chandra提出神經網絡的權值區間為(其中H為隱含層節點數)[6]。Drago與Ridella提出隱含層的權值區間為(其中dh為隱含層節點數)[7]。迭代初始化法主要包括,Yang提出加速粒子群算法(ACPSO),并且此算法已經運用于多目標優化問題中[8]。Ren提出為了避免在訓練中網絡陷入局部極小值,使用粒子群優化算法動態選取權值[9]。Chouikhi與Ammar提出采用粒子群優化算法結合神經網絡在訓練過程中逐步修改參數,動態選取最優權值[10]。Gaxiola與Melin在神經網絡訓練中使用粒子群優化算法動態選取神經網絡權值[11]。
綜上所述,區間分析法是一類靜態設定權值的方法,并不能保證神經網絡每次訓練時設定的權值最佳,并且隨著網絡訓練上述方法易導致網絡陷入局部極小值。迭代初始化法雖然采用粒子群優化算法動態選取權值,這樣避免了人工設定的盲目性,但是上述方法會出現粒子早熟或粒子陷入局部最優的情況,導致選取權值不精確。
在本文中,針對神經網絡權值選取不精確的問題,在粒子群優化算法中提出動態慣性權重與參數制約,同時粒子群優化算法結合差分進化(DE)算法,使粒子擁有變異與交叉操作,此為改進的粒子群優化算法(IPSO)。運用此改進的粒子群優化算法結合BP神經網絡動態選取權值。綜上所述,基于IPSO算法與BP神經網絡,構建IPSONN神經網絡模型并運用此模型進行酒類品質的預測。實驗結果分別從訓練精度、正確率及粒子多樣三方面驗證了IPSONN模型的有效性。
BP神經網絡是采用誤差逆向傳播算法訓練的前饋神經網絡。其學習規則是遵循梯度下降法,通過逆向傳播不斷調整網絡的權值與閾值,使網絡的誤差最小。在本文中,網絡采用單隱含層如圖1所示。隱含層的激勵函數為Sigmoid激勵函數,輸出層的激勵函數為線性激勵函數。單隱含層BP神經網絡的信息傳遞過程如下:

圖1 單隱含層神經網絡結構圖
(1)隱含層節點 j的輸出

其中,n為輸入層節點數,xi為輸入向量,wji為輸入層節點i與隱含層節點 j之間的權值,bj為隱含層節點 j的閾值,yj為隱含層節點 j的輸出,fh為隱含層的激勵函數,本文為Sigmoid激勵函數。
(2)輸出層的輸出

其中,H為隱含層節點數,woj為輸出層節點o與隱含層節點 j之間的權值,bo為輸出層節點o的閾值,fo為輸出層的激勵函數,本文為線性激勵函數,輸出層有且僅有一個輸出節點。
(3)計算誤差

其中,t為實際值,yo為網絡輸出,輸出層有且僅有一個輸出節點。
(4)反向修改
根據訓練誤差E,BP神經網絡通過梯度下降法調整網絡的權值與閾值,并逐步訓練使網絡的誤差最小。
(5)評價標準

其中,N為樣本總數,yn為預測值,tn為實際值。
粒子群優化算法(PSO)由Eberhart與Kennedy于1995年提出的一種基于多目標優化的啟發式算法[12]。粒子群優化算法模擬鳥群或魚群覓食,在覓食過程中群體之間存在著一種社會信息共享機制,不斷迭代得到最優粒子。目前粒子群優化算法已經廣泛運用于神經網絡、函數優化、信息處理及其他多目標優化等領域[13]。
粒子群優化算法的每個粒子為解空間的一個解,所有粒子構成群體并隨機分布在一個維度為D∈Rd的空間中。群體X由N個粒子構成,即為X=(X1,X2,…,XN)。在搜索過程中,第i個粒子在空間D中的位置為Xi=(Xi1,Xi2,…,Xid),速度為 Vi=(Vi1,Vi2,…,Vid)。粒子速度和粒子位置由局部最優Pi_best與全局最優Gbest共同決定。局部最優是當前粒子在搜索過程中自身最佳的位置,即可表示為全局最優是所有粒子在搜索過程中全局最佳的位置,即可表示為Gbest=(Gbest1,Gbest2,…,Gbestd)。粒子速度與粒子位置的更新公式如下:

其中,i=1,2,…,N,N為粒子總數,d為優化目標變量個數,Vi為粒子速度,Xi為粒子位置,c1為認知系數,c2為社會系數,r1與r2均為[0,1]之間的隨機數,t為當前迭代次數,tmax為迭代總數。
粒子群優化算法中,隨著粒子不斷搜索與進化,所有粒子均趨向于最佳粒子的位置,這樣易導致粒子早熟或陷入局部最優,甚至出現粒子多樣性缺失的嚴重問題[14]。粒子多樣性的定義如下:

其中,xij(t)為第t代,第i個粒子,第 j個部分的值;為第t代所有粒子的第 j個部分的均值。
差分進化算法(DE)是由Storn與Price于1995年提出的一種基于種群隨機搜索的進化算法[15]。差分進化算法主要包括4個步驟,即初始化、變異、交叉與選擇。差分進化算法的詳細過程如下。
個體采用十進制編碼,進化代數Nit,個體總數N,染色體長度L,變異率F,交叉率CR,基因編碼值的范圍為[Umin,Umax]。

其中,i=1,2,…,N ;j=1,2,…,L,rand為[0,1]之間的隨機數。
隨機選取當前迭代次數下三個不同的個體進行變異,個體變異的公式如下:

其中,t為當前進化代數,rd1、rd2、rd3為3個不同的隨機整數,并且均小于tmax。
根據交叉率或隨機位置,在當前進化代數下使粒子進行交叉操作,個體交叉的公式如下:

其中,rand為[0,1]之間的隨機數,jrand為[1,L]的隨機整數。
計算個體適應度值,若個體的適應度值小于等于原始個體的適應度值則選擇變異與交叉后的個體,否則個體保持不變。選擇公式如下:

其中,f為適應度函數。
粒子在搜索過程中,若不能保持局部最優與全局最優的平衡,則粒子易產生早熟或陷入局部最優,甚至出現粒子多樣性降低的嚴重問題。在本文中,結合慣性權重線性遞減與慣性權重非線性遞減的方法[16],提出動態慣性權重,即慣性權重根據迭代次數動態減小,公式如下。

通常當慣性權重較大時算法具有全局搜索性能,當慣性權重較小時算法具有局部搜索性能,這有利于平衡算法的全局搜索與局部搜索。對于慣性權重線性遞減的方法,即使迭代前期粒子已接近全局最優點由于其局部搜索能力較弱可能會被錯過,迭代后期由于粒子全局搜索能力變弱,易陷入局部最優,并且慣性權重線性遞減不能滿足實際搜索過程非線性復雜的特點,從而影響算法性能。對于慣性權重非線性遞減的方法,雖然其慣性權重非線性遞減滿足實際搜索過程非線性復雜的特點,但是隨迭代次數增加其慣性權重減小極其迅速,算法性能過早由全局搜索轉變為局部搜索,并且由于過度震蕩,算法在迭代早期不能有效確定次優解,即使迭代后期慣性權重降低也難以找到最優解。在本文中,動態慣性權重采用泛化參數b,隨機參數rand與S形函數控制慣性權重減小的幅度,使慣性權重大小交替變化并且總體呈現下降的趨勢。如圖2,在搜索早期慣性權重取較大值的概率增加,粒子以較大的飛行速度搜尋整個空間確定全局最優解的范圍,保證種群全局“搜索”能力,在搜索后期慣性權重取較小值的概率增加,粒子獲得較小飛行速度,進而可以更加精確地搜索最優解位置鄰域,保證種群局部“開發”能力,這可以平衡算法的全局搜索與局部搜索。同時,在搜索過程中慣性權重隨迭代次數動態調整,可以不斷變化迭代前后粒子的速度與位置,增強粒子間的交互,有利于粒子快速找到最優解,避免慣性權重減小導致算法陷入局部最優,并且慣性權重動態變化滿足實際搜索過程非線性復雜的特點。綜上所述,動態慣性權重具備隨迭代次數增加而減小平衡算法性能,以及大小交替變化滿足實際搜索過程非線性復雜與尋優快速的優點。基于上述慣性權重調整方法,本文繪制粒子分布對比圖。如圖3,在慣性權重線性遞減與慣性權重非線性遞減的方法中,迭代結束時粒子分布松散,粒子距離全局最優點較遠。例如,非線性遞減方法中粒子分布區域第一維(-0.1,0.1),第二維(-0.7,0.1),線性遞減方法中粒子分布區域第一維(0,0.2),第二維(0,0.2),粒子遠離全局最優點則說明粒子陷入局部最優的可能性增加。相比之下,在動態慣性權重方法中,迭代結束時粒子分布區域第一維(0.2,0.3),第二維(0,0.2),粒子緊密分布于全局最優點的周圍并且多數粒子已找到全局最優解,說明算法收斂到全局最優解的概率增加,具有較好的收斂性能,則體現出本文所提動態慣性權重具有優勢。其中,LIW為線性慣性權重,NLIW為非線性慣性權重,DIW為動態慣性權重。

圖2 慣性權重對比圖

圖3 粒子分布對比圖
在粒子更新速度時,其也受限于認知參數與社會參數的取值。起初Eberhart指出認知系數與社會系數的取值均為2.0,此后在實際問題中Eberhart再次優化并設定上述兩個參數取值為1.494 45[17]。根據以上論述,本文提出認知系數與社會系數在給定范圍中相互制約,并且兩個參數上界之和為定值,即c1+c2=4。若c1或c2超過上界,則按照限定區間1.494 45≤c1≤2.0,1.494 45≤c2≤2.0,設置c1=2.0或c2=2.0。其中,w為慣性權重,wmax為慣性權重最大值,wmin為慣性權重最小值,b為泛化參數,tmax為最大迭代次數,rand為[0,1]之間的隨機數。
同時,粒子群優化算法結合差分進化算法,使粒子在搜索過程中擁有變異與交叉操作。粒子進行自我變異及相互交叉可以避免粒子陷入局部最優,并且有助于提高粒子多樣性。粒子的變異與交叉操作貫穿整個粒子搜索過程,并優化粒子的搜索性能。綜上所述,此改進的粒子群優化算法(IPSO)描述如下。
5.1.1 粒子初始化
粒子采用十進制編碼,進化代數Nit,粒子總數N,粒子搜索空間的維度D∈Rd,變異率F,交叉率CR,粒子初始位置范圍為[Umin,Umax],粒子初始速度為[0,1],粒子中封裝權值矩陣,粒子結構如圖4所示。

圖4 粒子結構圖

其中i=1,2,…,N,rand()為規模等同于權值矩陣的隨機數矩陣,取值均在[-1,1]之間,W1為輸入層與隱含層之間的權值矩陣,W2為隱含層與輸出層之間的權值矩陣,維度d為2。
5.1.2粒子變異
隨機選取當前進化代數下3個不同的粒子進行變異,得到當前迭代次數下變異后的粒子,變異公式如下:

其中,t為當前進化代數,rd1、rd2、rd3為3個不同的隨機整數,并且均小于tmax。
5.1.3粒子交叉
根據交叉率或隨機位置,在當前進化代數下使粒子進行交叉操作,粒子交叉的公式如下。

其中,rand為[0,1]之間的隨機數,j為第i個粒子的第j部分,jrand為[1,d]之間的隨機整數。
5.1.4粒子的位置與速度更新
本文采用動態慣性權重,并且認知系數與社會系數在限定區間內存在制約關系。算法每次迭代時,在上述限定區間內分別隨機產生c1與c2的參數值。改進后粒子的速度更新與位置更新公式如下。

其中,PXi(t+1)為第(t+1)代,第i個粒子。
5.1.5 粒子選擇
計算粒子的適應度值,若粒子的適應度值小于等于原始粒子的適應度值則選擇變異與交叉后的粒子,否則粒子保持不變;并計算局部最優值,更新局部最優粒子

5.1.6更新全局最優
當所有粒子完成上述操作,計算全局最優值,并更新全局最優粒子Gbest。全局適應度更新公式如下:

其中,f為適應度函數。
算法1 IPSO算法
輸入:初始化IPSO算法的所有參數與適應度函數。
輸出:全局最優粒子。
步驟1初始化粒子速度與位置,根據公式(17)初始化粒子結構,初始化粒子總數N與迭代總數Nit,當前迭代次數為t=1。
步驟2運用BP神經網絡的MSE函數作為適應度函數計算粒子的初始化適應度值,粒子的最小適應度值作為初始化局部最優值與初始化全局最優值,并記錄局部最優粒子與全局最優粒子。
步驟3當t<Nit,根據公式(18)粒子進行變異操作;若t≥Nit,轉至步驟8。
步驟4根據公式(19)粒子進行交叉操作。
步驟5 根據公式(20)、(21),更新粒子速度與位置。
步驟6根據公式(22)選取局部最優粒子,并更新局部最優值。
步驟7根據公式(23)選取全局最優粒子,并更新全局最優值,當迭代次數t=t+1。若t≥Nit,轉至步驟8;否則,轉至步驟3。
步驟8得到全局最優粒子,其中封裝權值矩陣。
綜上所述,基于IPSO算法結合BP神經網絡動態選取權值,本文構建IPSONN神經網絡模型,該模型的訓練過程如下:
步驟1加載數據集并歸一化其中的數據值在[-1,1]之間。
步驟2根據數據集屬性數目確定網絡的拓撲結構。
步驟3運用算法1結合BP神經網絡構建IPSON神經網絡模型。
步驟4訓練IPSONN神經網絡模型得到網絡的訓練結果。
步驟5反歸一化訓練結果,并記錄MSE、MAE、MAPE及網絡輸出。
步驟6 IPSONN模型訓練結束。
在本文中,實驗環境為MATLAB R2010b,實驗數據集來源于UCI的wine-quality[18]。首先,根據數據集屬性數目,IPSONN模型的輸入節點數目為11,輸出節點數目為1。隨機選擇1 000個數據作為訓練數據集,在剩余數據中,隨機選擇100個數據作為測試數據集。訓練數據集與測試數據集的所有數據均歸一化在[-1,1]之間。根據Master的理論設定隱含層節點數為6[19],根據拇指規則設定該模型的訓練精度為0.05[20],學習率為0.05,動量因子為0.8,隱含層的激勵函數為Sigmoid,輸出層的激勵函數為Purelin,學習函數為LM。其次,設定種群迭代總數為100,粒子總數為20,粒子速度范圍為[-3,3],粒子位置范圍為[-1,1],交叉率 CR 為0.4,變異率F為0.6,最大慣性權重wmax為0.9,最小慣性權重wmin為0.4。最終IPSONN模型的平均訓練結果如表1所示。作為對比實驗,運用訓練數據集分別訓練BPNN、DENN、PSONN、APSONN、ACPSONN共5個神經網絡模型,并且這5個模型的參數設置同上,平均訓練結果如表2至表6所示。
如表1至表6,IPSONN模型相比其他模型訓練結果的平均 MSE、MAE、MAPE較小,并且 MSE、MAE、MAPE的走向曲線如圖5至圖7所示。如圖,IPSONN的訓練結果相比其他模型訓練結果較好,并且隨著訓練代數的增加IPSONN的 MSE、MAPE、MAE一直較小并趨向于穩定。根據公式(9)、(10)計算PSONN、APSONN、ACPSONN、IPSONN模型粒子的多樣性,多樣性變化曲線,如圖8所示。

表1 IPSONN

表2 BPNN

表3 DENN

表4 PSONN

表5 APSONN

表6 ACPSONN

圖5 MSE對比圖

圖6 MAE對比圖

圖7 MAPE對比圖

圖8 粒子多樣性對比圖
如圖8,隨著迭代次數不斷增加,ACPSONN快速失去多樣性。加速粒子群優化算法(ACPSO)在粒子更新速度與位置時,僅采用全局最優而省略局部最優,粒子在搜索過程中缺少全局最優與局部最優的交互,并且粒子的搜索過程較為單一,易造成粒子早熟從而導致粒子多樣性缺失嚴重[21]。APSONN與PSONN的多樣性跨度區間較小均為(4,5),(5,6)。IPSONN的多樣性跨度區間為(4,5),(5,6),(6,7),并且粒子多樣性平穩增加。以上結果表明,IPSONN模型在訓練過程中保持粒子多樣性。
運用測試數據集驗證上述模型的性能,不同模型的預測正確率如表7所示。IPSONN模型的預測結果如圖9所示。

表7 正確率%

圖9 IPSONN輸出對比圖
如表7與圖9,IPSONN神經網絡模型的正確率均要高于其他神經網絡模型,并且隨著訓練次數的增加IPOSNN模型的正確率趨于平穩,平均正確率在82%至86%之間。在平均情況下,IPSONN神經網絡模型最高正確率可達86%。綜上所述,通過比較訓練精度、粒子多樣性及預測正確率,IPSONN神經網絡模型展現出較好的性能。
針對神經網絡權值選取不精確的問題,采用改進的粒子群優化算法結合BP神經網絡動態選取權值,避免人工設定權值的盲目性。在改進的粒子群算法中,采用動態慣性權重,并且認知參數與社會參數相互制約。同時,改進的粒子群優化算法結合差分進化算法,使粒子擁有變異與交叉操作,這樣可以平衡局部最優與全局最優,并保持粒子的多樣性。基于IPSO算法與BP神經網絡,構建IPSONN神經網絡模型并用于酒類品質的預測,避免人工檢驗的低效率。實驗分別從訓練精度、粒子多樣性及測試正確率三方面,驗證了該模型的有效性。在今后的研究中,IPSONN模型可以運用于更多實際問題中,并且可以結合其他人工智能算法優化IPSO算法,從而進一步提升模型性能。