Back-propagation

เป้าหมายของ backpropagation คือการหาค่า partial derivative \( \large \frac{\partial C}{\partial w} \) และ \( \large \frac{\partial C}{\partial b} \) สำหรับ cost function (C)  เทียบกับทุก weight และ bias ใน Neural Network

Cost function ถูก define ด้วย

\(\large C = \frac{1}{2n}\sum_{}^{x}\parallel y(x) - a^L(x)\parallel ^2 \dashrightarrow(1) \)


เมื่อ
n  คือ จำนวน training sample
y, y(x) คือ output ใน training sample
L คือ จำนวน Layer ใน network
\( a^L \) หรือ \( a^L(x) \) คือ vector ของ activated output เมื่อ input คือ x

Assumption 1 :

\(\large C = \frac{1}{n}\sum_{}^xC_x\dashrightarrow(2) \)

เมื่อ
\( C_x\) คือ Cost function ของแต่ละ input x (individual input x)

และ
\(\large C_x  = \frac{1}{2}\parallel y - a^L \parallel ^2 \dashrightarrow(3) \)


เหตุเพราะการหาค่า partial derivative ของ Cost function นั้นต้องคำนวณไปทีละครั้งเมื่อมี x input เข้ามา \( \large \frac{\partial C_x}{\partial w}\) และ \( \large \frac{\partial C_x}{\partial b}\) แล้วจึงค่อยไปหาค่า Cost function ของ network จากค่าเฉลี่ยอีกที

Assumption 2 :

\(\large C = \frac{1}{2}\sum_{}^j(y_j - a_j^L)^2\dashrightarrow(4) \)



สมการที่เกี่ยวข้องใน backpropagation

1. สมการสำหรับ error ที่ output layer (\( \large \delta^L\))

 \( \large \delta_j ^L =  \frac{\partial C}{\partial a_j^L} \sigma^ \prime(z_j^L) \dashrightarrow(5) \)

สมการนี้มีสอง Term ให้พิจารณา คือ
1) \( \large \frac{\partial C}{\partial a_j ^L}\) บอกถึงความเร็วในการเปลี่ยนแปลงของ C เทียบการเปลี่ยนแปลงของ \( a_j ^L \) หากค่าของ C ไม่ค่อยมีความสัมพันธ์กับ \( a_j ^L \) แล้ว \(\delta_j ^L \) จะมีค่าน้อย

2) \( \large \sigma^ \prime (z_j ^L)\) บอกถึงอัตราเร็วของการเปลี่ยนแปลงของ activation function เทียบกับอัตราการเปลี่ยแปลงของ  \( z_j ^L\)

หากกำหนด cost function แบบ (3) จะได้
\( \large \frac{\partial C}{\partial a_j^L} = y - a_j^L\)

สมการ (5) สามารถเขียนในรูปของ Matrix operation ได้ คือ

\(\large \delta ^L = \triangledown_aC\circledcirc\sigma^\prime(z^L)\dashrightarrow(6)\)

โดย \( \large \triangledown_a C \) คือ gradient vector ที่มี element เป็น \( \large \frac{\partial C}{\partial a_j ^L}\) ใช้บอกถึงการเปลี่ยนแปลงของ C เทียบกับการเปลี่ยนแปลงของ activated output และเนื่องจากการใช้สมการ quadratic สำหรับ cost function นำมาแทนค่า \( \large \triangledown _a C\) ด้วย \( \large y - a_j \) แล้วจะได้ สมการที่ (6) ในรุปแบบของ matrix  คือ

\( \large \delta ^L = (y - a^L)\circledcirc\sigma^\prime(z^L)\dashrightarrow(7)\)


\( \circledcirc \) เรียกว่า "Hadamard Product"  คือการการคูณ matrix ที่มีมิติเหมือนกันแบบ element ต่อ element เช่น
 \(\large \begin{bmatrix}a & b \\c & d \end{bmatrix} \circledcirc \begin{bmatrix}i & j \\k & l \end{bmatrix} = \begin{bmatrix}ai & bj \\ck & dl \end{bmatrix} \)

2 สมการสำหรับ  error ที่ layer \( l^{th}\) (\( \delta^l\))

\( \large \delta^l = (w^{l+1})^T \delta^{l+1} \circledcirc \sigma ^ \prime(z^l)\dashrightarrow(8)\)


ในการดำเนินการเราจะเริ่มจากการหาค่า \(\large \delta^L \) ตามสมการ (7) จากนั้นหาค่า \(\large \delta ^{L-1} \) ด้วยสมการที่ (8) และ \(\large \delta ^{L-2} \) ด้วยสมการที่ (8)  อีกครั้งไปเรื่อย ๆจนถึง input layer

3 สมการคำนวณค่าการเปลี่ยนแปลงของ cost function เทียบกับ bias 

\(\large \delta ^l_j =  \frac{\partial C}{\partial b_j^l}  \dashrightarrow(9)\)


4. สมการคำนวณค่าการเปลี่ยนแปลงของ cost function เทียบกับ weight 

\( \large \frac{\partial C}{\partial w_{jk}^l} = a_k ^{l-1}\delta_j^l \dashrightarrow(10)\)



Algorithm

1. เตรียม training sample data set
2. แต่ละชุดของ training sample data set คำนวณหา corresponding activation \(\large  a_x\) ตามขั้นตอน
     2.1 Feed forward :  สำหรับ layer  l = 2,3,4,..,L

\( \large z^{x,l} = w^{l}a^{x,l-1} + b^i\)
และ \(\large a^{x,l} = \sigma(z^{x,l})\)

     2.2  หา Output error : ในรูปแบบ vector

\(\large \delta ^{x,L} = \triangledown_aC_x \circledcirc \sigma^\prime(z^{x,L}) \)


     2.3  หา Back-propagate  the error :  ของแต่ละ layer l = L-1, L-2, L-3,..,2

\( \large \delta^{x,l} = ((w^{l+1})^T \delta^{x,l+1}) \circledcirc \sigma^\prime(z^{x,l})\)

3. Gradient descent : แต่ละ layer l = L, L-1, L-2,...,2  ปรับค่าของ weight และ bias

\( \large w^l \rightarrow w^l - \frac{\eta}{m}\sum_{}^x \delta^{x,l}(a^{x,l})^T \)

\(b^l \rightarrow b^l - \frac{\eta}{m}\sum_{}^x \delta^{x,l}\)














ความคิดเห็น