เรียนรู้และทำความเข้าใจ Neural Network Forward Propagation คืออะไร
ในโลกของ Developer ทุกวันนี้ ทุกคนคงจะได้ยินเทรนด์ในการพัฒนาซอฟแวร์ยุคใหม่ที่อยู่บนพื้นฐานของ machine learning หรือที่หลายๆคนเรียกว่า AI-first ซึ่งจะเข้ามาแทนยุค Mobile-first ในปัจจุบัน ในส่วนพื้นฐานล่างสุดของการทำ Machine Leaning นั้น คือส่วนที่เรียกว่า Neural network หรือโครงข่ายประสาทเทียม
การเรียนรู้ของมนุษย์
โดยปกตินั้น มนุษย์มีกระบวนการเรียนรู้มากมาย โดยการเรียนรู้แบบจดจำรูปแบบ โดยวิธีการเรียนรู้แบบจดจำรูปแบบมีวิธีการดังนี้ คือ มนุษย์สังเกตุเห็นสิ่งของที่ไม่รู้จัก และรับรู้ว่าสิ่งนั้นคืออะไรจากผู้อื่น เมื่อเกิดการเห็นบ่อยๆมากขึ้น เห็นในรูปแบบที่แตกต่างมากขึ้น มนุษย์ก็จะเกิดการเรียนรู้และจดจำในสิ่งที่คล้ายๆกัน และเมื่อเห็นสิ่งนั้นอีกครั้งก็จะสามารถบอกได้ว่าสิ่งที่เห็นนี้คืออะไร
Neural network คืออะไร
คือโครงข่ายประสาทเทียม ที่เป็นการจำลองการทำงานมากจาก สมองมนุษย์โดยตรง โดยสมองมนุษย์นั้นก็จะมีส่วนที่เป็นหน่วยประมวณผลมากมาย และเชื่อมโยงกันด้วยระบบประมาทมากมายย ช่วยให้เราสามารถวิเคราะห์หรือตัดสินใจได้อย่างรวดเร็วและทันที
แต่ในส่วนของคอมพิวเตอร์นั้น ไม่ได้มีโครงสร้างที่ซับซ้อนเท่ากับสมองมนุษย์ ซึ่งคอมพิวเตอร์นั้นมีหน้าที่เพียงแค่ รันโปรแกรมตามที่มนุษย์เป็นคนสั่งการเท่านั้น ดังนั้นจึงเกิดการจำลองแนวทางการเรียนรู้ของคน ไปสู่คอมพิวเตอร์ด้วย Neural Network นั่นเอง
Feed-Forward Neural Network
รูปแบบของ Neural Network ที่ง่ายที่สุดคือ Feed-Forward Neural Network โดยจะแบ่ง Perceptron ออกเป็นกลุ่มๆ โดยแต่ละกลุ่มจะเรียกเป็น Layer โดยข้อมูลที่เข้ามาจะไหลไปในทิศทางเดียว ไม่ไหลย้อนกลับ จาก Layer นึงสู่อีก Layer นึง
Neuron หรือ Perceptron
เป็นส่วนที่เล็กที่สุดของ Neural Network ก็คือ Neuron ซึ่งทำหน้าที่คำนวณ input ที่เข้ามา เพื่อให้ได้ผลลัพธ์ออกไป โดยมีหน้าที่ 2 ส่วนดังนี้
- Linear combination ของ input กับ parameter แสดงด้วยสัญลักษณ์ ∑
- Activation function ที่นิยมใช้ ได้แก่ Sigmoid function, Tanh function, Relu function
Activation function ของ Output Layer
การเลือก activation function ของ output layer เราต้องเลือกสิ่งที่เข้ากับคำตอบที่เราต้องการ เช่น กรณีตัวอย่างเราต้องการความน่าจะเป็นของการเป็นโรค ซึ่งมีค่าระหว่าง 0 ถึง 1 เราจึงควรเลือก Sigmoid function เพราะ function นี้ให้ผลลัพธ์ระหว่าง 0 ถึง 1 ตามที่แสดงในกราฟด้านบน
การเลือก activation function ของ hidden layer ไม่ได้มีกฎตายตัว แต่ตัวเลือกที่นิยมใช้คือ Relu function เนื่องจากมีข้อดีหลายอย่าง หนึ่งในข้อดีคือช่วยลดเวลาในการสอน model ขนาดใหญ่ได้
การเรียนรู้ของโครงข่ายประสาทเทียม
โดยทั่วไปการเรียนรู้ของโครงข่ายเทียม ก็คือ การสอนโครงข่ายให้ทำการคำนวณข้อมูลเอาต์พุตพร้อมกับปรับปรุงค่าน้ำหนักโดยใช้ข้อมูลอินพุตที่ป้อนให้กับโครงข่ายโดยอาศัยกระบวนการทำซ้ำโดยมีขั้นตอนดังนี้
- อินพุตข้อมูลในแต่ละตัว ก็จะมี weight ในแต่ละเส้น จากนั้นก็จะรวมกันโดยการคูณ เพื่อนำเข้า Perceptron เป็น Weighted sum ดังรูป
- เมื่อได้ Weighted sum ในตัว Perceptron ก็จะนำเข้าส่วนที่เป็น Activation Function โดย Function ที่ใช้จะต้องเป็น non-linear function จึงจะได้ส่วนที่เป็นเอาต์พุตของ layer นั้น เพื่อส่งต่อไปยัง Perceptron ใน layer ต่อไป โดยตัว Weight ในแต่ละเส้นนั้นจะเกิดการปรับปรุงค่าเองจากเอาต์พุตที่ออกมา
- ทำกระบวนแบบเดิมจนกว่าจะถึง Output Layer จึงจะได้ผลลัพธ์ออกมา
From Perceptron
การจัดเรียง Perceptron และ Layer นั้นก็มีผลต่อการเรียนรู้ โดยยิ่งมี Perceptron และ Layer มากก็จะยิ่งสามารถวิเคราะห์ข้อมูลที่ซับซ้อนได้ดียิ่งขึ้น และให้ผลลัพทธ์ที่ถูกต้องมากยิ่งขึ้น
การประยุกต์ใช้งาน Neural Network
- การประยุกต์ใช้แบบจำลองโครงข่ายประสาทเทียมเพื่อคาดการณ์ นํ้าท่วมในอนาคต
- การประยุกต์ใช้โครงข่ายเทียมกับงานทางด้านการเกษตร
โดยจะมีวิดีโอการ simulation ในการทดสอบข้อแตกต่างระหว่างการใช้งาน Activation Function ที่แตกต่างกัน และความซับซ้อนของ Perceptron และ Layer เพื่อให้เห็นถึงผลลัพธ์ที่ออกมาท้ายคลิปการนำเสนอ
ขอขอบคุณภาพจาก Anonymous( coladev.com neural-network-basic)
ขอขอบคุณข้อมูลจาก http://codeonthehill.com/machine-learning-2-neural-network/
จัดทำโดย
นายวสันต์ อินผิว
นายจารุวัฒน์ ด้วงนิล
เสนอ
อาจารย์ทศพล บ้านคลองสี่