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所示的非線性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 判斷一張圖片是否爲汽車
神經網絡是一種模擬大腦的算法。一種較正規的定義是
神經網絡是由具備適應性的簡單單元組成的普遍並行互連的網絡,它的組織可以模擬生物神經系統對真實世界物體所做出的交互反應。
神經網絡中最基本的成分是神經元模型(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.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.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 實現同或門
對於多分類問題,在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相似,再也不重複。僅給出例子以下:
無論怎樣,都是選擇向量中最大的一個元素的標記(下標),即matlab中的max(h, [], 2).
圖4-11 一個處理4分類問題的神經網絡
參考: