【paddle學習】識別數字

Softmax迴歸(Softmax Regression)

最簡單的Softmax迴歸模型是先將輸入層通過一個全鏈接層獲得的特徵,而後直接經過softmax 函數進行多分類git

輸入層的數據$X$傳到輸出層,在激活操做以前,會乘以相應的權重$W$,並加上偏置變量 $b$,具體以下:github

$ y_i = {softmax}(\sum_j W_{i,j}x_j + b_i)$網絡

其中 $ {softmax}(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}}$函數

 對於有 N 個類別的多分類問題,指定 N 個輸出節點,N 維結果向量通過softmax將歸一化爲 N 個[0,1]範圍內的實數值,分別表示該樣本屬於這 N 個類別的機率。此處的 $y_i$ 即對應該圖片爲數字 i 的預測機率。學習

在分類問題中,咱們通常採用交叉熵代價損失函數(cross entropy),公式以下:spa

$\text{crossentropy}(label, y) = -\sum_i label_ilog(y_i)$blog

多層感知器(Multilayer Perceptron, MLP)

Softmax迴歸模型採用了最簡單的兩層神經網絡,即只有輸入層和輸出層,所以其擬合能力有限。爲了達到更好的識別效果,咱們考慮在輸入層和輸出層中間加上若干個隱藏層教程

  1. 通過第一個隱藏層,能夠獲得 $H_1 = \phi(W_1X + b_1) $,其中$\phi$表明激活函數,常見的有sigmoid、tanh或ReLU等函數。
  2. 通過第二個隱藏層,能夠獲得 $H_2 = \phi(W_2H_1 + b_2) $
  3. 最後,再通過輸出層,獲得的$Y=\text{softmax}(W_3H_2 + b_3)$,即爲最後的分類結果向量。

 

卷積神經網絡(Convolutional Neural Network, CNN)

在多層感知器模型中,將圖像展開成一維向量輸入到網絡中,忽略了圖像的位置和結構信息,而卷積神經網絡可以更好的利用圖像的結構信息。LeNet-5是一個較簡單的卷積神經網絡。圖4顯示了其結構:輸入的二維圖像,先通過兩次卷積層到池化層,再通過全鏈接層,最後使用softmax分類做爲輸出層。下面咱們主要介紹卷積層和池化層。圖片

卷積層

卷積層是卷積神經網絡的核心基石。在圖像識別裏咱們提到的卷積是二維卷積,即離散二維濾波器(也稱做卷積核)與二維圖像作卷積操做,簡單的講是二維濾波器滑動到二維圖像上全部位置,並在每一個位置上與該像素點及其領域像素點作內積。卷積操做被普遍應用與圖像處理領域,不一樣卷積核能夠提取不一樣的特徵,例如邊沿、線性、角等特徵。在深層卷積神經網絡中,經過卷積操做能夠提取出圖像低級到複雜的特徵。ip

 輸入圖像大小爲H=5,W=5,D=3,即$5 \times 5$大小的3通道(RGB,也稱做深度)彩色圖像。這個示例圖中包含兩(用K表示)組卷積核,即圖中濾波器$W_0$和$W_1$。在卷積計算中,一般對不一樣的輸入通道採用不一樣的卷積核,如圖示例中每組卷積核包含(D=3)個$3 \times 3$(用$F \times F$表示)大小的卷積核。另外,這個示例中卷積核在圖像的水平方向(W方向)和垂直方向(H方向)的滑動步長爲2(用S表示);對輸入圖像周圍各填充1(用P表示)個0,即圖中輸入層原始數據爲藍色部分,灰色部分是進行了大小爲1的擴展,用0來進行擴展。通過卷積操做獲得輸出爲$3 \times 3 \times 2$(用$H_{o} \times W_{o} \times K$表示)大小的特徵圖,即$3 \times 3$大小的2通道特徵圖,其中$H_o$計算公式爲:$H_o = (H - F + 2 \times P)/S + 1,W_o$同理。 而輸出特徵圖中的每一個像素,是每組濾波器與輸入圖像每一個特徵圖的內積再求和,再加上偏置$b_o$,偏置一般對於每一個輸出特徵圖是共享的。

 

在卷積操做中卷積核是可學習的參數,通過上面示例介紹,每層卷積的參數大小爲$D \times F \times F \times K$。在多層感知器模型中,神經元一般是所有鏈接,參數較多。而卷積層的參數較少,這也是由卷積層的主要特性即局部鏈接和共享權重所決定。

  • 局部鏈接:每一個神經元僅與輸入神經元的一塊區域鏈接,這塊局部區域稱做感覺野(receptive field)。在圖像卷積操做中,即神經元在空間維度(spatial dimension,即上圖示例H和W所在的平面)是局部鏈接,但在深度上是所有鏈接。對於二維圖像自己而言,也是局部像素關聯較強。這種局部鏈接保證了學習後的過濾器可以對於局部的輸入特徵有最強的響應。局部鏈接的思想,也是受啓發於生物學裏面的視覺系統結構,視覺皮層的神經元就是局部接受信息的。

  • 權重共享:計算同一個深度切片的神經元時採用的濾波器是共享的。例如圖4中計算o[:,:,0]的每一個每一個神經元的濾波器均相同,都爲W_0,這樣能夠很大程度上減小參數。共享權重在必定程度上講是有意義的,例如圖片的底層邊緣特徵與特徵在圖中的具體位置無關。可是在一些場景中是無心的,好比輸入的圖片是人臉,眼睛和頭髮位於不一樣的位置,但願在不一樣的位置學到不一樣的特徵 (參考斯坦福大學公開課)。請注意權重只是對於同一深度切片的神經元是共享的,在卷積層,一般採用多組卷積核提取不一樣特徵,即對應不一樣深度切片的特徵,不一樣深度切片的神經元權重是不共享。另外,偏重對同一深度切片的全部神經元都是共享的。

經過介紹卷積計算過程及其特性,能夠看出卷積是線性操做,並具備平移不變性(shift-invariant),平移不變性即在圖像每一個位置執行相同的操做。卷積層的局部鏈接和權重共享使得須要學習的參數大大減少,這樣也有利於訓練較大卷積神經網絡。

池化層

池化是非線性下采樣的一種形式,主要做用是經過減小網絡的參數來減少計算量,而且可以在必定程度上控制過擬合。一般在卷積層的後面會加上一個池化層。池化包括最大池化、平均池化等。其中最大池化是用不重疊的矩形框將輸入層分紅不一樣的區域,對於每一個矩形框的數取最大值做爲輸出層,如圖6所示。

更詳細的關於卷積神經網絡的具體知識能夠參考斯坦福大學公開課圖像分類教程。

常見激活函數介紹

  • sigmoid激活函數: $f(x) = sigmoid(x) = \frac{1}{1+e^{-x}}$

  • tanh激活函數:$ f(x) = tanh(x) = \frac{e^x-e^{-x}}{e^x+e^{-x}}$

    實際上,tanh函數只是規模變化的sigmoid函數,將sigmoid函數值放大2倍以後再向下平移1個單位:$tanh(x) = 2sigmoid(2x) - 1$

  • ReLU激活函數: $f(x) = max(0, x)$

 更詳細的介紹請參考維基百科激活函數

相關文章
相關標籤/搜索