深度學習基礎之-5.2非線性分類-多分類

提出問題

有如下1000個樣本和標籤:

樣本序號 1 2 3 1000
x1 0.0091867 0.10245588 -0.41033773 -0.20625644
x2 0.00666677 0.20947882 0.18172314 0.19683694
y 1 2 3 2

還好這個數據只有兩個特徵,所以我們可以用可視化的方法展示,如下圖:
在這裏插入圖片描述

定義神經網絡結構

在這裏插入圖片描述

  • 輸入層兩個特徵值x1, x2
  • 隱層8x2的權重矩陣和8x1的偏移矩陣
  • 隱層由8個神經元構成
  • 輸出層有3個神經元負責3分類,使用Softmax函數進行分類

前向計算

在這裏插入圖片描述
單樣本矩陣運算過程: W1(8×2)X(2×1)+B1(8×1)=>Z1(8×1)W_1^{(8 \times 2)} \cdot X^{(2 \times 1)} + B_1^{(8 \times 1)} => Z_1^{(8 \times 1)} Sigmoid(Z1)=>A1(8×1)Sigmoid(Z1) => A_1^{(8 \times 1)} W2(3×8)×A1(8×1)+B2(3×1)=>Z2(3×1)W_2^{(3 \times 8)} \times A_1^{(8 \times 1)} + B_2^{(3 \times 1)} => Z_2^{(3 \times 1)} Softmax(Z2)=>A2(3×1)Softmax(Z2) => A_2^{(3 \times 1)}

損失函數

使用多分類交叉熵損失函數:

J(w,b)=1mi=1mj=1nyijln(aij) J(w,b) = -{1 \over m} \sum^m_{i=1} \sum^n_{j=1} y_{ij} \ln (a_{ij})

m爲樣本數,n爲類別數。

可以簡寫爲:

J=YlnA J = -Y \ln A

反向傳播

在這裏插入圖片描述
JA2A2Z2=A2Y=>dZ2\frac{\partial{J}}{\partial{A2}} \frac{\partial{A2}}{\partial{Z2}} = A2-Y => dZ2

雖然這個求導結果和二分類一樣,但是過程截然不同,詳情請看6.4。

後續的梯度求解與9.1節一樣,只拷貝結論在這裏:

(2)dW2=dZ2×A1TdW2=dZ2 \times A1^T \tag{2}

(3)dB2=dZ2dB2=dZ2 \tag{3}

(4)W2T×dZ2A1(1A1)=>dZ1W2^T \times dZ2 \odot A1 \odot (1-A1) => dZ1 \tag{4}

(5)dW1=dZ1XTdW1= dZ1 \cdot X^T \tag{5}

(6)dB1=dZ1dB1= dZ1 \tag{6}
迭代了10000次,沒有到底損失函數小於0.06的條件。
分類結果圖示:
在這裏插入圖片描述

多分類的工作原理

使用以下參數測試:

  • eta = 0.1
  • batch_size = 10
  • n_hidden = 3
  • eps = 0.005

如果隱層只使用2個神經元,只能得到近似的線性結果,如下圖:
在這裏插入圖片描述
所以,隱層必須用3個神經元以上。以下是結果:

多分類損失函數值 分類結果(待優化)
在這裏插入圖片描述 在這裏插入圖片描述

https://github.com/microsoft/ai-edu/blob/master/B-教學案例與實踐/B6-神經網絡基本原理簡明教程/11.2-理解多分類的工作原理.md
https://github.com/microsoft/ai-edu/blob/master/B-教學案例與實踐/B6-神經網絡基本原理簡明教程/11.1-非線性多分類.md

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章