Stanford機器學習筆記-4. 神經網絡Neural Networks (part one)

4. Neural Networks (part one)

Content:html

  4. Neural Networks (part one) 算法

    4.1 Non-linear Classification.網絡

    4.2 Neural Model(神經元模型)機器學習

    4.3 Forward Propagationide

    4.4 神經網絡實現與或非門以及異或門函數

      4.4.1 實現與或非門(AND/OR/NOT) 學習

      4.4.2 實現異或/同或門(XOR/XNOR) spa

    4.5 Multi-class classification設計

key words: Neural networks, Neural model, Forward Propagationhtm

4.1 Non-linear Classification

對於非線性的分類問題(如圖4-1所示的非線性0-1分類問題),在特徵量較少的狀況,咱們能夠用多項式類型的Logistic迴歸來處理。可是一旦特徵量較多,多項式的Logistic迴歸就會很困難。由於若是問題原有n個特徵量,採用二次多項式特徵量個數約等於(n^2)/ 2,也就是O(n^2),而用三次多項式特徵量的個數更是O(n^3),等等。當n較大時(如n > 1000),計算機沒法承受這麼大的向量運算。因此須要一種新的模型(算法)來處理特徵量較大的非線性分類問題。

圖4-1 非線性0-1分類問題

那麼什麼問題會有較多的特徵量? 計算機視覺(Computer Vision)領域就經常會遇到。咱們知道,對於人類所看到的一張圖片,在計算機裏是以矩陣存儲的。如圖4-2所示,以要判別一張圖片是否爲汽車的問題爲例,咱們有一張像素爲50*50的圖片,即至少一共有2500個像素點()對於RGB的圖片有7500個),因此特徵量的個數n = 2500,若是用二次多項式預測,那麼特徵量個數將變成近3百萬!這樣計算代價太大了。下面將介紹一種新的模型-神經網絡(Neural Networks),能夠不須要經過增長特徵量個數來解決非線性分類問題(固然它在其餘問題也有應用)。

圖4-2 判斷一張圖片是否爲汽車

4.2 Neural Model(神經元模型)

神經網絡是一種模擬大腦的算法。一種較正規的定義是

神經網絡是由具備適應性的簡單單元組成的普遍並行互連的網絡,它的組織可以模擬生物神經系統對真實世界物體所做出的交互反應。

神經網絡中最基本的成分是神經元模型(Neural Model)(又稱Logistic unit),即上述定義中的「簡單單元」。對於人類而言,咱們的視覺聽覺是由大腦的神經中樞產生。而神經中樞是由大量的神經元相互鏈接而成。一個神經元經過樹突接受其餘神經元傳來的化學物質(信息),從而改變該神經元的電位,當電位到達某一闕值(threshold)時,該神經元被激活,即「興奮」起來,從而經過軸突向其餘神經元發送化學物質,如圖4-3所示。

 

圖4-3 生物神經系統中的神經元

而神經元模型即是模擬上述的神經元接受信息並傳遞信息的過程。如圖4-4所示,神經元接收來自n個其餘神經元傳遞過來的輸入信號,這些輸入信號經過帶權重的鏈接進行傳遞,神經元接收到的總輸入值將與神經元的闕值進行比較,再經過激活函數(activation function)處理以產生神經元的輸出。

圖4-4 從闕值角度理解的神經元模型

理想中的激活函數是圖4-5(a)所示的階躍函數,它將輸入值映射爲輸出值「0」或「1」, 「1」對應神經元興奮,「0」對應神經元抑制。可是,階躍函數具備不連續,不光滑(不連續可導)等不太好的性質,所以實際中經常使用Logistic迴歸中應用到的sigmoid函數做爲激活函數。典型的sigmoid函數如圖4-5(b)所示,它把可能在較大範圍內變化的輸入值擠壓到(0, 1)輸出值範圍內,所以有時又稱之爲「擠壓函數」(squashing function).

圖4-5 典型的神經元激活函數(圖片來自《機器學習》, 周志華)

圖4-6 從偏移單元角度理解的神經元模型

4.3 Forward Propagation

4.2節已經學習了神經網絡的最基本成分-神經元模型,下面將介紹如何用神經元搭建多層前饋神經網絡(multi-layer feedforward neural)Forward Propagation算法

如圖4-7所示,屢次前饋神經網絡有三部分組成,分別是輸入層(input layer),隱藏層(hide layer),輸出層(output layer)。隱藏層能夠有,也能夠沒有,輸入層和輸出層必需要有。沒有隱藏層的神經網絡是線性的,只能處理線性可分的問題(線性可分問題從二維的角度就是分界線是一條直線,多維就是存在線性超平面將其分類)。一個沒有隱藏層且輸出層只有一個單元的神經網絡就至關於線性的Logistic模型。

 

圖4-7 一個含兩層隱藏層的屢次前饋神經網絡

前向傳播(Forward Propagation)算法就是利用已經訓練出的鏈接權重(或稱映射權重)和4.2節神經元模型中的輸出公式(1)來計算出每一層每個神經元的激活值(activation),最終獲得輸出層的激活值,也就是輸出值.

圖4-8給出了在一個具體的神經網絡使用前向傳播算法的例子,其中,激活函數是sigmoid函數g(x);

 

圖4-8 一個使用前向傳播算法(向量實現)的例子

4.4 神經網絡實現與或非門以及異或門            

4.4.1 實現與或非門(AND/OR/NOT)             

4.4.2 實現異或/同或門(XOR/XNOR)

在4.4.1小節中發現,實現與或非門只須要輸入層和輸出層,不須要隱藏層,也就是說與或非問題是線性可分的。可是,異或/同或倒是非線性可分的,如圖4-9所示。

圖4-9 異或/同或問題

在數字邏輯中咱們知道能夠利用與或非門搭出異或/同或門,那是由於有以下運算法則,

a XOR b = ((NOT a) AND b) OR (a AND (NOT b));

a XNOR b = NOT (a XOR b) = (a AND b) OR ((NOT a) AND (NOT b))

既然咱們用神經網絡實現了與或非門,那麼也有理由能夠實現異或和同或門,圖4-10以實現同或門爲例(只需在同或門後加上一個非門實現了異或門)。

圖4-10 實現同或門

4.5 Multi-class classification

對於多分類問題,在2.6節已經用Logistic迴歸模型討論過了。如今用神經網絡來處理。假設咱們須要識別一張圖片是行人,汽車,摩托車,仍是卡車,也就是有4種類別。因此咱們設計如圖4-10所示的神經網絡。因爲一共有4類,因此該神經網絡有4個輸出單元,分別將其標號爲1,2,3,4,對應行人,汽車,摩托車,卡車。每次預測輸出的是一個4維向量。因此咱們的訓練集相比於Logistic迴歸模型要作改變,即每個樣例的結果y(i)也是一個4維向量且是[1 0 0 0 ]’, [0 1 0 0]’, [0 0 1 0]’, [0 0 0 1]’中的一個。至於預測時的結果分析和Logistic迴歸模型中使用的One-vs-all相似,再也不重複。僅給出例子以下:

  • 若h = [0.12 0.71 0.13 0.45]’,則就至關於[0 1 0 0]’,故爲第二個輸出單元的標記,也就是汽車;
  • 若h =[0.12 0.64 0.83 0.21]’, 則就至關於[0 1 1 0]’,此時咱們選擇置信度最大的,也就是max h = 0.83,即第三個輸出單元的標記,也就是摩托車。

無論怎樣,都是選擇向量中最大的一個元素的標記(下標),即matlab中的max(h, [], 2).

圖4-11 一個處理4分類問題的神經網絡

 

參考:

《機器學習》 周志華

相關文章
相關標籤/搜索