4. Neural Networks (part one)
Content:
4. Neural Networks (part one)
4.1 Non-linear Classification.
4.2 Neural Model(神經元模型)
4.3 Forward Propagation
4.4 神經網絡實現與或非門以及異或門
4.4.1 實現與或非門(AND/OR/NOT)
4.4.2 實現異或/同或門(XOR/XNOR)
4.5 Multi-class classification
key words: Neural networks, Neural model, Forward Propagation
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分類問題的神經網絡
參考: