Back-propagation Algorithm with NumPy

Sopajaree J
3 min readAug 26, 2020

--

ขั้นตอนการทำงานของ Back Propagation Algorithm หรืออัลกอริทึมการย้อนกลับ (Backward) ซึ่งใช้สำหรับการฝึกโครงข่ายประสาทเทียมเพื่อให้เกิดการรู้จำประสบการณ์ ปรับ Parameters (Weight และ Bias) ของ Model เพื่อให้เข้าใจได้ง่ายที่สุด ผู้เขียนจึงได้ลดความซับซ้อนของ Model โดยใช้ Perceptron Neural Network

Perceptron (P)

เป็น Neural Network อย่างง่าย จำลองเหมือนเซลล์ประสาทของคน

Forward Propagation

จากภาพ เราจะเห็นโหนดสีฟ้าเราเรียกว่า “Input Node” มีจำนวน 2 เซลล์เป็น Input Layer แต่เนื่องจาก Input Layer ของ Neural Network ก็คือ Input Data ที่เป็นข้อมูลแบบ Scalar, Vector หรือ Matrix ไม่ใช่ Function เหมือนกับ Node ต่างๆ ใน Layer อื่น ตามธรรมเนียมมันจึงไม่ถูกนับเป็น 1 Layer

ส่วนโหนดสีเหลืองและโหนดสีน้ำตาลเรียกว่า “Output Node” เป็น Output Layer โดยโหนดสีเหลืองมีการนำ Weight(W) ที่เกิดจากการสุ่มในช่วงเริ่มต้นของการ Train คูณกับ Input Data แล้วนำผลลัพธ์จากการคูณมาบวกกับ Bias (B) ซึ่งเกิดจากการสุ่มในช่วงเริ่มต้นเหมือนกัน

เราคำนวณ Z ได้ดังนี้

Activate Function

จะทำให้ค่านอยู่ในช่วง 0–1 ซึ่งเราเรียกฟังก์ชันสำหรับการปรับค่าอย่างนี้ว่า Activate Function

ดังนั้นผลลัพธ์สุดท้ายที่เป็นค่าที่ Model ทำนายออกมาได้ หรือ ŷ จะเท่ากับ Sigmoid(z)

Loss Function

ขั้นตอนสุดท้ายของการทำ Forward Propagation คือการประเมินว่าผลการ Predict คลาดเคลื่อนกับ Output y มากน้อยเพียงใด

สมมติว่า y เท่ากับ 0.7 และ L คือ MSE ดังนั้น L จะมีค่าเท่ากับ 0.0123

Back-propagation

-นิยาม Neural Network Model ที่ไม่ใส่ Bias

-กำหนดค่า x,y

-สร้าง nn1 แล้ว Print ค่าต่างๆ

นิยาม Neural Network Class

self คล้ายกับ .this ที่เราเขียนในภาษา Java เป็น object ที่เราชี้ไป

import library ที่ต้องใช้

เราจะกำหนด Learning Rate ตั้งแต่ 0.1, 0.2, …, 1.0 แต่ละค่า Train 1,000 Epoch

Train Model

Plot Loss

Plot Loss จากการปรับ learning_rate 10 ค่า รวมกัน

ค่าที่ได้นั้นของแต่ละคนมันจะไม่เหมือนกันนะครับผม อยู่ที่ว่าเราจะเอาอะไรสุ่ม

--

--

Sopajaree J
Sopajaree J

No responses yet