提出問題
有如下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) Sigmoid(Z1)=>A1(8×1) W2(3×8)×A1(8×1)+B2(3×1)=>Z2(3×1) Softmax(Z2)=>A2(3×1)
損失函數
使用多分類交叉熵損失函數:
J(w,b)=−m1i=1∑mj=1∑nyijln(aij)
m爲樣本數,n爲類別數。
可以簡寫爲:
J=−YlnA
反向傳播
∂A2∂J∂Z2∂A2=A2−Y=>dZ2
雖然這個求導結果和二分類一樣,但是過程截然不同,詳情請看6.4。
後續的梯度求解與9.1節一樣,只拷貝結論在這裏:
dW2=dZ2×A1T(2)
dB2=dZ2(3)
W2T×dZ2⊙A1⊙(1−A1)=>dZ1(4)
dW1=dZ1⋅XT(5)
dB1=dZ1(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