Overfitting จำคำตอบของข้อสอบอย่างเดียว ไม่สามารถเข้าใจความรู้ที่แท้จริงได้ — ปัญหาที่ AI เจอเหมือนมนุษย์

สวัสดีครับ ในบทความนี้ผมจะมาพูดถึงคำว่า Overfitting ซึ่งเป็นเรื่องที่ต้องระวังในการสร้างโมเดล เพราะมันจะทำให้โมเดลของเรามีประสิทธิภาพที่ลดลง แต่ว่าอะไรคือ Overfitting และอะไรคือสาเหตุที่มันเกิดขึ้น ลองมาติดตามกันในบทความนี้เลยครับ

ในการสร้างโมเดลทาง Machine Learning หรือ AI ขึ้นมาด้วยวิธีการเรียนแบบมีผู้สอน (Supervised Learning) นั้น โดยทั่วไปแล้วเราก็มักจะสอนโมเดลด้วยชุดข้อมูลจำนวนหนึ่ง แล้วเราก็จะคาดหวังให้โมเดลของเราเรียนรู้ความสัมพันธ์ของ X และ Y ว่าเมื่อ X มีรูปแบบใด แล้วจะก่อให้เกิด Y แบบใด

ตัวอย่างของความสัมพันธ์ X และ Y เช่น เมื่อเห็นเมฆดำปกคลุม ก็จะพกร่มติดตัวออกจากบ้านไปด้วยเพราะรู้ว่าเมื่อ X คือมีเมฆดำ ก็มีโอกาสเกิด Y คือมีฝนตกสูง เป็นต้น

มีขั้นตอนคือ

  1. ให้โมเดลของเราเรียนรู้จากชุดข้อมูลสำหรับสอน (Training Dataset)
  2. นำไปวัดผลการทำนายด้วยชุดข้อมูลทดสอบ (Testing Dataset)

ซึ่งการวัดผลกับชุดข้อมูลทดสอบนั้น เราทำเพื่อจำลองว่าถ้าเราเอาโมเดลไปใช้ในสถานการณ์จริง ที่โมเดลของเราต้องทำนายผลจากข้อมูลใหม่ที่ไม่เคยเห็นมาก่อนแล้ว โมเดลของเราจะสามารถทำนายได้อย่างถูกต้องอยู่หรือไม่

จุดประสงค์ที่แท้จริงของเราการสอนโมเดลของเราก็คือ ต้องการให้โมเดลของเราเข้าใจความสัมพันธ์ของ X และ Y ใช่ไหมครับ ผมจะขอเรียกความสัมพันธ์นี้ว่า “ความรู้” ของโมเดลก็แล้วกัน การวัดผลด้วยชุดข้อมูลทดสอบคือตัววัดว่าโมเดลของเรานั้นมีความรู้ที่ดีหรือไม่

สมมุติว่าเราสอนโมเดล Neural Network หนึ่งให้แยกแยะภาพ “กระต่าย” และ “ม้า” ความรู้ที่เราอยากให้โมเดลมีก็คือ รู้ว่าเมื่อสัตว์ในภาพที่มีหูยาว มีขนสีขาวปุกปุย คือกระต่าย และสัตว์ในภาพที่มีสี่ขาเรียวยาว ขนสั้น คือม้า

การเรียน และการทดสอบความรู้ในคน

Designed by Freepik — https://www.freepik.com/free-vector/quiz-background-with-calculator-and-pencil_1050562.htm

จินตนาการถึงการเรียนการสอนในห้องเรียน เวลาที่ครูสอนนักเรียนให้ทำโจทย์ในห้องเรียน นักเรียนก็จะพยายามเข้าใจถึงความรู้ที่แท้จริงจากโจทย์ข้อต่าง ๆ เพื่อให้ทำโจทย์ได้คะแนนดียิ่งขึ้น

แต่ก็จะมีนักเรียนอยู่จำนวนหนึ่งที่เรียนรู้ผิดวิธีด้วยการจำว่าโจทย์ข้อไหนถามอย่างไร แล้วต้องตอบว่าอะไร แน่นอนว่านักเรียนกลุ่มนี้ก็จะได้คะแนนดีในห้องเรียนด้วย เพราะจำคำตอบได้หมดเลย จะไม่ได้คะแนนดีได้ไงล่ะ ??

แต่แล้วเมื่อเราเอาโจทย์อีกชุดนึงที่ไม่เคยให้เรียนในห้องเรียนมาก่อน มาให้นักเรียนลองทำ นักเรียนที่มีความรู้ก็จะสามารถทำโจทย์เหล่านี้ได้ แต่นักเรียนกลุ่มที่โกงด้วยการจำโจทย์ในตอนเรียนก็จะไม่สามารถทำข้อสอบชุดใหม่นี้ได้เลย ทำไมน่ะเหรอ ? ก็เพราะว่าโจทย์พวกนี้เป็นโจทย์ใหม่ ไม่มีอยู่ในความจำที่ผ่านมาเลย

ถ้าเราลองวิเคราะห์ดูจะพบว่า ที่จริงแล้วการเรียนให้ได้ความรู้ที่แท้จริงนั้นใช้พื้นที่ความจำน้อยกว่า เพราะ “ความสัมพันธ์” หรือ “ความรู้” เพียงไม่กี่ข้อก็สามารถตอบคำถามได้หลายคำถาม แต่การจะเรียนให้ได้มาซึ่งความรู้นั้นอาจจะยากกว่าหน่อย ในทางกลับกัน การจำโจทย์และคำตอบนั้นใช้พื้นที่ความจำเยอะมาก เพราะต้องจำทั้งโจทย์และคำตอบทุกข้อ แต่วิธีการเรียนก็จะง่ายกว่า

โมเดลขี้โกงด้วยการจำชุดข้อมูลสำหรับสอน เพื่อให้ได้คะแนนดี

ในการเรียนรู้ของโมเดลก็มีหลักการคล้าย ๆ กับที่คนเราเรียน เราจะมีเครื่องมือวัดหนึ่งที่ถูกกำหนดขึ้นจากจุดประสงค์ของการเรียน เรียกว่า Objective Function หรือ Loss Function โดยโมเดลจะพยายามเรียนรู้เพราะที่จะทำให้คะแนนของ Objective Function ออกมาดีขึ้นเรื่อย ๆ

การวัดผลด้วย Objective Function จะบอกเราว่าผลการทำนายที่โมเดลตอบออกมา มีความถูกต้องคิดเป็นคะแนนได้กี่คะแนน แล้วโมเดลก็จะทำการปรับ weight ที่ใช้ในการคำณวนคำตอบเพื่อให้คำตอบในครั้งถัดไปได้คะแนนมากขึ้น

ถ้าอ่านมาถึงตรงนี้แล้วงงว่าอะไรคือการปรับ weight คืออะไรละก็ แนะนำให้ลองอ่านบทความในลิงค์ด้านล่างก่อนนะครับ เป็นความเข้าใจพื้นฐานเกี่ยวกับ Neural Network ครับ https://medium.com/@dopplerz/cce9227ab599

แต่แล้ว เจ้า Neural Network ของเราก็ทำสิ่งที่ไม่คาดคิด แทนที่มันจะเรียนรู้ความสัมพันธ์ มันกลับจำข้อมูลในชุดข้อมูลสอน (Training Dataset) ซะอย่างงั้น ซึ่งก็ได้ผลดีซะด้วย เพราะคะแนนที่วัดด้วย Objective Function ออกมาดีจนน่าประทับใจ ดูเผิน ๆ ก็เป็นโมเดลที่เก่ง ฉลาด ชาติเจริญสุด ๆ

และเมื่อเจ้าโมเดลขี้โกงถูกทดสอบด้วยชุดข้อมูลทดสอบ กลับตอบไม่ถูกเลย เพราะชุดข้อมูลทดสอบไม่เหมือนกับชุดข้อมูลสำหรับสอนเลย

การที่โมเดลจำคำตอบแบบนี้แหละที่เราเรียกว่า Overfitting

ลองนึกภาพง่าย ๆ ก็เหมือนกับเสื้อผ้าที่ตัดเย็บมาสำหรับทำกิจกรรมอย่างเดียว เช่น เป็นชุดว่ายน้ำ ชุดนั้นก็จะใส่ได้อย่างจำกัด ไม่สามารถใส่ไปง่ายทั่ว ๆ ไปได้ เปรียบเทียบชุดที่ใส่ในโอกาสกลาง ๆ ที่เราใส่ไปในโอกาสที่หลากหลายกว่า อาจจะใส่ออกงานก็ดูไม่น่าเกลียดจนเกินไป ถ้าใส่ไปงานชิว ๆ ก็สามารถใส่ไปได้ไม่เป็นทางการเกินไป ใส่ลงว่ายน้ำก็ยังได้เลย

อะไรคือสาเหตุที่ทำให้เกิด Overfitting ในโมเดล

ในโมเดล Neural Network ส่วนขององค์ความรู้ที่เกิดขึ้นจะถูกบันทึกโดย weight ของโมเดล และเมื่อโมเดลมี weight จำนวนมาก ก็มีความเป็นไปได้ว่า Neural Network ของเราจะ overfit กับข้อมูลสำหรับสอน

ดังนั้น การแก้ overfitting ที่ง่ายที่สุดก็คือการกำหนด weight ในแต่ละชั้นของ Neural Network ให้มีขนาดน้อยลง เพื่อเป็นการบังคับให้โมเดลไม่สามารถจำคำตอบในจำนวนมากได้

Generalization VS. Overfitting คู่ปรับที่ฟ้าส่งมา

ย่อหน้านี้อาจจะมีการใช้คำศัพท์บางคำที่ค่อนข้างเฉพาะทาง คนที่คุ้นเคยกับ Neural Network น่าจะเข้าใจได้ทันที แต่สำหรับคนที่เป็นมือใหม่ ลองพยายามทำความเข้าใจแนวคิดดูครับ

เราพยายามสอนโมเดลให้มีความสามารถที่เรียกว่า Generalization ซึ่งหมายถึงว่าความรู้ที่โมเดลเรียนรู้มานั้นเป็นองค์ความรู้กลาง ๆ ที่เอาไปประยุกต์ได้กับหลายกรณี ซึ่งการจะเพิ่มความสามารถนี้ได้ใน Neural Network นั้น สามารถทำได้ด้วยเครื่องมือเหล่านี้

  1. Drop out (หรือ Dropout) — เพิ่มความยากในการเรียนรู้ด้วยการปิดข้อมูลบางส่วน ในแต่ละชั้นของ Neural Network จะมีการส่งข้อมูลต่อกันไปในแต่ละชั้น และระหว่างการส่งข้อมูลนั้น ข้อมูลบางส่วนจะถูกปิดหายไป ทำให้ความยากในการเรียนรู้เพิ่มขึ้น
  2. Weight decay — เป็นการกำหนดให้ค่าของ weight ไปลดคะแนนของ objective function ยิ่งค่าผลรวมของ weight มีค่ามาก objective function ของเราก็จะยิ่งถูกลดคะแนนไปด้วย เพราะการที่ weight มีผลรวมเป็นค่ามาก ๆ จะมีแนวโน้มการเกิด overfitting มากไปด้วย
  3. Data Augmentation — การนำชุดข้อมูลสำหรับสอนมาปรับแต่งเพื่อให้เกิดเป็นข้อมูลที่โมเดลไม่รู้จัก แต่ต้องระวังไว้ว่าการตกแต่งข้อมูลเพิ่มนั้นจะต้องไม่ทำให้ความหมายของข้อมูลนั้น ๆ เสียหรือเพี้ยนไป เช่น เราเอาภาพกระต่ายมาปรับสีเล็กน้อย ทำให้ขนสีขาวมีสี้เพี้ยนเป็นสีเหลืองเล็กน้อย แต่ต้องระวังไม่ให้เพี้ยนเกิดไป เช่นปรับจนมีขนเป็นสีชมพู

ที่จริงแล้วยังมีเทคนิคอื่น ๆ อีกที่ช่วยลด Overfitting ในโมเดล Neural Network ได้ แต่อาจจะมีบางเรื่องที่ยากเกินไป ก็เลยจะขอเก็บไว้ค่อยเล่าในครั้งถัด ๆ ไปก็แล้วกันครับ

หวังว่าบทความในวันนี้จะมีประโยชน์สำหรับผู้อ่านนะครับ

— — — — — — — — — — — — — — — — — — — — —

สำหรับใครที่สนใจทางด้าน Machine Learning & AI สามารถฟังรายการ AI Here podcast ได้ทาง Room 508 podcast channel หรือฟังได้ผ่านทาง Soundcloud และสามารถพูดคุยติชมได้ทาง Soundcloud เลยครับ

https://soundcloud.com/room508podcast/sets/ai-here

https://itunes.apple.com/us/podcast/room-508-podcast/id1425612164?mt=2

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade