反向傳播的推導
阿新 • • 發佈:2018-09-24
矩陣 差分 part 誤差 img 網絡 line 函數 bubuko $l = \frac{1}{2}(y-\widehat{y})^2$($y$表示預期輸出)
$ l_{23} =\begin{equation}\left(\begin{array}{ccc} w_{11}&w_{12}\\w_{21}&w_{22}\\w_{31}&w_{32}\\w_{41}&w_{42} \end{array}\right)\left(\begin{array}{ccc}l_1\\l_2 \end{array}\right)\end{equation}$(省去$w$的上角標)
$\frac{\partial L}{\partial W^k}$(表示損失函數的值是如何根據權重矩陣變化的)
$L = \sum_{i=1}^{n}\frac{1}{2}(y-\widehat{y})^2$
$\frac{\partial L}{\partial W^k}=\frac{\partial }{\partial W^k}\frac{1}{2}(y-\widehat{y})^2$
$\frac{\partial L}{\partial W^k}=\frac{\partial L}{\partial \widehat{y}}·\frac{\partial \widehat{y}}{\partial z^{k+1}}·\frac{\partial z^{k+1}}{\partial W^k}$($y_i$為激活函數)
$\sigma(x) = \frac{1}{1+e^{-x}}$ $\sigma‘(x) = \sigma(x)(1-\sigma(x))$
$\frac{\partial L}{\partial W^k}=-(y-\widehat{y})·\frac{\partial }{\partial W^k}\sigma(z^{k+1})$
$\frac{\partial L}{\partial W^k}=-(y-\widehat{y})·\sigma(z^{k+1})(1-\sigma(z^{k+1}))·\frac{\partial }{\partial W^k}\sigma(z^{k+1})$
$\frac{\partial L}{\partial W^k}=-(y-\widehat{y})·\sigma(z^{k+1})(1-\sigma(z^{k+1}))·o^k$
$\frac{\partial L}{\partial W^k}=(o^k)^T·(-(y-\widehat{y})·\sigma(z^{k+1})(1-\sigma(z^{k+1})))$
推導過程
如圖中所示我們規定\(W_{ij}^k\)表示第k層與第k+1層之間神經元的權重值,\(z^k\)表示對應輸入第k層的值,\(o^k\)表示對應第k層輸出的值
定義損失函數為:
比如圖中第2層和第3層的誤差分配如下:
我們可以發現:此處的權重矩陣就是前向傳播的時候第2層所乘的矩陣的轉置矩陣,也就是\((w^k)^T\)
引出記號:
則損失函數改寫為:
暫時把\(\sum\)忽略可得:
又根據鏈式法則:
如果取激活函數為sigmoid函數可得其導函數為:
進一步改寫得:
依次倒推回去即可
註:以上圖的網絡為例,\(z^{k+1}=o^kW^k\)對\(W^k\)來說\(o^k\)就是斜率
反向傳播的推導