Back propagation

Back propagation是一種有效率算出LW¯¯\frac{\partial{L}}{\partial{\bar{\bar{W}}}} 來讓訓練Neural Network變得更有效率。

一個Neural Network裡可能有上百萬的參數(weights W¯¯\bar{\bar{W}}, biases b¯\bar{b}),在使用Gradient Descent作訓練時就會產生上百萬維的矩陣 LW¯¯\partial{L} \over \partial{\bar{\bar{W}}}Lb¯¯\partial{L} \over \partial{\bar{\bar{b}}},其中LL 是loss function,如下圖一所示:

圖一 Overview of Gradient Descent.

圖二.機器學習的Forward propagation and backward propagation 的示意圖。

圖二呈現機器學習的Forward propagation and backward propagation 示意圖,forward propagation指的是順向運算,意義上是機器

做出推論。backward propagation指的是逆向運算,意義上是學習,本質是調整機器的參數(w¯¯\bar{\bar{w}},b¯\bar{b})。其實,當Forward propagation 清楚定義後,Back propagation 也已經被決定。 Tensorflow會幫忙計算 Back propogation 中複雜的Lw¯\frac{\partial{L}}{\partial{\bar{w}}}

Back propagation立基於微積分的Chain rule,如下圖三所示:

圖三 Schematic of Chain Rule

考慮 yyxx的函數,而 zzyy 的函數,當xxΔx\Delta x 變化時,zz將有Δz\Delta z的變化。將zzxx微分的定義是:

zx=limΔx0ΔzΔx=zyyx=hg \begin{aligned} \frac{\partial z}{\partial x} = \mathop {\lim }\limits_{\Delta x \to 0}{\frac{\Delta z}{\Delta x}} = \frac{\partial z}{\partial y} \frac{\partial y}{\partial x} = h'g' \end{aligned}

先看下圖四的一個Neural Network,輸入K筆input data: x,

會得到K筆output data: y,而LkL_k是每一筆輸出output data與label data的距離。

Lk(w¯¯,b¯)=distance(y¯,y^)L_k(\bar{\bar{w}},\bar{b})=\textrm{distance}(\bar{y},\hat{y})

定義Loss function為每筆data 的L值總合。

L=k=1KLkL=\sum_{k=1}^K L_k

計算Loss function對其中一變數w偏微分時即是L值總合對變數w偏微分。

Lw=k=1kLkw\frac{\partial L}{\partial w}=\sum_{k=1}^k \frac{\partial L_k}{\partial w}

圖四 Neural Network, loss function, and weight gradient of loss function

以圖四中Loss 對w作偏微分為範例,其等於z對w作偏微分乘上Loss對z偏微分。其中z對w作偏微分稱作forward pass,Loss對z偏微分稱作backward pass。z 為activation function 的input。

圖五 Forward pass and backward pass of weight gradient Lw¯¯\frac{\partial L}{\partial \bar{\bar{w}}} computation

Forward Pass

先看forward pass: z對w作偏微分 如下圖五 z對w作偏微分即為input x

圖六 Elaboration on forward pass of Lw\frac{\partial L}{\partial w} computation

Backward pass

圖七. 深層神經網絡架構之訓練(deep neural network, DNN)。網絡層數為e\ell_e\ell層之神經元數為D=2D_\ell = 2,其神經元表示為x¯\bar{x}^\ell,激活函數為factf_{\mathrm act},渴望輸出(desired output)為y¯=[y1,y2]t\bar{y} = [y_1, y_2]^t

圖七顯示深層神經網絡架構之訓練。網絡層數為e\ell_e, 第\ell層神經元數為D=2D_\ell = 2,其神經元表示為x¯\bar{x}^\ell,激活函數為factf_{\mathrm act},渴望輸出(desired output)為y¯=[y1,y2]t\bar{y} = [y_1, y_2]^ttt為轉置操作。

圖八. 激活函數factf_{\mathrm act}與其導函數factf_{\mathrm act}'。此處激活函數選為sigmoid function。

圖八顯示激活函數factf_{\mathrm act}與其導函數factf_{\mathrm act}'。此處激活函數選為sigmoid function。

考慮第\ell層,此層輸入x¯1\bar{x}^{\ell-1}(為前一層神經元)與此層神經元x¯\bar{x}^\ell間之權重矩陣以及偏差表示為

W¯¯=[w11w12w21w22], b¯=[b1b2](1) \bar{\bar{W}}^\ell = \left[ \begin{matrix} w_{11}^\ell & w_{12}^\ell \\ w_{21}^\ell & w_{22}^\ell \end{matrix} \right], \ \bar{b}^\ell = \left[ \begin{matrix} b_1^\ell \\ b_2^\ell \end{matrix} \right] \pod{\text{1}}

激活函數輸入值z¯\bar{z}^\ell為第1\ell-1層神經元乘以權重矩陣之轉置加上偏差而得,即

z¯=W¯¯tx¯1+b¯=[z1z2]=[w11w21w12w22][x11x21]+[b1b2](2) \bar{z}^\ell = \bar{\bar{W}}^{\ell t} \bar{x}^{\ell - 1} + \bar{b}^\ell = \left[ \begin{matrix} z_1^\ell \\ z_2^\ell \end{matrix} \right] = \left[ \begin{matrix} w_{11}^\ell & w_{21}^\ell \\ w_{12}^\ell & w_{22}^\ell \end{matrix} \right] \left[ \begin{matrix} x_1^{\ell-1} \\ x_2^{\ell-1} \end{matrix} \right] + \left[ \begin{matrix} b_1^\ell \\ b_2^\ell \end{matrix} \right]\pod{\text{2}}

Backward pass所要求的目標是損耗函數LL對激活函數輸入值znz_n^\ell(n=1,2n = 1,2)的偏導數,此項目稱為error sensitivity,即

Lzn=Lxnxnzn=Lxnfact(zn)(3) \displaystyle \frac{\partial L}{\partial z_n^\ell} = \frac{\partial L}{\partial x_n^\ell} \frac{\partial x_n^\ell}{\partial z_n^\ell} = \frac{\partial L}{\partial x_n^\ell} f'_{\mathrm act}(z_n^\ell) \pod{\text{3}}

其中,由圖七可看出xn=fact(zn)x_n^\ell = f_{\mathrm act}(z_n^\ell)。而LL對神經元xnx_n^\ell的偏導數可再由+1\ell+1層的error sensitivity表達,即

Lxn=m=1D+1=2Lzm+1zm+1xn=m=1D+1=2Lzm+1wnm+1(4) \frac{\partial L}{\partial x_n^\ell} = \sum_{m = 1}^{D_{\ell+1} = 2} \frac{\partial L}{\partial z_m^{\ell+1}} \frac{\partial z_m^{\ell+1}}{\partial x_n^\ell} = \sum_{m = 1}^{D_{\ell+1} = 2} \frac{\partial L}{\partial z_m^{\ell+1}} w_{nm}^{\ell+1} \pod{\text{4}}

以第一層=1\ell= 1為例,網絡輸入x¯0\bar{x}^0(可視為第零層神經元)與第一層神經元x¯1\bar{x}^1間之權重矩陣以及偏差表示為

W¯¯1=[w111w121w211w221], b¯1=[b11b21](5) \bar{\bar{W}}^1 = \left[ \begin{matrix} w_{11}^1 & w_{12}^1 \\ w_{21}^1 & w_{22}^1 \end{matrix} \right], \ \bar{b}^1 = \left[ \begin{matrix} b_1^1 \\ b_2^1 \end{matrix} \right] \pod{\text{5}}

激活函數輸入z¯1\bar{z}^1為第零層神經元乘以權重矩陣之轉置加上偏差而得,即

z¯1=W¯¯1tx¯0+b¯1=[z11z21]=[w111w211w121w221][x10x20]+[b11b21](6) \bar{z}^1 = \bar{\bar{W}}^{1t} \bar{x}^0 + \bar{b}^1 = \left[ \begin{matrix} z_1^1 \\ z_2^1 \end{matrix} \right] = \left[ \begin{matrix} w_{11}^1 & w_{21}^1 \\ w_{12}^1 & w_{22}^1 \end{matrix} \right] \left[ \begin{matrix} x_1^0 \\ x_2^0 \end{matrix} \right] + \left[ \begin{matrix} b_1^1 \\ b_2^1 \end{matrix} \right]\pod{\text{6}}

損耗函數LL對激活函數輸入值z11z_1^1的偏導數為

Lz11=Lx11x11z11=Lx11fact(z11)(7) \displaystyle \frac{\partial L}{\partial z_1^1} = \frac{\partial L}{\partial x_1^1} \frac{\partial x_1^1}{\partial z_1^1} = \frac{\partial L}{\partial x_1^1} f_{\mathrm act}'(z_1^1) \pod{\text{7}}

其中

Lx11=z12x11Lz12+z22x11Lz22 \displaystyle \frac{\partial L}{\partial x_1^1} = \frac{\partial z_1^2}{\partial x_1^1} \frac{\partial L}{\partial z_1^2} +\frac{\partial z_2^2}{\partial x_1^1}\frac{\partial L}{\partial z_2^2}

Lx11=w112Lz12+w122Lz22(8) \frac{\partial L}{\partial x_1^1} = w_{11}^2 \frac{\partial L}{\partial z_1^2} + w_{12}^2 \frac{\partial L}{\partial z_2^2} \pod{\text{8}}

圖九. 第一層神經元x11x_1^1與第二層神經元之連結。

圖九顯示第一層神經元x11x_1^1與第二層神經元之連結。當LL要對x11x_1^1做偏微分時,依chain rule會先微至zn2z_n^2(n=1,2n = 1,2),得出error sensitivity,再參考圖九,得出(8)(8)

圖十.反向網絡。輸入為error sensitivity。網絡結構與圖九網絡相同,權重亦相同。

圖十顯示一反向網絡。輸入為error sensitivity。網絡結構與圖九網絡相同,權重亦相同。式(8)(8)可看成一個反向網絡如圖十,結構與權重均與原網絡相同,唯傳播方向相反。

最後,backpropagation的目標,LL對權重的偏導數,即為forward pass與backward pass兩者所得結果之乘積,

Lwnm=Lznznwnm(9) \frac{\partial L}{\partial w_{nm}^\ell} = \frac{\partial L}{\partial z_n^\ell} \frac{\partial z_n^\ell}{\partial w_{nm}^\ell} \pod{\text{9}}

results matching ""

    No results matching ""