1. 程式人生 > >從零開始搭建神經網路 (一) 基礎知識

從零開始搭建神經網路 (一) 基礎知識

1.什麼是人工神經網路

    神經網路起源於對生物神經元的研究,如下圖所示生物神經元包括細胞體,樹突,軸突等部分。其中樹突是用於接受輸入資訊,輸入資訊經過突觸處理,當達到一定條件時通過軸突傳出,此時神經元處於啟用狀態;反之沒有達到相應條件,則神經元處於抑制狀態。


    受到生物神經元的啟發,1943年心理學家McCulloch和數學家Pitts提出了人工神經元的概念,人工神經元又稱為感知機,如下圖所示。輸入經過加權和偏置後,由啟用函式處理後決定輸出。


    其中生物神經元和人工神經元對應關係如下:

    由大量的人工神經元互相連線而形成的複雜網路結構成為人工神經網路(Artificial Neural Network, ANN)

2.神經網路的相關概念

2.1 輸入層、隱含層,輸出層

    一般的神經網路包含以下幾個部分,輸入層,隱含層和輸出層。下圖是含有一個隱層的神經網路,隱層的層數越多,隱層結點數目越多,在非線性的啟用函式下,神經網路就可以學習更深層次的特徵。


2.2 啟用函式

    啟用函式是神經網路設計的核心單元,啟用函式是用來加入非線性因素的,因為線性模型的表達能力不夠。啟用函式需要滿足一下幾個條件:

1.非線性。如果啟用函式是線性的,那麼不管引入多少隱層,其效果和單層感知機沒有任何差別。

2.可微性。訓練網路時使用的基於梯度的優化方法需要啟用函式必須可微。

3.單調性。單調性保證了神經網路模型簡單。

幾種常用的啟用函式可以參考:

點選開啟連結

2.3 權重和偏置

    

    如上圖所示,假設神經元輸入是X = [x1,x2,x3],權重為w,偏置為b, 那麼其輸出為:


    可以看出,w,b會影響感知機的輸出結果,正是因為此神經網路在迭代過程中修改的是權重w和偏置b。更細緻的講解可以參考:點選開啟連結

2.4 損失函式

    損失函式(loss function)也叫代價函式(cost function)。是神經網路優化的目標函式,神經網路訓練或者優化的過程就是最小化損失函式的過程(損失函式值小了,對應預測的結果和真實結果的值就越接近)。損失函式也有很多種,拿常用的交叉熵損失函式舉例,其單個樣本二分類的損失函式公式如下:



當期望輸出為1時,,此時希望損失函式儘量的小,那麼就要接近1;

當期望輸出為0時,,此時希望損失函式儘量的小,那麼就要接近0。

對於m樣本的損失函式可以使用:


其他的損失函式可以參考:點選開啟連結

2.5 反向傳播(Back Propagation,BP)演算法

BP演算法分為正向傳播和誤差的反向傳播兩個部分。
       正向正向傳播時,輸入樣本從輸入層進入網路,經隱層逐層傳遞至輸出層,如果輸出層的實際輸出與期望輸出(導師訊號)不同,則轉至誤差反向傳播;如果輸出層的實際輸出與期望輸出(導師訊號)相同,結束學習演算法。反向
       反向反向傳播時,將輸出誤差(期望輸出與實際輸出之差)按原通路反傳計算,通過隱層反向,直至輸入層,在反傳過程中將誤差分攤給各層的各個單元,獲得各層各單元的誤差訊號,並將其作為修正各單元權值的根據。這一計算過程使用梯度下降法完成,在不停地調整各層神經元的權值和閾值後,使誤差訊號減小到最低限度。
       權值和閾值不斷調整的過程,就是網路的學習與訓練過程,經過訊號正向傳播與誤差反向傳播,權值和閾值的調整反覆進行,一直進行到預先設定的學習訓練次數,或輸出誤差減小到允許的程度。

如圖所示,其中藍色為正向傳播,紅色為反向傳播,反向傳播的導數為損失函式對各變數求導。