馬曉星
(四川大學計算機學院,成都610065)
BP(Back Propagation),即反向傳播算法,常用于訓練前饋神經網絡,進行監督式學習。BP 神經網絡是近年來應用最廣泛的神經網絡,常見的神經網絡有循環神經網絡、卷積神經網絡、逆向圖網絡等。反向傳播這一術語在神經網絡中廣為人知是于1986 年由兩位科學家宣布的,之后這一技術被獨立發現了很多次,且有很多研究甚至可以追溯到20 世紀60 年代,在結構上分為輸入層、隱藏層和輸出層。它的基本思想是梯度下降法。在擬合神經網絡時,基于梯度搜索技術,通過反向傳播計算損失函數及其梯度,調整網絡權值使損失下降到最小。BP 算法通過鏈式法則計算損失函數對每個權值的梯度,從最后一層向前迭代,每次計算一層。
基本的BP 算法包括兩個過程。從輸入到輸出的方向,計算網絡誤差,從輸出到輸入的方向,調整網絡的權值和閾值。向前傳播時,信號從輸入端,經過非線性映射到達輸出端,若輸出信號與預期值的均方差沒有達到期待值,則轉為誤差反向傳播過程。反向傳播時,誤差從輸出端開始逐層傳遞,經過隱含層到達輸入端,各層的權值都會以誤差為依據得到調整。通過網絡權值和閾值的調整,使得誤差沿著梯度方向下降,經過反復的訓練,直到達到最大迭代次數或誤差達到期待值,訓練結束。此時的網絡參數,即訓練好的BP 神經網絡模型,若將類似樣本作為輸入信息,網絡經過自行計算,得到預測輸出。
BP 神經網絡應用非常廣泛,于安雷等人[1]使用BP神經網絡做軟件模型的缺陷預測,郝海霞等人[2]使用PSO 改進的BP 神經網絡做函數擬合,陳立君等人[3]使用BP 神經網絡做木材紋理分類研究,傅建平等人[4]基于BP 神經網絡訓練出發動機磨損模式識別模型。林泉等人[5]基于BP 神經網絡對心電數據進行壓縮,解決了現有的心電數據壓縮方法開支較大、難以在實際工程應用中發揮作用等問題。
人口普查由國家出一套統一的標準和規定,對全國現有人口挨家挨戶的進行一次全面登記調查。它是當前采集人口信息的一種最基本最科學的方法,其重點是了解當地人口變化和發展、性別占比、出生占比等,是提供人口數據信息的重要來源。本文使用的人口普查數據集來自1994 年,主要調查數據包括年齡、教育程度、工作類別、國籍、性別等多項屬性,基于BP神經網絡分析主要特征值,預測個人收入是否超過$50K/年。
神經元是神經網絡最基本的單元。圖1 給出了神經元的一般模型。BP 神經網絡中常用的激活函數有雙曲正切函數、閾值函數和s 型函數。

圖1 神經元模型
前向傳播時,信號從輸入層進入,經過隱藏層,到達輸出層。神經元的輸出為:

神經網絡是將多個神經元按一定規則聯結在一起而形成的網絡,其輸入神經元的個數等于輸入樣本的數據維度,輸出神經元個數與等于需要預測的分類數。通常使用的是三層神經網絡,即隱藏層的層數為一層。
若為二分類問題,BP 網絡使用Sigmoid 作為傳遞函數,它的特點是函數導數和其本身都是連續的,Sigmoid 函數有多種定義,其單極性函數定義如下:

若為多輸出神經元,通常采用Softmax 函數,它是二分類Sigmoid 函數在多分類上的擴展,Softmax 能將多分類結果以概率的方式展示出來。
采用損失函數來衡量輸出值和預期值之間的誤差,損失函數值越小,代表擬合程度越好,計算公式為:

BP 神經網絡采用梯度下降法訓練模型,調整網絡參數使模型在訓練過程中的損失函數值下降到最小。
本文使用一個隱含層,其節點數基于經驗公式確定,公式為:

如果BP 網絡的初始權值設置不合適,BP 網絡易陷進局部極小值。BP 網絡采用梯度下降技術來調整網絡的權值和閾值,這使得網絡只會“下坡”而不會“爬坡”。基于梯度下降的BP 算法,其固有缺陷難以克服。BP 的梯度下降不能保證能找到誤差函數的整體最小值,可能陷入誤差曲面的局部極小值后難以沖出。這些參數需要不斷地訓練才能逐步固定,而過度的訓練會造成過擬合現象,即擬合誤差減少而預測誤差增大。
PSO 粒子群算法是優化BP 神經網絡最常見的算法之一。基于PSO 算法來調整BP 神經網絡權值的過程是:使用PSO 粒子群算法替換BP 算法中的梯度下降法,優化BP 神經網絡模型的權值和閾值,直到其適應度不再有意義地降低。得到初始權值后,再使用BP算法對網絡參數進一步迭代優化,得到更精確的解,直到網絡參數滿足預期誤差,即可得到精確的最優權值和閾值組合。PSO 算法與BP 算法的融合主要體現在兩個方面,首先PSO 算法中粒子的位置向量對應BP算法的全部連接權值和閾值,PSO 算法通過適應度函數尋找最優位置,也就是在尋找BP 網絡的最優權值和閾值。其適應度函數的定義對應于BP 算法均方誤差,粒子的適應度采用BP 算法的前向傳播來計算。
人口普查數據集的數據復雜,數據維度高,為了更好地適應BP 神經網絡的訓練,需要對數據進行特征選擇,嘗試剔除數據中的噪聲,選擇出對于預測模型而言的重要特征。基于隨機森林的特征選擇能夠計算單個變量的特征重要性并對特征進行重要性排序,進而實現從所有特征中選出重要性靠前的特征。
基于隨機森林計算特征M 重要性步驟如下:
(1)對每一顆決策樹,選取對應的袋外數據(Out Of Bag,OOB)來計算袋外數據誤差。袋外數據就是對數據集進行多次抽樣得到子數據集,用于訓練決策樹。剩余沒有參與決策樹訓練的數據用于計算模型的錯誤率,對決策樹進行性能評估,即袋外數據誤差err1。
(2)隨機改變樣本數據的特征值M,即對OOB 所有樣本的特征M 隨機加入噪聲干擾,重新計算其袋外誤差err2。
(3)假設隨機森林有N 顆數,則特征M 的重要性I 為:

若加入隨機噪聲后,計算得到OOB 準確率嚴重下降,則說明特征M 對分類結果影響度很高,即特征M重要程度比較高。
對類別特征,需要進行One-Hot 編碼(獨熱編碼),即利用0 和1 表示某些參數,使用N 位狀態寄存器來對N 個狀態進行編碼。例如輸出值工資,分為>=50k和<=50k,編碼分別表示為[0,1]和[1,0];若特征值婚姻狀況分為已婚、未婚、離婚、喪偶,則未婚狀態的編碼為[0,1,0,0]。獨熱編碼能處理非連續性特征,使得特征矩陣的數據變得稀疏,在一定程度上也起到了擴充特征的作用。

表1
將處理過的數據集按照3:7 分割為測試集和訓練集,首先將訓練集輸入BP 神經網絡,經過反復迭代,調整網絡權值和閾值,得到收入預測模型。然后將測試集輸入預測模型中進行測試,計算網絡損失和準確率,最后得到可視化結果。
神經網絡輸入神經元個數即特征值在預處理和獨熱編碼后的個數,在本次實驗中input_n=95,設輸出神經元個數output_n=2,設置訓練網絡的學習率為0.01,數據集規模為32561 個樣本。實驗采用的計算機配置如表2。

表2
基于以上實驗環境和參數訓練BP 神經網絡,得到收入預測模型的訓練和測試損失如圖2。每次批處理的樣本規模為64,迭代次數為20,訓練損失和測試損失在epoch=10 以前隨著迭代次數增加急速下降,當epoch 超過30 時,損失函數開始收斂,實驗證明基于BP 神經網絡的個人收入預測模型具有較高的收斂速度。

圖2 訓練和測試損失

圖3 分類準確率
神經網絡的預測準確率公式如下:

訓練得到分類準確率如圖3。當epoch>15 時,分類準確率達到百分之百。實驗證明基于BP 神經網絡的個人收入預測模型具有較高的準確率。
本文基于人口普查數據集,訓練出了基于BP 神經網絡的個人收入預測模型,并經過真實的實驗,證明了該模型具有較高的收斂速度和準確率。近年來研究學者們探討了很多基于BP 神經網絡的優化算法,例如將BP 神經網絡與遺傳算法或PSO 粒子群算法結合,提高了收斂速度,避免其陷入局部極小值。
然而隨著數據規模越來越大,BP 神經網絡在處理大數據樣本時暴露出了較明顯的缺陷,例如收斂速度慢,準確率下降等。我們在接下來的工作中,也將聚焦于數據并行化訓練算法,研究集成學習算法與BP 神經網絡的結合方式,并且基于Hadoop 或Spark 等大數據平臺,使BP 神經網絡適應大數據場景,表現出更好的訓練效果。