AI จำภาพได้อย่างไร? คู่มือเข้าใจง่ายจากพิกเซลถึง CNN
ปลดล็อกด้วยใบหน้า อัลบั้มรูปที่จัดกลุ่มตามคน ถ่ายรูปแล้วรู้จักต้นไม้ เบื้องหลังทั้งหมดคือเรื่องเดียวกัน คือทำให้เครื่องเข้าใจภาพ กุญแจสำคัญง่ายมาก เริ่มจากดูว่าตัวเลขมีหน้าตาอย่างไร แล้วดูว่าโครงข่ายประกอบตัวเลขเหล่านั้นเป็น "ลักษณะเด่น" ได้อย่างไร
สำหรับเครื่อง ภาพคือตารางตัวเลข
ภาพสีหนึ่งภาพประกอบด้วยพิกเซลหลายหมื่นตัว แต่ละพิกเซลเก็บค่าความสว่างสามค่า คือแดง เขียว น้ำเงิน ปกติอยู่ระหว่าง 0 ถึง 255 ดังนั้นเวลาส่งภาพเข้าโครงข่าย จริง ๆ แล้วคือส่งตัวเลขจำนวนมากที่เรียงเป็นตารางเรียบร้อย
กับ "ตารางตัวเลข" นี้ ขั้นแรกของโครงข่ายเรียบง่ายมาก คือมองหาการเปลี่ยนแปลงเล็ก ๆ เฉพาะที่ในตาราง เช่น ความสว่างที่เพิ่มหรือลดฉับพลันระหว่างพิกเซลข้างเคียง นั่นก็คือขอบ
จากพิกเซลสู่ลักษณะเด่น: ประกอบกันทีละชั้น
ขอบเพียงอย่างเดียวไม่มีความหมายอะไร แต่พอประกอบกันก็เริ่มมีความหมาย ชั้นที่ลึกขึ้นจะรวมขอบง่าย ๆ เป็นเส้นโค้ง มุม และพื้นผิว ส่วนชั้นที่ลึกยิ่งขึ้นจะประกอบสิ่งเหล่านั้นเป็นชิ้นส่วนอย่างตา จมูก ล้อ หรือกลีบดอกไม้
กระบวนการนี้ไม่มีใครเขียนกฎด้วยมือ โครงข่ายเรียนรู้เองระหว่างการฝึก "ลักษณะเด่น" ที่แต่ละชั้นเรียนรู้คือการนำเอาต์พุตของชั้นก่อนหน้ามาประกอบใหม่ ยิ่งลึกก็ยิ่งนามธรรมมากขึ้น
ตัวอย่างคลาสสิก: ตัวเลขเขียนมือ MNIST
เกือบทุกคนเริ่มเรียนการรู้จำภาพด้วย MNIST เป็นภาพตัวเลขเขียนมือขนาด 28×28 พิกเซลหลายหมื่นภาพ แต่ละภาพติดป้ายคำตอบที่ถูกต้องตั้งแต่ 0 ถึง 9 เหมาะอย่างยิ่งสำหรับฝึก "ดูแล้วจำแนก"
เพราะภาพเล็กและมีคลาสไม่มาก แม้โครงข่ายไม่ซับซ้อนก็ถึงความแม่นสูงได้ในไม่กี่นาที เหมาะกับการดูว่า "ตอนฝึกเกิดอะไรขึ้นจริง ๆ" พอเข้าใจ MNIST แล้ว งานภาพที่ซับซ้อนขึ้นก็จะเข้าใจได้ง่าย
CNN เพิ่มอะไรให้มากกว่าโครงข่ายธรรมดา
ถ้าเชื่อมทุกตำแหน่งพิกเซลตรงไปยังชั้นถัดไป จำนวนพารามิเตอร์จะพุ่งสูงจนฝึกยาก แนวคิดหลักของ CNN คือ "การคอนโวลูชัน" คือเลื่อนหน้าต่างเล็ก ๆ ไปทั่วภาพ แล้วใช้น้ำหนักชุดเดิมซ้ำ ๆ เพื่อหาลวดลายชนิดเดียวกัน วิธีนี้รักษาความสัมพันธ์เชิงตำแหน่งไว้พร้อมลดจำนวนพารามิเตอร์ลงอย่างมาก
นอกจากนี้ CNN มักใช้ "พูลลิ่ง" ย่อขนาดแผนที่ลักษณะเด่น ทำให้โครงข่ายสนใจว่า "มีลักษณะเด่นนี้ไหม" มากกว่าน้ำหนักว่าอยู่พิกเซลไหนพอดี จึงทนต่อการเลื่อนตำแหน่งเล็กน้อยได้ดีขึ้น การซ้อนคอนโวลูชันและพูลลิ่งทีละชั้นคือโครงหลักของการรู้จำภาพสมัยใหม่
FAQ
ทำไมภาพขาวดำมีหนึ่งช่องสัญญาณ แต่ภาพสีมีสามช่อง
ภาพขาวดำต้องใช้ค่าความสว่างเดียวต่อพิกเซล จึงมีหนึ่งช่องสัญญาณ ส่วนภาพสีเก็บค่าความสว่างสามค่า คือแดง เขียว น้ำเงิน ต่อพิกเซล จึงมีสามช่อง โครงข่ายจัดการแบบเดียวกัน แค่มีตัวเลขอินพุตมากขึ้นหน่อย
การฝึกการรู้จำภาพต้องใช้ภาพเยอะไหม
ปกติยิ่งมากยิ่งดี แต่ขยายจำนวนได้ด้วย data augmentation คือหมุน ครอป หรือพลิกภาพเล็กน้อยเพื่อเพิ่มปริมาณโดยอ้อม หรือใช้ transfer learning โดยเอาโมเดลที่ฝึกกับภาพมหาศาลมาแล้วมาเฟাইনจูนด้วยข้อมูลของเราเพียงเล็กน้อย
AI ถูกหลอกด้วยภาพลวงตาได้ไหม
ได้ แค่เปลี่ยนไม่กี่พิกเซลก็ทำให้โมเดลมอง A เป็น B ได้ ตัวอย่างแบบนี้เรียกว่า adversarial examples ซึ่งชี้ว่าโมเดลเรียนรู้ความคล้ายเชิงสถิติ ไม่ได้เข้าใจภาพจริง ๆ เหมือนคน ดังนั้นในงานที่เกี่ยวกับความปลอดภัยจึงต้องมีมาตรการป้องกันเพิ่มเติม
เข้าใจการรู้จำภาพทีละขั้นด้วย AI Neural
เปิด AI Neural แล้วดูตัวอย่างแบบโต้ตอบว่าพิกเซลกลายเป็นขอบ และขอบกลายเป็นชิ้นส่วนได้อย่างไร สัมผัสแนวคิดของ CNN ได้อย่างเข้าใจง่าย ถนัดกว่าท่องนิยามมาก