周游,陸安江,劉璇
(貴州大學明德學院,貴州貴陽,550025)
水體富營養化現在越來越嚴重,表征水體富營養化的指標有很多,其中水體葉綠素a含量是重要指標之一,且水體中葉綠素a含量變化機理是非常的復雜,能夠用于判斷水體水華的發生情況[1]。我們可以通過對水體中葉綠素a含量影響因子的研究,從而為水污染防治提供關鍵性依據[2]。目前國內外對水體葉綠素a預測的智能算法發展迅猛,其中,為構建葉綠素a含量的預測模型,我們常常利用神經網絡的非線性逼近特征,因此神經網絡已經成為葉綠素a含量預測的重要手段之一[3]。例如文獻[4]張成成等基于太湖梅梁灣2010年4月至2011年12月的監測數據,提出基于支持向量機的葉綠素a濃度預測模型,并進行了輸入變量的敏感性分析,并通過模擬值和實測值的對比分析可得該模型可以較好地預測7天后的葉綠素a濃度的變化情況;文獻[5]裴洪平等通過對西湖湖心采樣的數據進行處理分析,最終成功構建了葉綠素a的BP神經網絡預測模型;文獻[6]羅華軍等提出利用遺傳算法的特性來優化支持向量機的模型參數,同時利用空間重構方法計算出時間序列的時間延遲和嵌入維數,確定支持向量機輸入向量的水庫葉綠素a濃度短期預測模型;文獻[7]李峰等對三峽水庫支流神龍溪2013年5月至12月水環境進行檢測,并對檢測數據進行處理分析,利用Matlab R2010a軟件建立了基于BP神經網絡的葉綠素a預測模型。本文通過改進遺傳算法的選擇、交叉以及變異算子,從而優化BP神經網絡權值和閾值,最后建立葉綠素a含量預測模型。
BP神經網絡是由Rumelhart和McClelland為首的科學家在1986年提出的一種按照誤差逆向傳播算法訓練的多層前饋式網絡,是目前被使用最為廣泛的神經網絡[8],同時被廣泛應用于藻華預測領域。本文采用三層前饋神經網絡來構建葉綠素 a 含量預測模型[9]。基本結構如圖1所示。圖1 中輸入變量與隱含層之間的權值為Wik,Vk表示隱含層與輸出層之間的權值;B1表示隱含層閾值矩陣,B2表示輸出層閾值矩陣,φ ( x )表示隱含層,? ( x )表示輸出層節點傳遞函數。

圖1 BP神經網絡的結構
通過文獻[10-12]可知,BP 神經網絡是一種迭代算法,它的傳播由兩個過程組成,第一個是正向傳播,即輸入信息在傳播過程中通過相應的權值、閾值和激活函數的處理,最后傳輸到輸出層;第二個過程是逆向傳播過程,當輸出誤差大于給定的精度時則轉入誤差反向傳播,在誤差返回傳輸過程中,網絡將會對各層的權值和閾值進行修正,經過反復上述操作直到滿足給定精度。其中,x1, x2,… ,xn作為初始信號,對于在本文中的輸入變量,我們使用與葉綠素a含量相關的因子監測值,將葉綠素a含量作為輸出變量;對于網絡中的激活函數,其中隱含層采用tansig函數作為激活函數,輸出層采用線性函數purelin作為激活函數,權值和閾值學習函數在本文中采用learngdm函數。
則在單組樣本中,隱含層神經元k的輸入值為輸入變量與隱含層權值乘積之和,如式(1)所示:

經激活函數激活映射后,節點k的輸出值為:

輸出層的輸入值為隱含層輸出值與輸出層權重Vk乘積之和,如式(3)所示:

輸出層葉綠素預測輸出值為:

對于葉綠素a預測模型的準確性,本文采用Pearson相關系數來對其進行評估,具體關系如式(5)所示:

通過文獻[13-14]可知,對于處理數據BP神經網絡雖具有較強的自適應、泛化以及非線性映射能力,但其自身具有以下缺點:網絡訓練工程中及其容易陷入局部極小值、誤差梯度變化非常小以及收斂速度特別慢。而遺傳算法具有較強的全局搜索最優值特性[15],因此考慮利用遺傳算法來優化BP 神經網絡。
利用遺傳算法全局優化能力,對于BP神經網絡的初始權值和閾值我們可以通過遺傳算法的選擇、交叉和變異操作來進行優化,從而得到BP神經網絡的最優權值和閾值。BP神經網絡的權值和閾值由遺傳算法獲得的最優個體進行賦值,局部優化由BP神經網絡預測模型進行,通過遺傳算法和BP神經網絡的結合最終得到BP神經網絡的全局最優預測值。
遺傳算法是一種效仿自然界遺傳與選擇機制的隨機優化算法,它結合了自然遺傳學的適應性或器官進化過程與功能優化。通過仿照達爾文進化過程中染色體結構的“適者生存”,通過隨機信息交換尋找最優染色體(解)。在每一代人中,都有一套新的人工染色體是用最合適的舊染色體碎片創造出來的。它能有效地利用歷史信息推測新的搜索點,預期性能會得到改善。
在使用遺傳算法時,種群規模是有限的,通過選擇、交叉以及變異后,往往會使適應度值較高的個體在下一代中得到更多的復制,這樣反復的進行,會造成某些個體在種群中占有絕對的優勢,遺傳算法就會不斷強化這種優勢,從而造成群體開始收斂,造成種群多樣性不斷降低,使個體變得越來越相似,最終導致好的個體得不到更多繁殖的機會,使得遺傳算法出現局部最優,這就是所謂的遺傳算法早熟現象。
遺傳算法基本上是從一個最普通的群體遺傳學模型中衍生出來的。完成遺傳算法主要依靠三個相關算子:選擇、交叉和變異。因此針對遺傳算法的缺點,本文將對遺傳算法的選擇、交叉以及變異算子進行改進。遺傳算法主要步驟及改進措施如下所示。
(1)編碼
確定編碼方式是遺傳算法進化設計的首要步驟,經分析研究我們決定在實數編碼和二進制編碼中選擇一種編碼方式,考慮到二進制編碼的復雜性及計算量大的缺點,本文最終決定采用實數編碼。
(2)適應度函數的設計
確定適應度函數,適應度函數在遺傳算法中的作用就好比眼睛對于人的作用,對適應度函數改進所產生的的效果可以很好的反應在算法中。適應度函數選取的好壞直接影響到問題解決的完美與否,因為遺傳算法的進化僅僅取決于適應度函數,個體能否進入候選群完全由適應度決定,適應度與個體的優劣程度成正比,適應度越高,個體越優秀,進入下一代的概率越高,越有利于種群的繁衍。通常來說,不同的適應度函數對同一問題的效果是不同的,我們往往根據我們要實現的目的來選擇相應的適應度函數。對于本文我們采用期望輸出值與網絡輸出值的誤差Eg作為評價標準[16]:

(3)免疫機制選擇算子
算法早熟會導致無法得到全局的最優解,為了得到最優解,克服算法早熟,本文對選擇概率進行了輕微的變動,利用的是一種免疫原理。免疫優化算法結合了生物免疫系統的進化機制和傳統的遺傳算法,在一定水準上精確地提升了算法的性能。利用免疫機制進行選擇時,目標函數和約束條件就相當于免疫系統中的抗原,在抗原的刺激下可產生抗體群,之后根據遺傳操作和抗體親和度找出針對該抗原的抗體。
首先定義個體濃度d:


設某一個個體的適應度為 fi,該個體被選中的概率為pfi,則:

其中,i=1 ,2,3,…,M
通過對個體濃度進行定義,選出最優個體會變得相對方便,同時也提高了選擇的效率和精確率。由上述可知,適應度與被選中的概率成正比;個體濃度與被選中的概率成反比,它們分別可以實現加快收斂速度和防止過早收斂的目的。
(4)自適應交叉、變異算子
在種群尋找最優解的過程中,會產生大量具有相同的適應度值染色體,也就意味著會找到很多相似的個體,相似個體越多,種群的多樣性就會越低,針對這一現象設計出了自適應交叉、變異算子:

Pc1、Pm1初始設置的交叉概率、變異概率,C1和C2是非零的正常書。這里C1=0.1,C2= 0 .01,NCSF表示當前種群具有最多相同適應度值的染色體數目,fCSF表示當前種群中最多的適應度值,favg表示當前種群的平均適應度值。
可以看出如果種群中產生了數量多且適應度值大于種群平均適應度值,則證明種群中存在很多優秀的個體,這時適當減少交叉變異概率,以保持種群的優勢;如果種群中產生了大量低適應度的個體,則使之保持較大的交叉變異概率,一方面提高種群多樣性,另一方面可以創造更大產生優質個體的概率。
葉綠素a預測模型中,改進的遺傳算法優化BP神經網絡步驟如下:
Step1:確定BP神經網絡結構參數。
Step2:初始化種群。設定種群規模,編碼BP神經網絡的權值和閾值,產生初始種群。
Step3:確定適應度函數。適應度函數作為評價個體好壞的標準利用適應度值判斷每條染色體適不適合在現在的環境中生存。本文采用式(1)作為適應度函數。
Step4:選擇過程。選擇操作是以每條染色體的適應度值作為參考,其中適應度較高的個體“脫穎而出”的機會就越大,然后“升級”為父代參與到下一代群體。對于選擇過程中的概率,本文采用式(3)作為個體被選擇的概率。
Step5:交叉過程。交叉就是在一定交叉概率上,鎖定兩條父代染色體,并將其部分基因互相移植,從而得到新生個體的過程。通過交叉操作,可以較大程度上提高遺傳算法獲取最優解的可能,本采用式(4)作為交叉算子產生新個體。
Step6:變異過程。變異是交叉操作的拓展延伸步驟,其目的都是為了保證種群多樣性。變異也是在一定的變異概率上,瞄準某條染色體,使它的某個基因發生驟變的過程。與交叉有所不同的是,變異只針對單個個體,交叉針對的是兩個個體;且交叉是大概率創造新個體,變異是小概率創造新個體。在變異操作時如果變異概率設置過大,遺傳算法就可能簡化為隨機搜索算法,遺傳算法的特性與搜索能力將不復存在。本文采用式(5)作為變異算子產生新個體。
Step7:判斷是否滿足終止條件,如滿足則輸出最有值;如不滿足則重復Step2~ Step6過程。
基于改進的GA-BP神經網絡的預測模型結構如圖2所示。

圖2 基于改進的GA-BP神經網絡的預測流程
本文采用數據來源于貴州省西部威寧縣縣縣城西南面的草海,采集對象為該水域2018年7月1日到8約時間10日的時段水質因子葉綠素a(Chl-a)、水溫(Tw)、pH值、溶解氧(Do)、總氮(TN)、透明度(SD)、總磷(TP) 以及降雨量(RF)等8項現場監測數據,數據采集頻次為每小時一次。
在使用BP神經網絡進行網絡訓練之前,我們必須對原始數據進行歸一化處理,因為原始數據各因子存在著量綱及數量級不同的缺點。處理數據歸一化的方法有很多,本文采用極差歸一化處理,歸一化公式如下[17]:

試中:x′表示為監測數據歸一化后[0,1]空間映射值;x為監測數據原始值;xmin,xmax分別為最大、最小監測值。
3.2.1 因子敏感性分析
為了使網絡變量盡可能的少,接下來將對影響葉綠素a含量變化的主要敏感因子進行探討。對于葉綠素a含量變化主敏感因子探討依據,由于Dimopoulos因子敏感性秩序具有合理性,因此本文采用基于偏導的Dimppoulos敏感性分析方法進行模型敏感度分析[18]。
通過Dimppoulos敏感性分析方法分析,訓練結束的神經網絡為系數明確的函數表達式,因此在單樣本中,葉綠素a含量各相關因子敏感值可通過以下表達式求出[19]:

式中:Si為神經網絡第i個輸入變量的敏感值;(x1,x2,…,xn)為葉綠素a含量預測值,x1,x2,…,xn為葉綠素a含量變化相關因子監測值;ak分別為神經網絡隱層,c輸出層輸入值矩陣。
則對于在總樣本中,葉綠素a相對于對該變量的敏感度可用以下式子進行表示:

式中:Si,all為總樣本中第i個因子相對敏感度,值越接近1對葉綠素a含量變化影響越大;Sit為樣本t第i個輸入變量的敏感值,n為葉綠素a含量相關因子數,T為樣本總數。
基于 Dimopoulos 因子敏感性分析結果如圖3所示,葉綠素a含量對pH值最為敏感,TN次之,Tw、Do再次之,而對SD、TP及RF三項指標敏感性最弱。

圖3 葉綠素a相關因子敏感性分析分布
3.2.2 輸入因子方案選擇
根據dimopoulos因子的靈敏度順序,將輸入變量由小到大,調整輸入參數的個數,設置不同因子的輸入精簡方案。對于葉綠素a預測模型中的其他設置固定不變,進行基于神經網絡的1000次循環訓練。如表1輸入因子調整方案。

表1 輸入因子調整方案

3 pH、TN、Tw、Do、SD 5 0.973 4 pH、TN、Tw、Do 4 0.985 5 pH、TN、Tw 3 0.965
從表1可以看出,剔除SD、TP和RF三項指標,預測精度基本保持不變,表明SD、TP和RF不是葉綠素a含量變化的主敏感因子。
結合圖3和表1的分析,本文采用方案4作為網絡輸入因子來對葉綠素a含量進行預測。
在700余組有效數據種選取500組為訓練數據,200組作為驗證數據;本文采用方案4,以葉綠素a含量為輸出變量,以pH、TN、Tw和Do,4項因子作為輸入變量訓練神經網絡。其中,神經網絡隱含層神經元數K=4,最大迭代次數設置為1000,學習率設置為0.1,訓練目標最小誤差設置為0.0001;GA種群規模設置為100,進化次數為100,初始交叉概率Pc1= 0 .8,初始變異概率Pm1= 0 .1。具體的測試結果見下圖。
通過圖4~圖7可以看出,改進后的GA-BP神經網絡具有較好的預測效果,其中改進GA-BP神經網絡的訓練精度為0.985,仿真精度為0.981,GA-BP神經網絡的訓練精度為0.973,仿真精度為0.965;對比基礎BP神將網絡,BP神經網絡的訓練精度為0.959,仿真精度為0.934。改進GA-BP神經網絡相對于GA-BP神經網絡預測精度提升1.23%,仿真精度提升1.66%;GA-BP神經網絡相對于BP神經網絡預測精度提升1.46%,仿真精度提升3.32%;改進GA-BP神經網絡預測精度相對于BP神經網絡預測精度提升2.71%,仿真精度提升5.03%;從結果可得改進GA-BP神經網絡預測模型優于GA-BP神經網絡預測模型,GA-BP神經網絡預測模型優于BP神經網絡預測模型。

圖4 訓練效果

圖5 訓練值與監測值相關性

圖6 仿真效果

圖7 仿真值與監測值相關性
本文通過對遺傳算法選擇、交叉及變異算子的改進,并將改進的遺傳算法與BP神經網絡結合構建了葉綠素a預測模型。從BP神經網絡、GA-BP神經網絡及改進GA-BP神經網絡的仿真與訓練結果對比可得,通過對遺傳算法算子的改進可以有效避免遺傳算法陷入局部最優及早熟現象,同時對BP神經網絡的權值和閾值進行了有效的優化,避免網絡訓練陷入局部最優并提高了模型預測精度,從而提高了葉綠素a預測精度;本文通過Dimopoulos偏導敏感性分析,對葉綠素a預測模型中的輸入因子進行敏感性分析,根據靈敏值大小調整輸入因子個數,最終確定輸入因子個數及因子組合。