◆張潤澤
(大連理工大學 遼寧 116000)
隨著理論基礎的不斷完善,神經網絡算法得到了快速的發展,并且被廣泛應用在工業設計,軍事發展以及生物醫學等方面,且研究過程取得了較大的進展。對于神經網絡來說,學習能力是衡量神經網絡算法的重要指標,但是就神經網絡算法自身缺陷來說,依然存在著較大的缺陷,即通過梯度下降的模式使得最終結果落入局部最小化,導致收斂速度變慢。
目前的算法研究中,關于神經算法主要存在3 種,分別是前向多層神經網絡,自組織神經網絡以及Hopfield 神經網絡,其中最為廣泛使用的是前向多層神經網絡,也被稱之為神經網絡MLFN 算法的主要結構為單向多層結構,每一層由多個神經組織單元構成,且每層的神經元組織結構在功能上是相互獨立的,單向結構決定了整個網絡結構中的數據信息依靠層與層之間相互傳遞,且數據信息只能自下而上,進行單一方向的傳輸[1],例如傳統的BP 算法中就是依靠Delta學習規則進行網絡結構內的權值修正,在算法執行過程中,數據會從一個方向逐漸傳輸,直至到網絡的每一個角落,而從另一個方向修正權值,第L層的第j個神經元的第i個權值的修正值定:

例如在第L層的第j個神經元上,為了將第i個輸入信號和第j個輸出信號進行關系連接,設定一個權值Wji,從而建立了網絡中上層和下層之間的關聯,這樣計算出來的誤差可以清晰地反映出來自上下兩層,一般稱之為Delta 函數:

通過上面的公式可以看出,在一個完整的調節適應過程中,任何參數的變化應該和該參數的輸入端和輸出端相互對應起來,形成一定的誤差比例。而參數η就是學習效率,決定了這個迭代計算過程的速度,而誤差g決定整個迭代過程的次數[2]。
遺傳算法是一種求解最優化結果的手段,其主要核心為對研究區域內的樣本進行隨機的抽取,并對樣本個體進行逐一編碼,同時將初代樣本進行自適應度計算,選取合適的適應度樣本作為下一代的研究對象,對篩選后的樣本進行交叉配對,然后對交叉配對和遺傳變異后的個體在進行新一輪的自適應度計算,得到新一代的研究個體,循環往復,不斷執行算法,直到結束條件達到預期設定的目標為止[3]。
權值編碼的本質意義是整個神經網絡內所有的權值看作是一個完整的染色體組,通過統計得到相應的染色體數量,對權值用對應的維數實數表示。在常用的GA 中一般會選用二進制進行編碼,同時對于連續參數的優化處理過程中,一般通過將空間進行離散化處理,此過程中存在相應的誤差,所以不能夠完整的反映出自身的結構,所以一般采用實數編碼的方式直接進行描述,這樣省去了解碼步驟,提高了整體運算精度和實際操作的速度[4]。
通常狀態下,神經網絡中的隱節點和輸出層一般會選用Sigmoid函數,即:

由于染色體表示權值,那么適應度函數可以理解為整個神經網絡的誤差,且誤差越大表示函數的適應度越小,對于采樣的群體,一般會包含如下的信息,如采樣的種群規模,數據的交叉概率以及傳輸過程中數據的變異概率,網絡的層數,每一層的網絡神經元數等,傳統的遺傳算法對于上述的參數設定一般具有較強的建設性和包容性,改變其中的某一項參數或者幾項參數的數值,一般對于結果的影響力很小[5]。
根據隨機產生的權值向量對應的神經網絡,對給定的輸入集和輸出集計算出每個神經網絡的全局誤差,并根據適應度函數計算出對應的適應度值。誤差越小的樣本,適應度值越大,意味著染色體越好。
算子的選擇:通過隨機選取的方式,保證了算子選擇的偶然性和隨機性,隨機選擇一定數量的樣本以后,對選擇個體進行適應度計算,將達到一定閾值的樣本個體劃歸到高適應度群體之中,并保存到下一代中去,然后對第一次篩選的樣本在進行二次篩選,設定新的閾值條件,不斷重復進行迭代,直至滿足下一代需求個體數量為止[6]。
交叉算子:在初始階段設定了交叉參數Pc,表示在每一次操作的樣本中都會存在的樣本個體進行交叉操作,通常都是通過隨機交叉產生的辦法,交叉算子可以定義為(c為一個設定值,取值范圍在0 到1 之間):

變異算子:設定變異參數大小為Pm,假定在實際操作中樣本群體的變異個數為Pm*pop-size,對于選擇好的每一個要變異的染色體,為了盡可能好地變異,可以進行多次變異,變異時首先隨機生成一個與染色體的各權值同維數的向量d1作為變異方向,可由產生正態分布的隨機數的函數隨機產生,然后用父代染色體的權值對應的向量和m*d1相加。對每次變異結果,還原成神經網絡,并進行性能評估,如果后代優于父代,則結束該父代的變異。
隨著進化迭代次數的不斷增加,最終保留下來的樣本個體之間的適應度差異不斷縮小,交叉算子在整個算法的過程中起到的作用也越來越小,而變異算子的作用逐漸凸顯,所以為了保證最終結果的穩定性,需要相應的減少交叉操作的概率,增大變異的概率,對傳統的公式進行對應的修正:

其中G代表總的迭代次數,而t表示當前的迭代次數
將上述設計的算法進行仿真模擬,對輸入的參數進行相關的統一設置,將神經元的輸入節點統一設置為n=10,規定所有的輸出節點為m=1,依據相關的計算其隱層節點,由于節點數為整數值,所以取隱層節點的數量k=3,統一設定網絡內的學習效率η=0.02,且網絡內的數據信息傳輸都適用于Sigmiod 函數。
為了仿真的簡潔性,對算法內的閾值計算進行忽略,結合遺傳算法進行相關仿真,設定參數交叉的發生概率為pc=0.4,數據在傳輸過程中的變異概率為pm=0.01,設定整個過程的樣本采樣為66 組,其中樣本的前40 組可以看作是樣本的訓練集合,后26 組規定為檢驗集合,其仿真結果如下:

圖1 迭代次數N

圖2 神經網絡的迭代過程

圖3 遺傳算法的迭代過程
通過相關的仿真結果可以看出,將遺傳算法和神經網絡算法相結合,可以明顯改善神經網絡陷入局部最優的缺陷,同時通過仿真的震蕩曲線,可以發現其震蕩次數明顯減少,同時遺傳算法與神經網絡算法的結合,為改進后的算法增強了全局的搜索能力,一般的遺傳算法中再經過2000 次的迭代以后,曲線會趨于停滯狀態,而兩種算法結合以后,在經過上千次的迭代以后,其仍然具有一定的收斂空間,且融合以后的算法其精度與神經網絡相差不大,但是時間的開銷卻明顯降低。
本文提到的神經網絡算法主要是在原有的BP算法以及遺傳算法的基礎上,結合了二者算法的優勢,提出了一種最新的二次訓練算法,克服了傳統神經網絡在初始階段陷入局部最優的缺陷,同時也加快了整體網絡函數的收斂速度,提高了神經元網絡的搜索效率,降低了整體搜索時間,有著較大的改進。