聶文都,蔡錦凡
(西京學院信息工程學院,西安710123)
人工神經網(wǎng)絡(Artificial Neural Network,ANN)從信息處理的角度對人腦神經元進行抽象,建立一種簡單模型,按不同的連接方式組成不同的網(wǎng)絡。神經網(wǎng)絡是一種運算模型,由大量的節(jié)點(或稱神經元)之間相互聯(lián)接構成。每個節(jié)點代表一種特定的輸出函數(shù),稱為激勵函數(shù)(Activation Function)[1]。每兩個節(jié)點間的連接都代表一個對于通過該連接信號的加權值,稱之為權重,這相當于人工神經網(wǎng)絡的記憶。網(wǎng)絡的輸出則依網(wǎng)絡的連接方式,權重值和激勵函數(shù)的不同而不同。而網(wǎng)絡自身通常都是對自然界某種算法或者函數(shù)的逼近,也可以是對一種邏輯策略的表達。
相對于傳統(tǒng)的線性邏輯回歸算法[2],人工神經網(wǎng)絡具有良好的容錯性,泛化能力好,適于擬合復雜的非線性關系,應用領域廣泛,是當前許多工程領域的研究熱點。現(xiàn)在很多問題都是二分類[3-4]問題,現(xiàn)在很多都是利用人工神經網(wǎng)絡實現(xiàn)而分類問題。
神經細胞是構成神經系統(tǒng)的基本單元,稱之為生物神經元[5],簡稱神經元。神經元主要由三部分構成:①細胞體;②軸突;③樹突。生物神經元結構如圖1所示。
圖1 生物神經元結構
神經元的功能特性:①時空整合功能;②神經元的動態(tài)極化性;③興奮與抑制狀態(tài);④結構的可塑性;⑤脈沖與電位信號的轉換;⑥突觸延期和不應期;⑦學習、遺忘和疲勞。
人工神經網(wǎng)絡是由大量處理單元經廣泛互連而組成的人工網(wǎng)絡,用來模擬腦神經系統(tǒng)的結構和功能。而這些處理單元我們把它稱作人工神經元[6]。人工神經元結構如圖2 所示。
圖2 人工神經元結構
神經網(wǎng)絡從兩個方面模擬大腦:
(1)神經網(wǎng)絡獲取的知識是從外界環(huán)境中學習得來的;
(2)內部神經元的連接強度,即突觸權值。用于儲存獲取的知識。
神經網(wǎng)絡系統(tǒng)由能夠處理人類大腦不同部分之間信息傳遞的由大量神經元連接形成的拓撲結構組成,依賴于這些龐大的神經元數(shù)目和它們之間的聯(lián)系,人類的大腦能夠收到輸入的信息的刺激由分布式并行處理的神經元相互連接進行非線性映射處理,從而實現(xiàn)復雜的信息處理和推理任務。對于某個處理單元(神經元)來說,假設來自其他處理單元(神經元)i 的信息為xi,它們與本處理單元的互相作用強度即連接權值為wi,i=0,1,2,…,n-1,處理單元的內部閾值為θ。而處理單元的輸出為:
式中,xi為第i 個元素的輸入,wi為第i 個處理單元與本處理單元的互聯(lián)權重即神經元連接權值。f 稱為激活函數(shù)或作用函數(shù),它決定節(jié)點(神經元)的輸出,θ表示隱含層神經節(jié)點的閾值。
一個人工神經網(wǎng)絡由多個神經元結構組成,每一層的神經元都擁有輸入和輸出,每一層都是由多個神經元組成。第i-1 層網(wǎng)絡神經元的輸出是第i 層神經元的輸入,輸入的數(shù)據(jù)通過神經元上的激活函數(shù)來控制輸出數(shù)值的大小。該輸出數(shù)值是一個非線性值,通過激活函數(shù)得到的數(shù)值,根據(jù)極限值來判斷是否需要激活該單元。一般多層人工神經網(wǎng)絡由輸入層、輸出層和隱藏層組成。如圖3 所示。
圖3 三層人工神經網(wǎng)絡模型
輸入層(Input Layer)是接受輸入信號作為輸入層的輸入;輸出層(Output Layer)是信號在神經網(wǎng)絡中經過神經元的傳輸、內積、激活后,形成輸出信號進行輸出;隱藏層(Hidden Layer):隱藏層也被稱為隱層,它介于輸入層和輸出層之間,是由大量神經元并列組成的網(wǎng)絡層,通常一個人工神經網(wǎng)絡可以有多個隱藏層。
首先給所有的權重向量W 和偏置b 賦予隨機值,使用這些隨即生成的權重參數(shù)值來預測訓練中的數(shù)據(jù)樣本。樣本的預測值為y^,真實值為y,現(xiàn)在定義一個損失函數(shù)[7-8],目標是使預測值盡可能接近真實值,損失函數(shù)就是使得神經網(wǎng)絡的損失值和盡可能的小。其基本公式為:
使得模型效果最佳就是如何改變神經網(wǎng)絡中的參數(shù)W 和b,使得損失函數(shù)的值最小。
在訓練階段,通過算法修改神經網(wǎng)絡的權值向量W 和偏置b,使得損失函數(shù)最小。當損失函數(shù)收斂到某個閾值或者等于零時,停止訓練,就可以得到權值向量W 和偏置b。到此為止,人工神經網(wǎng)絡模型結構中所有的參數(shù)(輸入層、輸出層、隱層的節(jié)點數(shù)、權值向量W、偏置b)都是已知的,只需要將向量化后的數(shù)據(jù)從人工神經網(wǎng)絡的輸入層開始輸入,順著數(shù)據(jù)流動的方向在網(wǎng)絡中進行計算,直到數(shù)據(jù)傳輸?shù)捷敵鰧硬⑦M行輸出(一次前行傳播),就完成一次預測并得到分類結果。
假設函數(shù)L(θ)為損失函數(shù),為了找到損失函數(shù)的最小值,需要沿著與梯度向量相反的方向更新變量θ,這樣可以使梯度減小得最快,直至損失函數(shù)收斂至最小值。該算法稱為梯度下降算法[9-11],其基本公式為:
其中,η∈R 為學習率,用于控制梯度下降的幅度(快慢)。在神經網(wǎng)絡中,上式中的變量θ是由神經網(wǎng)絡的參數(shù)所組成的向量θ={w1,w2,…,wn,b1,b2,…,bn}。梯度下降的目標就是找到參數(shù)θ*使得神經網(wǎng)絡總損失L最小,從而確定神經網(wǎng)絡中的權重向量W 和偏置b。梯度下降算法的特點是:越接近目標值,變化越小,梯度下降的速度越慢。梯度下降的算法有很多變種形式,主要有以下三個:①批量梯度下降算法(Batch Gradient Descent,BGD);②隨即梯度下降算法(Stochastic Gradient Descent,SGD);③小批量隨機梯度下降算法(Min-batch SGD)。如圖4 所示,(a)批量梯度下降算法的下降軌跡平滑,經過多次迭代后達到全局最優(yōu)解處;而(b)小批量隨機梯度下降算法在下降過程中持續(xù)的小幅振蕩,但每次迭代的數(shù)據(jù)量少,能夠更快地找到全局最優(yōu)解。因此小批量隨機梯度下降算法在實際工程中使用的頻率更高。
圖4 BGD 和Min-batch SGD 梯度下降示意圖
向前傳播(Feed Forward)算法在神經網(wǎng)絡的訓練和預測階段都會被反復用到,是神經網(wǎng)絡中最常見的算法。其計算方式簡單,只需要根據(jù)神經網(wǎng)絡模型的數(shù)據(jù)流動方向對輸入的數(shù)據(jù)進行計算,最終得到輸出結果。圖5 所示是一個簡單的人工神經網(wǎng)絡模型[12],其輸入層有兩個節(jié)點,隱層、輸出層均有3 個節(jié)點。可以通過矩陣的方式對向前傳播算法進行解析。假設zi(l)為第l 層網(wǎng)絡第i 個神經元到第l+1 層網(wǎng)絡中的第j 個神經元的連接,那么根據(jù)神經元基本公式有:
神經網(wǎng)絡的參數(shù)進行量化[9],表示為:
因此,單層神經網(wǎng)絡的向前傳播算法可以使用矩陣表達為:
其中,a(l)為第l 層網(wǎng)絡的輸出矩陣,f 為激活函數(shù)。
圖5 單隱藏層神經網(wǎng)絡的向前傳播
反向傳播算法[13-15]的數(shù)學定義是根據(jù)微積分里面的一些數(shù)學法則來闡述的。假設神經網(wǎng)絡模型的參數(shù)為θ={w1,w2,…,wn,b1,b2,…,bn},那么反向傳播算法的精髓是:通過鏈式求導法則,求出網(wǎng)絡模型中的每個參數(shù)的偏導數(shù)。
反向傳播算法中最基本的四個方程如下:
BP1 輸出層誤差:
BP2 第l 層誤差:
BP3 損失函數(shù)關于偏置的偏導:
BP4 損失函數(shù)關于權值的偏導:
其中,定義第l 層的第i 個神經元的誤差為L 對z的偏導。▽a為在ail處的梯度,為f 激活函數(shù),w 為權值,b 為偏置。反向傳播算法流程是根據(jù)四個基本方程進行總結的,具體流程如圖6 所示。
圖6 反向傳播算法流程
基于華為Matebook-X 筆記本電腦,使用Python 3.6 作為編程開發(fā)語言,系統(tǒng)的操作環(huán)境為Windows10,硬件開發(fā)環(huán)境為Intel i5 處理器,8GB 運行內存,CPU 為 Intel Core i5-7200U CPU @2.50GHz 2.71GHz,使用PyCharm 作為神經網(wǎng)絡開發(fā)框架。此次實驗是為了實現(xiàn)醫(yī)療數(shù)據(jù)的二分類,所用到的數(shù)據(jù)為球菌數(shù)據(jù),數(shù)據(jù)源醫(yī)療公共數(shù)據(jù)集。并用了兩種方法實現(xiàn)此二分類,一種人工神經網(wǎng)絡,一種線性邏輯回歸。
建立一個3 層人工神經網(wǎng)絡模型,輸入層中的神經元節(jié)點數(shù)目由輸入數(shù)據(jù)的維數(shù)決定,本實驗中有鏈球菌x1,因此輸入維度是2,輸入有兩個神經元節(jié)點組成。同理,輸出層中的神經元節(jié)點數(shù)由輸出的分類維度決定,本實驗中為病原體I(0)和病原體II(1),因此輸出層有兩個神經元組成。最后可以將此次實驗的人工神經網(wǎng)絡定義為如圖7 所示。
圖7 二分類3層人工神經網(wǎng)絡
本實驗中用到了3 個隱藏層,根據(jù)實際情況,我們可以增加隱藏層數(shù)和每一個隱藏層的節(jié)點數(shù),隱藏層越多,隱藏層節(jié)點越多,就能夠處理更加復雜的數(shù)據(jù)模型,但是代價開銷大:
(1)隱藏層越多,意味著網(wǎng)絡模型越大,參數(shù)越多,占用GPU 顯存越多;
(2)參數(shù)量越多,數(shù)據(jù)過擬合的可能性越大,網(wǎng)絡越有可能不穩(wěn)定,預測效果反而下降。
實驗結果如圖8、圖9 所示。
圖8 ANN二分類結果
圖9 線性邏輯回歸二分類結果
實驗結果分析:
圖8 ANN 二分類實驗結果中,錯誤分類的點較少,分類效果較好;圖9 線性邏輯回歸二分類實驗結果中,錯誤分類較多,分類效果較差。但是ANN 二分類仍然有一些錯誤分類的點,可能是隱藏層神經元節(jié)點數(shù)不夠合理,可以適當增加一點隱藏層神經元節(jié)點數(shù)。但是要注意增加節(jié)點數(shù)就會使得過擬合的可能性越高,經過代碼調試得知,當隱藏層數(shù)達到50 層時,過擬合現(xiàn)象就會很嚴重。本次實驗,兩種方法上對比分類結果可以看出,ANN 的二分類效果要比線性邏輯回歸的二分類效果更好。
本文通過對人工神經網(wǎng)絡核心算法的介紹,與傳統(tǒng)的線性邏輯回歸算法進行對比,人工神經網(wǎng)絡在處理二分類問題上更優(yōu)于線性邏輯回歸算法。雖然人工神經網(wǎng)絡應用非常廣泛,也相比傳統(tǒng)的算法在二分類問題上更加精確,但是人工神經網(wǎng)絡有關參數(shù)的計算量大,需要對數(shù)據(jù)和參數(shù)進行優(yōu)化。對未來人工神經網(wǎng)絡的發(fā)展和機器人在處理二分類問題上有著一定的幫助。