โครงข่ายประสาทเทียมเป็นแบบจำลองทางคณิตศาสตร์ที่เปลี่ยนอินพุตให้เป็นเอาต์พุต โดยส่งตัวเลขผ่านเลเยอร์ของการคำนวณอย่างง่าย แต่ละเลเยอร์จะรับค่าจากเลเยอร์ก่อนหน้า สร้างผลรวมถ่วงน้ำหนัก เพิ่มไบแอส ใช้ฟังก์ชันกระตุ้นแบบไม่เชิงเส้น แล้วส่งผลลัพธ์ต่อไปข้างหน้า
คำอธิบายนี้อาจฟังดูเป็นนามธรรม แต่แนวคิดหลักนั้นเล็กและตรงไปตรงมา: โครงข่ายเรียนรู้น้ำหนักที่ปรับได้จำนวนมาก เพื่อให้รูปแบบที่มีประโยชน์ในอินพุตนำไปสู่คำทำนายที่มีประโยชน์ในเอาต์พุต
โครงข่ายประสาทเทียมคืออะไร
สำหรับนิวรอนหนึ่งตัวที่มีอินพุต การคำนวณพื้นฐานคือ
ตามด้วยฟังก์ชันกระตุ้น:
โดยที่ คือน้ำหนัก, คือไบแอส และ คือฟังก์ชันกระตุ้น เช่น ReLU, sigmoid หรือ tanh
โครงข่ายประสาทเทียมแบบ feedforward เต็มรูปแบบจะทำรูปแบบนี้ซ้ำไปในแต่ละเลเยอร์ ในรูปแบบย่อ เลเยอร์หนึ่งมักเขียนได้เป็น
โดยที่ คือเอาต์พุตของเลเยอร์ก่อนหน้า
สัญชาตญาณที่มักทำให้เข้าใจได้ทันที
นิวรอนแต่ละตัวกำลังตั้งคำถามแบบถ่วงน้ำหนักเกี่ยวกับอินพุตที่มันเห็น น้ำหนักบวกขนาดใหญ่ทำให้บางคุณลักษณะมีความสำคัญมากขึ้น น้ำหนักลบสามารถต้านรูปแบบบางอย่างได้ ส่วนไบแอสทำหน้าที่เลื่อนเกณฑ์การตอบสนอง จากนั้นฟังก์ชันกระตุ้นจะเป็นตัวกำหนดว่านิวรอนนั้นควรตอบสนองแรงแค่ไหน
การซ้อนหลายเลเยอร์ทำให้โครงข่ายสร้างคุณลักษณะได้เป็นลำดับขั้น เลเยอร์ต้น ๆ ตรวจจับรูปแบบง่าย ๆ ส่วนเลเยอร์หลัง ๆ จะนำสิ่งเหล่านั้นมารวมกันเป็นสัญญาณภายในที่มีประโยชน์มากขึ้นสำหรับงานสุดท้าย
นี่จึงเป็นเหตุผลว่าโครงข่ายประสาทเทียมไม่ได้เป็นเพียง “หลายสูตรพร้อมกัน” แต่มันคือการประกอบกันของฟังก์ชันง่าย ๆ และการประกอบนี้เองที่ทำให้มันยืดหยุ่น
ตัวอย่างคำนวณทีละขั้น
พิจารณาโครงข่ายขนาดเล็กที่มีอินพุต 2 ตัว เลเยอร์ซ่อน 1 เลเยอร์ และเอาต์พุต 1 ตัว ให้มีอินพุตเป็น
สมมติว่าเลเยอร์ซ่อนมีนิวรอน 2 ตัว และใช้ ReLU โดยที่
กำหนดการคำนวณในเลเยอร์ซ่อนดังนี้:
ตอนนี้ส่งค่าจากเลเยอร์ซ่อนไปยังนิวรอนเอาต์พุต:
หากกติกาคือ “ทำนายเป็นคลาส 1 เมื่อ ” อินพุตนี้ก็จะถูกจัดเป็นคลาส 1
ประเด็นสำคัญไม่ใช่ตัวเลขเฉพาะชุดนี้ แต่คือโครงสร้างของกระบวนการ:
- รับอินพุต
- สร้างผลรวมถ่วงน้ำหนัก
- ใช้ฟังก์ชันกระตุ้นแบบไม่เชิงเส้น
- ทำซ้ำ
- อ่านคะแนนสุดท้าย
นี่คือโครงข่ายประสาทเทียมที่กำลังทำ forward pass
โครงข่ายประสาทเทียมเรียนรู้อย่างไร
การใช้โครงข่ายเป็นปัญหาหนึ่ง ส่วนการฝึกมันเป็นอีกปัญหาหนึ่ง
ในการเรียนรู้แบบมีผู้สอนมาตรฐาน โครงข่ายจะสร้างคำทำนายก่อน จากนั้นฟังก์ชันความสูญเสียจะวัดว่าคำทำนายนั้นห่างจากค่าเป้าหมายมากเพียงใด การฝึกด้วยกราเดียนต์จะคำนวณว่าค่าความสูญเสียเปลี่ยนไปอย่างไรเมื่อเทียบกับน้ำหนักและไบแอสแต่ละตัว แล้วจึงอัปเดตค่าเหล่านั้นเพื่อลดความสูญเสีย
ในการใช้งานสมัยใหม่ สิ่งนี้มักหมายถึง backpropagation ร่วมกับ gradient descent หรือออปติไมเซอร์ที่เกี่ยวข้อง แนวทางนี้อาศัยแบบจำลองและฟังก์ชันความสูญเสียที่หาอนุพันธ์ได้ หรืออย่างน้อยก็หาอนุพันธ์ได้เป็นช่วง ๆ มากพอให้วิธีเชิงกราเดียนต์ทำงานได้
สรุปแบบสั้นคือ:
เมื่อผ่านตัวอย่างจำนวนมาก น้ำหนักจะค่อย ๆ ปรับไปในทิศทางของรูปแบบที่ช่วยให้งานสำเร็จได้ดีขึ้น
ข้อผิดพลาดที่พบบ่อย
คิดว่ามีเลเยอร์มากขึ้นย่อมให้ผลลัพธ์ดีกว่าเสมอ
ไม่จริง เลเยอร์ที่มากขึ้นเพิ่มความสามารถของแบบจำลอง แต่ก็ทำให้การหาค่าที่เหมาะสม ความต้องการข้อมูล และการควบคุม overfitting ยากขึ้นด้วย
ลืมไปว่าทำไมความไม่เชิงเส้นจึงสำคัญ
ถ้าทุกเลเยอร์เป็นเชิงเส้นทั้งหมด โครงข่ายทั้งระบบก็ยังเป็นเพียงการแปลงเชิงเส้นครั้งเดียว ฟังก์ชันกระตุ้นคือสิ่งที่ทำให้โครงข่ายลึกสามารถแทนความสัมพันธ์ที่ซับซ้อนกว่าได้
มองว่าเอาต์พุตคือความแน่นอนที่รับประกันได้
เอาต์พุตของโครงข่ายจะมีประโยชน์ได้มากน้อยเพียงใด ขึ้นอยู่กับแบบจำลอง ข้อมูล และการตั้งค่าการฝึกที่อยู่เบื้องหลัง คะแนนสูงไม่ได้เท่ากับการพิสูจน์
มองข้ามรูปแบบการแทนอินพุต
โครงข่ายไม่ได้เรียนรู้จากความหมายดิบ ๆ แต่มันเรียนรู้จากการแทนค่าเชิงตัวเลขที่ได้รับ หากอินพุตไม่ดี ไม่สม่ำเสมอ หรือขาดโครงสร้างสำคัญ ประสิทธิภาพของโครงข่ายก็มักจะแย่ลง
โครงข่ายประสาทเทียมถูกใช้เมื่อใด
โครงข่ายประสาทเทียมถูกใช้เมื่อความสัมพันธ์ระหว่างอินพุตกับเอาต์พุตซับซ้อนมากพอที่กฎซึ่งเขียนด้วยมือจะเปราะบางหรือไม่ครอบคลุม ตัวอย่างที่พบบ่อย ได้แก่ การรู้จำภาพ เสียงพูด แบบจำลองภาษา ระบบแนะนำ และงานพยากรณ์บางประเภท
อย่างไรก็ตาม มันไม่ได้เป็นตัวเลือกที่ดีที่สุดโดยอัตโนมัติสำหรับทุกปัญหา สำหรับชุดข้อมูลขนาดเล็กและมีโครงสร้าง แบบจำลองที่ง่ายกว่าสามารถฝึกได้ง่ายกว่า ตีความได้ง่ายกว่า และบางครั้งก็มีประสิทธิภาพพอ ๆ กัน
แบบจำลองความคิดที่ดี
ให้นึกถึงโครงข่ายประสาทเทียมว่าเป็นฟังก์ชันหลายชั้นที่มีปุ่มปรับได้จำนวนมาก forward pass จะเปลี่ยนอินพุตหนึ่งค่าให้เป็นเอาต์พุตหนึ่งค่า ส่วนการฝึกจะเปลี่ยนปุ่มเหล่านั้นเพื่อให้เอาต์พุตในอนาคตมีประโยชน์ต่อโจทย์มากขึ้น
นี่คือวิธีที่ชัดที่สุดในการเก็บสองแนวคิดนี้ไว้พร้อมกัน: โครงข่ายประสาทเทียมคำนวณด้วยการประกอบฟังก์ชัน และมันเรียนรู้ด้วยการปรับพารามิเตอร์เพื่อลดความผิดพลาด
ลองทำเวอร์ชันของคุณเอง
ใช้โครงข่ายเล็กตัวเดิม แต่เปลี่ยนอินพุตจาก เป็น แล้วคำนวณ , , , และคะแนนสุดท้าย ใหม่ จากนั้นลองเปลี่ยนน้ำหนักหนึ่งตัวแล้วดูว่าส่วนใดของเอาต์พุตเปลี่ยนไป แบบฝึกหัดเล็ก ๆ นี้จะทำให้แนวคิดเรื่อง forward pass เป็นรูปธรรมกว่าการท่องจำคำนิยามเพียงอย่างเดียว
ต้องการความช่วยเหลือในการแก้โจทย์?
อัปโหลดคำถามของคุณแล้วรับคำตอบแบบทีละขั้นตอนที่ผ่านการตรวจสอบในไม่กี่วินาที
เปิด GPAI Solver →