ช่วงนี้ผมกำลังอ่านหนังสือชื่อ 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 ล้วนใช้คณิตศาสตร์อย่างเยอะเลยอ่ะ แล้วผมก็อ่อนคณิตศาสตร์ซะด้วยสิ แย่จริง ๆ
ได้แนวคิดเยอะเลยครับ เป็นสรุปภาพรวมที่แจ่มๆ
ผมสนใจ ANN เพื่อแยกระยะการนอนหลับอยู่ครับ แต่ผมไม่มีความรู้เรื่องเขียนโปรแกรมเลย เขียนใน matlab นะครับ อยากมีผู้ชี้แนะครับ
น่าสนใจมากครับ แต่คิดว่ายังน้อยไปสำหรับการอธิบาย อยากให้ขยายความมากขึ้นครับ อยากได้คำอธิบายในเชิงคณิตศาสตร์ด้วย ผมมีโอกาสได้ใช้มานานแล้วในด้าน vision ด้วย OpenCV เพราะมันมีคลาสสำเร็จให้ใช้แล้ว แต่ยังขาดความรู้ด้านทฤษฎีเชิงลึกอยู่ ยังอยากอ่านเพิ่มอีกเยอะเลย
ขอบคุณครับ
ความแม่นยำขึ้นกับความสัมพันธ์ของ input-outputด้วย จำนวนข้อมูลด้วย ความซับซ้อนของข้อมูล ปัญหา overfitting ด้วย สำคัญอีกอย่างดวงด้วยครับ การสุ่มinitial เป็นเรื่องสำคัญ จากขั้นตอนวิธีต่างๆในปัจจุบัน คำตอบที่ได้ยังเป็น local optimal solution อยู่