這是一個具有一層隱藏層的神經網路:
假設
- 輸入層有 3 個節點,輸入 X 中有 3 筆數據,其標籤為 Y:
X=12−12−3−1023,Y=12−3
W1=−1−1101−1
- 隱藏層有 2 個節點,隱藏層權重矩陣為 W1,線性組合 Z=XW1,
經過激活函數 σ 後的值為 K,即 K=σ(Z)
- 另激活函數 σ 為 Relu 函數, σ(x)=Relu(x)=max(x,0)
- 輸出層有 1 個節點,其權重矩陣為 W2,線性輸出 O=KW2
W2=[1−2]
- 將輸出值與標籤去計算損失,令損失為 J,假設使用加總型式的最小平方損失
J=∑(21(O−Y)2)
此時,已知輸出層梯度:
Gout=∂O∂J=O−Y
G2=∂W2∂J=∂O∂J∂W2∂O=((Gout)T⋅K)T=KTGout
σ′(x)={0x<01x≥0
- 先假定一個暫存的 Gtemp :
Gtemp=(Gout⋅W2T)∘σ′(Z)
其中的 ⋅ 代表一般的矩陣乘法、∘ 代表阿達瑪乘積,為對應位置的矩陣元素乘積
G1=∂W1∂J=∂O∂J∂K∂O∂Z∂K∂W1∂Z=(((Gout⋅W2T)∘σ′(Z))T⋅X)T=((Gtemp)T⋅X)T=XTGtemp
- 可用 G1,G2 梯度更新權重 W1,W2 的值,得到新權重 W1new,W2new,
假設我們採用隨機梯度下降法來進行更新,且學習率令為 0.1,則
{W1new=W1−0.1×G1W2new=W2−0.1×G2
問題
求矩陣 Z,K,O,Gout,G2,σ′(Z),Gtemp,G1,W1new,W2new
求解過程皆省略公式推導過程,將直接使用最終結果代入計算
Z
由線性組合 Z=XW1:
Z=XW1=12−12−3−1023⋅−1−1101−1=−3352−5−4
K
由經過激活函數 σ 後的值 K=σ(Z),且激活函數 σ 為 Relu 函數, σ(x)=Relu(x)=max(x,0):
K=σ(Z)=σ (−3352−5−4)=035200
O
輸出層有 1 個節點,其權重矩陣為 W2,由線性輸出 O=KW2:
O=KW2=035200⋅[1−2]=−435
Gout
由輸出層梯度 Gout=O−Y:
Gout=O−Y=−435−12−3=−518
G2
由隱藏層梯度 G2=KTGout,其中 KT 為 矩陣 K 的轉置:
K=035200,KT=[023050]
G2=KTGout=[023050]⋅−518=[43−10]
σ′(Z)
其中 σ′ 為 Relu 函數的微分式:
σ′(x)={0x<01x≥0
σ′(Z)=σ′(−3352−5−4)=011100
Gtemp
由假定暫存的 Gtemp=(Gout⋅W2T)∘σ′(Z)
其中的 ⋅ 代表一般的矩陣乘法、∘ 代表阿達瑪乘積,為對應位置的矩陣元素乘積,且 W2T 為矩陣 W2 的轉置:
W2=[1−2],W2T=[1−2]
Gtemp=(Gout⋅W2T)∘σ′(Z)=(−518⋅[1−2])∘011100=−51810−2−16∘011100=0181000
G1
由輸入層梯度 G1=XTGtemp,其中 XT 為 矩陣 X 的轉置:
X=12−12−3−1023,XT=1202−32−1−13,
G1=XTGtemp=1202−32−1−13⋅0181000=−6−112610200
W1new,W2new
- 可用 G1,G2 梯度更新權重 W1,W2 的值,得到新權重 W1new,W2new,
已知我們採用隨機梯度下降法來進行更新,且學習率為 0.1,則
{W1new=W1−0.1×G1W2new=W2−0.1×G2
W1new=W1−0.1×G1=−1−1101−1−0.1×−6−112610200=−1−1101−1−−0.6−1.12.6120=−0.40.1−1.6−1−1−1
W2new=W2−0.1×G2=[1−2]−0.1×[43−10]=−1−1101−1−[4.3−1]=[−3.3−1]