จากใน ep เรื่อง AI จำแนกรูปภาพ Image Classification หมา แมว 37 สายพันธุ์ ใน ep นี้เราจะมาเรียนรู้เทคนิคเพิ่มเติม ในเรื่อง Data Augmentation คือ Mixup และ Loss Function คือ Label Smoothing เพื่อแก้ปัญหาบางอย่างในการเทรนโมเดล Machine Learning ให้มีประสิทธิภาพดีขึ้น

Mixup คืออะไร

ตรงตามชื่อ Mixup คือ การผสมข้อมูลตัวอย่างในการเทรนโมเดล เช่น เอารูปใน Training Set มาผสมกัน โดยไม่สนใจว่าจะอยู่ Class เดียวกันหรือไม่ นำข้อมูลรูปมารวมกันแบบเส้นตรง

new_image = t * image1 + (1-t) * image2

สมมติ t เป็นเลขทศนิยม มีค่าระหว่าง 0 และ 1 ส่วน Label ก็ทำเหมือนกัน ด้วย t จากข้างบน

new_label = t * label1 + (1-t) * label2

โดยสมมติว่า Label เป็น One-Hot Encoding

หมา 70% + แมว 30%

Mixup Dog 70% + Cat 30% Overlay
Mixup Dog 70% + Cat 30% Overlay

รูปด้านบนนี้คือรูปอะไร? หมาหรือแมว? คำตอบคือ หมาพันธุ์ปั๊ก 70% + แมวพันธุ์ Birman 30%

ดังรูปด้านบน เป็นการยาก สำหรับสายตามนุษย์ ที่จะทำความเข้าใจกับรูปแบบนี้ (ถึงจะมองเห็นลาง ๆ แต่ก็ยังยากอยู่ดี) แต่สำหรับ AI / Machine Learning เป็นอะไรที่ง่ายมาก แถมยังช่วยให้สามารถเทรน / เรียนรู้ อย่างมีประสิทธิภาพเพิ่มมากขึ้นอีกด้วย

ความแตกต่างที่เห็นชัดเจนก็คือ Loss จะมากกว่า เทรนแบบปกติ ถึงแม้ Accuracy จะมากกว่าก็ตาม หมายความว่าโมเดลอาจจะทำนายด้วยความมั่นใจน้อยลงกว่าปกติ

โดยใน Implementation ก็มีรายละเอียดปลีกย่อยลงไปอีก เช่น การ Random ไม่ได้ผสมทุกครั้ง และไม่ได้ใช้ 0.7 / 0.3 ตลอด

เทคนิคใกล้เคียง Mixup เช่น AugMix, CutOut และ CutMix

Visual comparison of data augmentation techniques. AugMix A Simple Data Processing Method to Improve Robustness and Uncertainty. Credit https://arxiv.org/abs/1912.02781
Visual comparison of data augmentation techniques. AugMix A Simple Data Processing Method to Improve Robustness and Uncertainty. Credit https://arxiv.org/abs/1912.02781

มีเทคนิคอื่น ๆ ที่คล้ายกันกับ Mixup เรียกว่า AugMix, CutOut และ CutMix แต่ใช้การตัดแปะรูป หรือผสมค่าสีที่ซับซ้อนมากขึ้น จะอธิบายต่อไป

Label Smoothing คืออะไร

Strawberry Lemon Smoothie. Credit https://commons.wikimedia.org/wiki/File:Strawberry_and_lemon_smoothie_(14430283996).jpg
Strawberry Lemon Smoothie. Credit https://commons.wikimedia.org/wiki/File:Strawberry_and_lemon_smoothie_(14430283996).jpg

จากการรวมภาพ รวม Label ข้างบน แทนที่จะ Label จะเป็น One-Hot Encoding แบบปกติ ใช้กับ Cross Entropy Loss Function ในงาน Classification เหมือน ep ที่ผ่าน ๆ มา

Label กลายเป็นค่าเฉลี่ย Weight ตาม t เช่น 0.7 / 0.3 ไม่ได้เป็น 0 / 1 สุดโต่งเหมือนอย่างเคย

Dataset ข้อมูลคุณภาพไม่ค่อยดี

นักวิจัยพบว่า ในเคสที่ Dataset ข้อมูลคุณภาพไม่ค่อยดี Label มีความผิดพลาด ไม่ตรง 100% ถ้าเราบังคับให้ Label เป็น 0 / 1 กับข้อมูลที่ผิด จะทำให้โมเดลเรียนรู้ได้แย่ลง Loss Function จะ Penalty มากเกินไป โมเดลจะเรียนรู้จาก Label ผิด ๆ เหล่านั้นอย่างมั่นใจเกินไป

วิธีแก้ในเคสนี้ คือ Label Smoothing แทนที่เราจะใช้ One-Hot Encoding แบบปกติ 0 / 1 สำหรับ Dataset ข้อมูลที่คุณภาพไม่ค่อยดี เราจะใช้ 0.1 / 0.9 แทน

โดยใน Implementation ก็มีรายละเอียดปลีกย่อยลงไปอีก เช่น การ Random ไม่ได้ใช้ 0.1 / 0.9 ทุกครั้ง เป็นต้น

เรามาเริ่มกันเลยดีกว่า

Open In Colab

แชร์ให้เพื่อน:

Keng Surapong on FacebookKeng Surapong on GithubKeng Surapong on Linkedin
Keng Surapong
Data Science Manager at Bua Labs
The ultimate test of your knowledge is your capacity to convey it to another.

Published by Keng Surapong

The ultimate test of your knowledge is your capacity to convey it to another.