Back-propagation Algorithm with NumPy
ขั้นตอนการทำงานของ 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 ค่า รวมกัน
ค่าที่ได้นั้นของแต่ละคนมันจะไม่เหมือนกันนะครับผม อยู่ที่ว่าเราจะเอาอะไรสุ่ม