เรื่องจริงเกี่ยวกับ Neural Network ที่ไม่ค่อยมีใครบอก

ช่วงนี้ผมกำลังอ่านหนังสือชื่อ Neural Network Design แต่งโดย Hagan, Demuth และ Beale เป็นการอ่านแบบจริงจังไม่จิงโจ้ อ่านเพื่อหวังจะเอาไปต่อยอดทำวิจัย ไม่ได้อ่านแบบไก่กา ผิวเผิน ลวก ๆ เพื่อเอาไปสอบแล้วก็ลืม ๆ ไปอะไรแบบนั้น

คนนอกที่ไม่เคยเรียนรู้ Neural Network แต่มีความสนใจก็จะเข้าใจไปแบบนึง ส่วนคนในที่ได้เรียนรู้แล้วก็เข้าใจอีกแบบนึง ดังนั้น มาเรียบเรียงความเข้าใจที่เป็นความจริงเกี่ยวกับ Neural Network กันดีกว่า

  • Neural Network เป็นชื่อเรียกสั้น ๆ ถ้าเป็นเต็ม ๆ เขาเรียกกันว่า Artificial Neural Network หรือว่า ANN
  • จริง ๆ แล้ว Neural Network เป็นโมเดลทางคณิตศาสตร์ แต่คนคิดค้นเขาอยากจะให้เข้าใจง่าย ๆ เขาเลยวาดออกมาเป็นรูปภาพ
  • คณิตศาสตร์ที่ใช้เกี่ยวกับ Neural Network จะเป็นพีชคณิตเชิงเส้น, เมตริกซ์ และ เวกเตอร์
  • Neural Network มาเกี่ยวกับสาขาวิชา Computer Science เพราะมันเป็นโมเดลที่ช่วยแก้ปัญหาทางด้าน Machine Learning ซึ่งเป็นแขนงวิชาย่อยของแขนงวิชา Artificial Intelligence ได้
  • เราสามารถทำความเข้าใจ Neural Network ได้หลายวิธี ไม่ว่าจะเป็นการทำความเข้าใจผ่านรูปภาพโมเดล, ผ่านสมการ Summation, ผ่าน Matrix หรือแม้แต่ผ่านรูปภาพปริภูมิ 2 มิติหรือ 3 มิติ สรุปคือแล้วแต่จริตของใครว่าจะถนัดแบบไหน เพราะเข้าใจแบบไหนก็ได้ผลลัพธ์เหมือนกัน เช่นบางคนไม่เคยเรียน Matrix มาก่อน แต่อาจจะเข้าใจด้วยสมการ Summation ก็ได้ เป็นต้น
  • มีนักวิจัยเยอะแยะในโลกใบนี้ ที่พยายามคิดค้น Neural Network ในรูปแบบต่าง ๆ บางรูปแบบก็ไม่เป็นที่นิยม บางรูปแบบเคยเป็นที่นิยมแต่ล้าสมัยแล้ว บางรูปแบบก็แก้ปัญหาได้บางเรื่องแต่บางเรื่องก็แก้ไม่ได้ บางรูปแบบยังต้องต่อยอดไปอีกหลายขุมถึงจะใช้ได้
  • การวิจัย Neural Network รูปแบบใหม่ ๆ เป็นเรื่องยาก นักวิจัยส่วนใหญ่เลยเลือกจะเอา Neural Network รูปแบบที่มีคนคิดขึ้นแล้ว มาประยุกต์เพื่อแก้ปัญหาต่าง ๆ แทน
  • Neural Network เป็นโมเดลทางคณิตศาสตร์ ดังนั้น นักวิจัยส่วนใหญ่จึงมักจะใช้ MATLAB เพื่อทำวิจัย เพราะ MATLAB มันเก่งเรื่อง Matrix และการแสดงผลภาพในปริภูมิ 2 มิติและ 3 มิติมาก ๆ แถมยังมีเครื่องมือเกี่ยวกับ Neural Network ในรูปแบบที่เป็นที่นิยมบรรจุอยู่อีกต่างหาก
  • การทำให้ Neural Network ฉลาดก็คือการสอนมัน แต่เรื่องจริงไม่ได้หมายความว่าเราใช้ปากไปสั่งสอนมัน หรือใช้การเขียนโปรแกรมไปสั่งมันแบบนั้น แต่มันหมายถึงการที่เราป้อนตัวอย่างข้อมูลให้มัน แล้วให้มันถามเรากลับมาว่า “ใช่” หรือ “ไม่ใช่” หรือ “เกือบใช่” หรือ “เกือบไม่ใช่” หรือ “คล้ายจะใช่” หรือ “คล้ายจะไม่ใช่” แล้วให้เราตอบมันกลับไปว่าเออมันต้องอย่างนั้นนะอย่างนี้นะ ให้มันจำของมัน แล้วก็ปรับค่าน้ำหนักไปเรื่อย ๆ
  • ถ้าจะให้มันฉลาด เราก็ต้องป้อนตัวอย่างข้อมูลให้มันเยอะ ๆ แต่พอเป็นแบบนั้น เราเองก็ขี้เกียจมาตอบมันเหมือนกัน ดังนั้น เราก็ต้องตอบมันไประดับนึง แล้วจากนั้นก็ให้มันตอบคำถามของตัวเอง ให้มันปรับตัวของมันเอง
  • เคยอ่านเจอที่ไหนไม่รู้เขาบอกว่า ถ้าจะให้ Neural Network ปรับตัวและปรับค่าน้ำหนักจนกระทั่งนึกรู้ได้แม่นยำ เราต้องป้อนตัวอย่างข้อมูลเพื่อสอนมันเป็นล้าน ๆ ชิ้นเลยทีเดียว
  • นักวิจัยส่วนใหญ่ที่เอา Neural Network ไปทำ Pattern Recognition มักไม่เคยได้ค่่าความแม่นยำเกิน 85% เลย ไม่รู้ทำไมเหมือนกัน?
  • สุดท้ายนักวิจัยส่วนใหญ่ก็เลยหันเหไปวิจัยแบบผนวก โดยการแก้ปัญหา Pattern Recognition ด้วยการใช้ Neural Network รวมกับ Genetic Programming แทน

สรุปแล้ว งานวิจัยทางด้าน Pattern Recognition ล้วนใช้คณิตศาสตร์อย่างเยอะเลยอ่ะ แล้วผมก็อ่อนคณิตศาสตร์ซะด้วยสิ แย่จริง ๆ

Related Posts

4 thoughts on “เรื่องจริงเกี่ยวกับ Neural Network ที่ไม่ค่อยมีใครบอก

  1. ผมสนใจ ANN เพื่อแยกระยะการนอนหลับอยู่ครับ แต่ผมไม่มีความรู้เรื่องเขียนโปรแกรมเลย เขียนใน matlab นะครับ อยากมีผู้ชี้แนะครับ

  2. น่าสนใจมากครับ แต่คิดว่ายังน้อยไปสำหรับการอธิบาย อยากให้ขยายความมากขึ้นครับ อยากได้คำอธิบายในเชิงคณิตศาสตร์ด้วย ผมมีโอกาสได้ใช้มานานแล้วในด้าน vision ด้วย OpenCV เพราะมันมีคลาสสำเร็จให้ใช้แล้ว แต่ยังขาดความรู้ด้านทฤษฎีเชิงลึกอยู่ ยังอยากอ่านเพิ่มอีกเยอะเลย
    ขอบคุณครับ

  3. ความแม่นยำขึ้นกับความสัมพันธ์ของ input-outputด้วย จำนวนข้อมูลด้วย ความซับซ้อนของข้อมูล ปัญหา overfitting ด้วย สำคัญอีกอย่างดวงด้วยครับ การสุ่มinitial เป็นเรื่องสำคัญ จากขั้นตอนวิธีต่างๆในปัจจุบัน คำตอบที่ได้ยังเป็น local optimal solution อยู่

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *