สวัสดีครับ เพื่อนๆ สำหรับ Deep Learning Workshop อันดับ 7 ของ ThAIKeras นี้ เราจะว่ากันด้วยหนึ่งในเรื่องที่สำคัญสุดๆ สำหรับ Machine Learning บน Computer Vision นั่นคือเรื่องของ Data Augmentation หรือ การเพิ่มปริมาณข้อมูลภาพสอน (จากข้อมูลภาพเดิม)
เนื่องจากประสิทธิภาพความแม่นยำของโมเดลในตระกูล Deep Learning นั้นขึ้นกับปริมาณข้อมูลเป็นปัจจัยสำคัญอันดับหนึ่ง (เทียบเท่ากับปัจจัยสถาปัตยกรรมนิวรอนที่ยอดเยี่ยม) ดังนั้นเทคนิก Data Augmentation ที่เราจะทำกันใน Workshop นี้จึงมีประโยชน์มากๆ และเพิ่มความสามารถให้กับโมเดลเราได้อย่างมาก นอกจากนี้สามารถประยุกต์ใช้กับงานด้าน Computer Vision ได้แทบทุกประเภทเลยครับ
ในการ Augment ที่มีประสิทธิภาพทางปฏิบัตินั้น นอกจากจะต้องฝึกใช้ library tool ที่ดีเช่น Albumentations อย่างที่แนะนำใน Workshop นี้แล้ว การเลือก Augmentation ที่เหมาะสมยังเป็นทั้งศาสตร์และศิลป์ที่เราต้องเจาะปัญหาให้เข้าใจลึกซึ้งอีกด้วย ซึ่งเราก็จะพูดถึงเรื่องเหล่านี้ใน Workshop นี้เช่นกันครับ
โดย Workshop นี้แม้ัจะเป็นภาคต่อที่สองของปัญหา การตรวจสอบเบาหวานในดวงตา (AI for Eyes ภาค 2) ที่ Kaggle ร่วมกับ Aravind Eye Hospital เพื่อแก้ปัญหาที่ทำให้ผู้คนตาบอดมากที่สุดอย่างยั่งยืน ทว่าเพื่อนๆ ก็สามารถนำความรู้ใน Workshop นี้เข้าไปประยุกต์ได้กับงานอื่นๆ ใน Computer Vision หรือรูปภาพประเภทอื่นๆ ได้อย่างง่ายดายด้วยหลักการเดียวกัน
เพื่อนๆ สามารถดูภาค 1 และที่มาของปัญหาได้ที่นี่ครับ หรือสามารถดูและฝึกทำ AI/Data Science Workshops อื่นๆ ทั้งหมดของทีมงานได้ที่นี่ครับ
กระบวนการที่สำคัญของ Machine Learning คือ การสร้าง "โมเดล" จากข้อมูลสอน (Training Data) โดยโมเดลที่เรียนได้นั้น ก็เป็นตัวแทนของ "ความรู้" ที่ได้จาก Training Data นั่นเอง และหัวใจสำคัญของ "ความรู้ที่แท้จริง" นั้นคือ "ต้องนำไปใช้ต่อได้ในอนาคต" (ไม่ใช่สักแต่ท่อง :)
ตัวอย่างง่ายๆ ที่บ่งว่าการ "จดจำ" Training Data ได้ 100% นั้นอาจไม่นับเป็นการเรียนรู้ อาทิ เช่น สมมติเราสร้างโมเดลให้เรียนรู้ว่าอะไรคือ "กระรอก" จากภาพตัวอย่างหลายภาพ โดยหนึ่งใน Training Data อาจเป็นภาพด้านล่าง (credit รูปภาพ: https://github.com/aleju/imgaug)
เมื่อเราสอนโมเดลของเราด้วย Training Data และโมเดลนั้นแม่นยำ 100% บน Training Data นี้ เราอาจเข้าใจไปว่าโมเดลของเรารู้แล้วว่ากระรอกหน้าตาเป็นอย่างไร
ทว่าความจริงอาจไม่เป็นอย่างที่คิด โดยโมเดลของเราอาจจะ "ลักไก่" ด้วยการจำส่วนประกอบอื่นๆ ที่ไม่สำคัญบนภาพ หรือท่องจำแบบไม่เข้าใจอะไรก็เป็นได้ เช่น ถ้าเราซูมภาพนี้เข้ามาอีกนิด
ประเด็นข้างต้นนั้นเป็นตัวอย่างของปัญหา overfitting ที่เป็นประเด็นสำคัญที่สุด ใน Machine Learning ... หนึ่งในวิธีการแก้ Overfitting แบบง่ายๆ แต่ได้ผล ก็คือ "การเพิ่มจำนวน Training Data" เข้าไป เช่น เพิ่มรูปกระรอกอื่นๆ ไม่มีวัตถุสามเหลี่ยม ไม่มีแสงแดด หรือกระรอกหน้าตาอื่นๆ เหล่านี้จะทำให้โมเดลจดจำสิ่งที่ไม่จำเป็นได้ยากขึ้น และพยายามจดจำลักษณะอื่นๆ หรือเรียนรู้ "ความรู้" ที่เป็นจริงสำหรับกระรอกทุกภาพได้ดีขึ้น (เช่น "รูปทรงของตา" จะมีลักษณะทรงกลมหรือทรงรีสีดำ ขนาดใดก็ได้ เป็นต้น)
อย่างไรก็ดีในกรณีที่เราไม่สามารถหา Training Data มาเพิ่มได้ เราอาจจะใช้เทคนิกที่สำคัญมากสำหรับ Machine Learning โดยเฉพาะ Computer Vision นั่นคือ "Data Augmentation" หรือ การสร้างภาพใหม่ โดยการดัดแปลงภาพเดิมที่เรามี อาทิเช่น เราอาจบิด ตัด หมุน เปลี่ยนสี ทำภาพให้มืดหรือสว่างขึ้น หรือใส่ noise ลงไปใน ถ้าเราลองทำกระบวนการเหล่านี้กับภาพข้างต้น จะได้ผลลัพธ์ทำนองนี้ (สังเกตว่ามนุษย์ยังมองออกว่าเป็นกระรอกเหมือนเดิม)
เห็นไหมครับ ไอเดียง่ายๆ นี้ทำให้เรามีภาพกระรอกเพิ่มขึ้นอย่างไม่จำกัดจำนวนเลยทีเดียว และทำให้โมเดลของเราลักไก่ยากขึ้นมากๆๆ เนื่องจากถ้าไปจำลักษณะอะไรที่ไม่ได้บ่งบอกถึงกระรอกจริงๆ ก็อาจจะไม่เป็นจริงอีกต่อไปใน Augmented Training Data (จากเดิม "ลักไก่" ง่ายกว่า "เรียนความรู้" พอเราเพิ่ม augmented data เข้าไปจะกลายเป็นว่าเรียนรู้จริงๆ ง่ายกว่าลักไก่)
อย่างไรก็ตามการทำ Data Augmentation นั้นมีกุญแจสำคัญที่ต้องท่องจำขึ้นใจนั่นก็คือ การทำ Augmentation นั้นจะต้องไม่เปลี่ยนแปลงธรรมชาติของข้อมูลต้นฉบับมากเกินไป ตัวอย่างเช่น ภาพกระรอกข้างบน ถ้าเราไม่ระวังทำการเบลอภาพอย่างรุนแรงอาจทำให้เอกลักษณ์ของกระรอกเสียไป (มนุษย์มองออกยาก) และทำให้การเรียนรู้ด้อยประสิทธิภาพลงได้
ในทางปฏิบัตินั้นการทำ Data Augmentation ที่เหมาะสมกลายเป็นเครื่องมือมาตรฐานที่ช่วยเพิ่มความสามารถของโมเดลในงาน Computer Vision ได้อย่างมาก และในปัญหา ตรวจสอบเบาหวานในดวงตา ที่เรากำลังสนใจอยู่นี้ก็เช่นกันครับ เราจะมาเรียนรู้วิธีการทำ Data Augmentation ที่เหมาะสมต่างๆ กัน
ถ้าเพื่อนๆ พร้อมแล้วเริ่มต้นทำ Workshop ได้ที่นี่เลยครับ : https://www.kaggle.com/ratthachat/workshop-augmentation-image-ai-for-eyes-2