การแลกเปลี่ยน Errors ในโลกของ Machine Learning

ของฟรี (จริง) ไม่มีในโลก

Model ที่ดีก็เช่นกัน ไม่ได้สร้างกันได้ง่ายๆ (ไม่ได้ได้มาฟรีๆ) ในโลกของ machine learning โดยเฉพาะสาย supervised learning ที่เน้นเรื่อง predictive accuracy การทายผลผิดเป็นเรื่องที่เลี่ยงไม่ได้ แต่จะทำยังไงให้มันทายผิดน้อยที่สุด?

ขั้นแรกต้องเข้าใจก่อนว่า Error คืออะไร

Error (n.) the state or condition of being wrong in conduct or judgment.

เวลาเราสร้างโมเดล Error จะมีอยู่สองแบบ 1) แบบที่ไม่สามารถลดได้ (irreducible) กับ 2) แบบที่เราสามารถลดได้ (reducible)

Y = f (X) + total error

สมการด้านบน Y คือ target output ที่เราอยากจะ predict ส่วน X คือ feature / predictor ที่เราจับใส่ลงไปใน algorithm f ( ) และ term สุดท้ายคือ total error ที่สามารถแบ่งย่อยได้อีกสองส่วนเหมือนที่อธิบายไปตะกี้

Y = f (X) + reducible error + irreducible error

Irreducible error คือ noise ที่มันมีอยู่ใน data ของเราที่ไม่สามารถจะลบมันออกไปได้อย่างหมดจด อาจเป็นเพราะระบบการเก็บข้อมูล หรือธรรมชาติของข้อมูลที่มันเป็นอย่างนั้นเลย machine learning เลยพยายามที่จะสกัด true signal ออกมาจากข้อมูลโดยไม่สนใจ noise (ประมาณว่าโมเดลเราบอกได้ว่า อันไหนคือ signal ของจริง อันไหนเป็นแค่ random noise)


โฟกัสของเราอยู่ที่ reducible error

หรืออีกชื่อหนึ่งคือ learning error (แปลตรงๆว่า error ที่โมเดลเราเรียนรู้ได้) แบ่งย่อยได้อีกสองแบบ คือ bias และ variance

reducible error = bias + variance

BIAS

เกี่ยวข้องกับ assumptions ที่เราใช้ตอนสร้างโมเดล ยิ่งเรามี assumptions เยอะ (high bias) แปลว่าโมเดลที่เราสร้างขึ้นมามันจะยิ่งห่างไกลจากความเป็นจริง (≠ reality) แต่ข้อดีคือโมเดลจะเรียนรู้ข้อมูลได้ง่ายมาก เทรนเร็ว

  • low bias ใช้ assumptions ไม่เยอะในการสร้างโมเดล เช่น tree-based algorithms, instance-based learning อย่าง svm และ k-NN เป็นต้น algorithms พวกนี้แทบจะไม่ require assumptions อะไรในการเทรนโมเดลเลย
  • high bias ใช้ assumptions เยอะมากในการสร้างโมเดล เช่น linear regression ที่ assumptions เรียกได้ว่า แม่งโคดเยอะ 555+ กว่าจะเริ่มเทรนโมเดลได้ต้องเช็ค assumptions หลายอย่าง ไม่ว่าจะเป็นเรื่อง independence, normality, multi-collinearity etc.

VARIANCE

ถ้าเราเปลี่ยน training dataset ไปเรื่อยๆ predictive ability (ค่า parameters ต่างๆ) ของโมเดลเราก็จะเปลี่ยนไปเรื่อยๆเช่นกัน โมเดลที่เราสร้างขึ้นมาและมี low variance error หมายความว่าโมเดลนั้นมีแนวโน้มจะไม่เกิดปัญหา overfitting เช่นกัน เพราะถึงแม้จะเจอ data ชุดใหม่ แต่ผลลัพธ์ที่ได้ก็ยังออกมาใกล้เคียงกับของเดิม

  • low variance ค่า parameters ต่างๆของโมเดลเราเปลี่ยนแค่นิดหน่อยเวลาเราใช้ training dataset ใหม่กับ algorithm นั้น
  • high variance ค่า parameters ต่างๆของโมเดลเราเปลี่ยนไปมากเวลาเราใช้ training dataset ใหม่กับ algorithm นั้น

กฎธรรมชาติ bias ลด variance เพิ่ม vice versa

bias-variance trade-off เป็นสิ่งที่ machine learners ต้องคิดเสมอเวลาสร้างโมเดลหรือเลือกใช้ algorithms เพราะ error ทั้งสองแบบมันแลกเปลี่ยนกันอยู่ตลอดเวลา

โมเดลในฝันคือ low bias และ low variance ในเวลาเดียวกัน เทรนง่าย ไม่ overfit

ถ้าอยากเทรนโมเดลเร็วๆ เราก็ใส่ assumption เยอะๆ (high bias) การเปลี่ยน training dataset ไม่ได้เปลี่ยน accuracy ของโมเดลมากนัก (low variance)

หรือถ้าเราอยากจะ represent reality ให้มาก ต้องลด assumption ปล่อยให้ learners เรียนรู้ข้อมูลอย่างมีอิสระมากขึ้น (low bias) แต่แลกมากับความแปรปรวนของค่า parameters / accuracy ที่มีความผันผวนมากขึ้น (high variance) ถ้าเราเปลี่ยน training dataset

เราสามารถลด reducible error (bias + variance) โดยรวมได้จากเก็บข้อมูลให้เยอะขึ้นเพื่อ train model หรือเลือกใช้ features / algorithms ที่เหมาะสมกับปัญหานั้นๆ และสำคัญที่สุดคือเรื่อง representation ของข้อมูลที่เราเลือกมาใช้ (i.e. ข้อมูลนั้นเอามาใช้แก้ปัญหาได้จริงหรือเปล่า)

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