เป้าหมายของ 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 ด้วย
เมื่อ
n คือ จำนวน training sample
y, y(x) คือ output ใน training sample
L คือ จำนวน Layer ใน network
\( a^L \) หรือ \( a^L(x) \) คือ vector ของ activated output เมื่อ input คือ x
Assumption 1 :
เมื่อ
\( C_x\) คือ Cost function ของแต่ละ input x (individual input x)
และ
เหตุเพราะการหาค่า 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 :
สมการที่เกี่ยวข้องใน backpropagation
1. สมการสำหรับ error ที่ output layer (\( \large \delta^L\))
สมการนี้มีสอง 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 \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 คือ
2 สมการสำหรับ error ที่ layer \( l^{th}\) (\( \delta^l\))
ในการดำเนินการเราจะเริ่มจากการหาค่า \(\large \delta^L \) ตามสมการ (7) จากนั้นหาค่า \(\large \delta ^{L-1} \) ด้วยสมการที่ (8) และ \(\large \delta ^{L-2} \) ด้วยสมการที่ (8) อีกครั้งไปเรื่อย ๆจนถึง input layer
3 สมการคำนวณค่าการเปลี่ยนแปลงของ cost function เทียบกับ bias
4. สมการคำนวณค่าการเปลี่ยนแปลงของ cost function เทียบกับ weight
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
2.2 หา Output error : ในรูปแบบ vector
2.3 หา Back-propagate the error : ของแต่ละ layer l = L-1, L-2, L-3,..,2
3. Gradient descent : แต่ละ layer l = L, L-1, L-2,...,2 ปรับค่าของ weight และ bias
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)\)
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}\)
\(b^l \rightarrow b^l - \frac{\eta}{m}\sum_{}^x \delta^{x,l}\)
ความคิดเห็น
แสดงความคิดเห็น