1.MLP/ANN

乐池發表於2024-03-13

1.多層感知機(MLP)原理簡介

多層感知機(MLP,Multilayer Perceptron)也叫人工神經網路(ANN,Artificial Neural Network),除了輸入輸出層,它中間可以有多個隱層,最簡單的MLP只含一個隱層,即三層的結構,如下圖

1.MLP/ANN

從上圖可以看到,多層感知機層與層之間是全連線的。多層感知機最底層是輸入層,中間是隱藏層,最後是輸出層。

2.手寫數字識別示例

2.1 結構

1.MLP/ANN

對28*28=784解析度的影像進行數字影像識別,每一個畫素點上的字跡亮度可以用[0,1]表示,將其展開成為一列
在這個網路中,我們選擇加入兩個隱藏層,每一層是16個神經元,

2.2 層次

神經網路運作的時候,上一層的啟用值決定下一層的啟用值,所以神經網路處理資訊的核心機制就是一層的啟用值是如何算出下一層的啟用值的

理想情況下,我們希望倒數第二層的每一個神經元對應一個筆劃部件

1.MLP/ANN

這樣,神經網路只需學習哪些部件能組成什麼數字就行

1.MLP/ANN

可以繼續分,再上一層的神經元可以是各個短邊

2.3 計算

如果想識別某塊區域是否存在影像,可以給那塊區域每個方塊賦權為1,其他為0,這樣就只會累加我們關注區域的畫素值
如果想識別這塊區域是否存在邊,可以給周圍一圈的畫素賦權為負數。這樣當中間的畫素亮,周圍的畫素暗,這樣累計加權值就會最大

這樣加權計算出的資料可以是任意大小,但是我們需要啟用值落在[0,1]區間
這裡可以使用sigmoid函式

1.MLP/ANN

可能有時即使加權值>0時也不想將神經元點亮,可能只有值>10時點亮才有意義,這時候可以增加bias,即偏置項。我們只需在加權值後面-10

\[{sigmoid}(w_1a_1+w_2a_2+w_3a_3+\cdots+w_na_n-10) \]

即權重告訴你第二層的神經元關注什麼樣的畫素圖案,偏置則告訴你加權和得有多大,神經元的激發才有意義。

我們可以用向量表示計算過程,更加簡潔

1.MLP/ANN

對於這樣的一個全連線神經網路,共有13002個引數

1.MLP/ANN

其實整個神經網路就是一個函式,一個輸入784個值,輸出10個值的函式

2.4 改進/ReLU

ReLU即線性整流函式,早期使用sigmoid函式啟用神經元,現在發現使用ReLU在較深的神經網路上計算效果更好

\[ReLU(a)=\max(0,a) \]

1.MLP/ANN

3. 參考

1.深度學習之神經網路的結構 Part 1 ver 2.0

2.多層感知機(MLP)簡介