1. 程式人生 > >機器學習筆記(參考吳恩達機器學習視訊筆記)07_神經網路介紹

機器學習筆記(參考吳恩達機器學習視訊筆記)07_神經網路介紹

7 神經網路介紹

當特徵太多時,無論是線性迴歸還是邏輯迴歸模型計算的負荷會非常大。這時需要神經網路。神經網路是一種很古老的演算法,它最初產生的目的是製造能模擬大腦的機器。神經網路是計算量有些偏大的演算法。然而大概由於近些年計算機的執行速度變快,才足以真正執行起大規模的神經網路。

類似於神經元的神經網路,效果如下:

其中,是輸入單元(input units),將原始資料輸入給它們。是中間單元,它們負責將資料進行處理,然後呈遞到下一層。最後是輸出單元,它負責計算。第一層成為輸入層( Input Layer),最後一層稱為輸出層(Output Layer),中間一層成為隱藏層(Hidden Layers)。

代表第j層的第i個啟用單元。代表第j層對映到第j+1層時的權重的矩陣,例如代表從第一層對映到第二層的權重的矩陣。其尺寸為:以第j+1層的啟用單元數量為行數,以第j層的啟用單元數加一為列數的矩陣。例如:的尺寸為3*4。

對於上圖所示的模型,啟用單元和輸出分別表達為:

   

   

   

   

每一個a都是由上一層所有的x和每一個x所對應的決定的,這種從左到右的演算法稱為前向傳播演算法(FORWARD PROPAGATION)。

可以看成更為高階的特徵值,即

的進化體,它們由x決定,因為是梯度下降的,所以a是變化的,並且變得越來越厲害,這些更高階的特徵值遠比僅僅將x次方厲害,也能更好的預測新資料。這就是神經網路相比於邏輯迴歸和線性迴歸的優勢。

可以認為第二層中的特徵是神經網路通過學習後自己得出的一系列用於預測輸出變數的新特徵。

神經網路中,單層神經元(無中間層)的計算可用來表示邏輯運算,比如邏輯與(AND)、邏輯或(OR)。

AND函式示例如下:

OR函式示例如下:

當輸入特徵為布林值(0或1)時,用一個單一的啟用層可以作為二元邏輯運算子,只需要選擇不同的權重即可。

邏輯運算的表示方式如下圖所示:

可以用神經元來組合成複雜的神經網路來實現複雜的運算。實現(XNOR)功能(輸入的兩個值必須一樣,均為1或均為0)即:

XNOR=()OR( (NOT)AND(NOT) )

首先構造一個表達(NOT)AND(NOT)部分的神經元:

然後將表示 AND 的神經元和表示(NOT)AND(NOT )的神經元以及表示 OR 的神經元進行組合就能實現XNOR運算子的功能:

針對多類分類問題,例如:訓練一個神經網路演算法來識別路人、汽車、摩托車和卡車,在輸出層應該有4個值。第一個值為 1 或 0 用於預測是否是行人,第二個值用於判斷是否為汽車,依次類推。神經網路的結構示意圖如下: