1. 程式人生 > >從感知機到人工神經網路

從感知機到人工神經網路

感知機演算法

感知機(Perceptron)演算法是一種很好的二分類線上演算法,它要求是線性可分的模型,感知機對應於在輸入的空間中將例項劃分成正負樣本,分離它們的是分離超平面,即判別的模型。

如下圖所示:可用一個決策邊界w*x+b將正負樣本進行區分。其中w為權重,b為偏置項。(w*x1+b)>0被分為正樣本,否則為負樣本。

來源:統計學習方法
來源:統計學習方法

感知機學習策略

假定要本線性可分,感知機的學習目標就是求的能將正負要本完全正確分開的分離超平面,即要尋找w,b,因此要確定一個學習策略,即定義損失函式並使其最小化。而感知機所採用的損失函式為所有誤分點到超平面的距離

L(w,b)
=xiMyi(wxi+b)

推到過程如下:

這裡寫圖片描述

當沒有誤分點是,L(w,b)=0,表示沒有損失,而且誤分點越少,誤分點離超平面越近,其損失越小。感知機的學習策略就是選擇(w,b)使得損失函式最小。

感知機學習演算法

感知機的學習演算法也就是對損失函式L(w,b)進行求解的過程。

minw,bL(w,b)=xiMyi(wxi+b)
感知機演算法是由誤分類點驅動的,採用隨機梯度下降法進行求解,過程如下圖所示:

這裡寫圖片描述

從上述學習過程中,我們可以看到,感知機學習出來的超平面w*x+b並不是唯一的,其由於選擇了

1.不同的初值
2.在訓練中是隨機的選擇一個誤分類點進行更新w,b

因此,其解的w,b結果並不唯一,熟悉SVM的可能會知道,其解是唯一的。
線上性可分的時候,感知機是收斂的,具體的證明過程可以參考<統計學習方法>,如果是不可分的,感知機是不收斂的,迭代的結果會發生震盪。

感知機學習演算法的對偶形式

其實感知機學習演算法的對偶形式也很簡單,因為在原始的問題中我們對w,b進行反覆的修改,加上修改了n次,則最後學習到的w,b可以表示為:

這裡寫圖片描述

原始問題中通過學習w,b使其收斂,對偶問題輸出的結果是alpha,b,演算法過程如下:

這裡寫圖片描述
來源:統計學習方法

感知機的缺點

感知機是線性的模型,其不能表達複雜的函式,不能出來線性不可分的問題,其連異或問題(XOR)都無法解決,因為異或問題是線性不可分的,怎樣解決這個問題呢,通常有兩種做法。
其一:用更多的感知機去進行學習,這也就是人工神經網路的由來。
其二:用非線性模型,核技巧,如SVM進行處理。

下面將對人工神經網路進行介紹。

人工神經網路

如下圖所示一個典型的神經網路:

這裡寫圖片描述

一個神經網路有許多小的感知器組成。

這裡寫圖片描述

z為一個簡單的線性分類器,g(z)為對其加上啟用函式(Active function)。

神經網路啟用函式

啟用函式也叫傳遞函式,它有許多的種類如下圖所示:

這裡寫圖片描述
上圖分別為sigmoid,tanh,relu,leaky relu,其中在人工神經網路中常用的是sigmoid函式,卷積神經網路中常用的是relu.

為什麼需要激勵函式?
簡單的來說有兩個原因:

  1. 讓不讓當前的訊號傳遞過去,或者以多大的訊號傳遞過去
  2. 使其變成非線性

我們不能將所有的訊號都傳遞到下一層,因此要有選擇的進行傳遞,即激勵函式可以做到這一點。同時如果不加激勵函式,直接讓訊號過去,那麼相當於線性分類器,並沒有改變分類器的本質。

神經網路如何處理線性不可分問題

如下圖所示,一個異或問題,單純的用感知機是不能解決的,因為在平面中我們找不到一條直線將其區分,但是我們可以組合兩個感知機,然後去他們的交集,從而可以完美的解決這個問題。

這裡寫圖片描述

神經網路過擬合問題

神經網路的表達能力是非常強大的,只有給予足夠多的神經元,通常其都面臨著過擬合的問題。

這裡寫圖片描述

因此,過多的隱含層和神經元的節點,會帶來過擬合的問題。同常來說不應該通過降低神經網路的引數量來減少過擬合,可以用正則化項對其進行懲罰或者時通過dropout進行一部分神經元的隨機失活

神經網路BP演算法

反向傳播演算法(Back Propagation)分二步進行,即正向傳播和反向傳播。這兩個過程簡述如下:

1.正向傳播

輸入的樣本從輸入層經過隱單元一層一層進行處理,傳向輸出層;在逐層處理的過程中。在輸出層把當前輸出和期望輸出進行比較,如果現行輸出不等於期望輸出,則進入反向傳播過程。

2.反向傳播

反向傳播時,把誤差訊號按原來正向傳播的通路反向傳回,逐層修改連線權值,以望代價函式趨向最小。

誤差推導過程:

這裡寫圖片描述

這裡寫圖片描述

演算法過程如下:

這裡寫圖片描述
來源:機器學習

標準BP演算法,累計BP演算法

從上述的推導計演算法可以看出其實基於一個訓練要本給出的更新權值的過程,其被稱為標準bp演算法,如果類似的基於累積誤差最小化的更新原則,得到的是累積的更新演算法,即累積BP演算法。

一般來說,標準的BP演算法每次更新只針對於單個樣例,引數更新較為頻繁,同時他還有可能出現對不同樣例更新出現“抵消”現象,因此其往往需要更多次數的迭代,累積BP演算法直接針對累積誤差最小化,它將完整訓練集讀取一遍後才進行引數的更新,其引數頻率更新的低得多,但是其累積誤差下降到一定的程式後,進一步的下降會非常的緩慢,這是標準BP往往會更快得到較好的解,尤其是在訓練集較大的時候。

人工神經網路的特點

這裡寫圖片描述
這裡寫圖片描述
來源:資料探勘導論

參考資料
1.《統計學習方法》 李航
2.《機器學習》 周志華
3. 《資料探勘導論》Pang-Ning Tan
4. 部分圖片來源七月線上的視訊