Self — Organizing Map for Beginners
สวัสดีครับทุกๆคน ! ก่อนอื่นเลย สำหรับคนที่เข้ามาบทความนี้ จะต้องรู้ก่อนว่า เรื่องราวที่จะกล่าวต่อไปนี้จะเป็นเรื่องของ Machine Learning ที่มีองค์ความรู้พื้นฐานมาจาก Neural Networks
เพราะฉะนั้น เสียเวลาซักนีสส เข้าไปอ่านว่า NNs และ MLs มันทำอะไร(ของมันหว่า?) ก่อนละกัน
เห็นไหม(จากที่ไปลอก @iboss มา)ว่า ในโลกของการเรียนรู้ของเครื่องจักร (Machine learning) นั้น แบ่งออกเป็น สามประเภทใหญ่ๆ คือ
- Supervised Learning
- Unsupervised Learning
- Reinforcement Learning
ซึ่งมันสามารถจะแยกแยะ ,เรียนรู้ สิ่งของต่างๆ (ที่สามารถ Extract Feature ออกมาเป็นตัวเลข )
นั่นแหละครับ เราจะมาเรียนรู้วิธีการแยก วิธีนึง
ที่เรียกว่า
Self-organizing Map (SOM)
มันเป็น Unsupervised Learning แบบหนึ่งที่เข้าใจได้ไม่ยากและเหมาะมากสำหรับคนที่อยากจะศึกษาเรื่อง Machine Learning ใหม่ๆนั่นเอ๊ง !
Self — Organizing Map (SOM)
หรือ Kohonen Map
SOM นั้น ถูกคิดค้นโดย Dr.Teuvo Kohonen อาจารย์จาก Academy of Finland
และ Dr. Timo Honkela จาก Helsinki University of Technology
โดยความเจ๋งของมันคือการทำให้ ข้อมูลที่มี หลายมิติ (หลาย Dimension) ถูกแสดง ในจำนวนมิติที่ลดลงได้ (และทำให้มนุษย์ เข้าใจง่ายขึ้นด้วยเช่นกัน)
องค์ประกอบหลักๆของมัน จะประกอบด้วย
- MAP ซึ่งก็คือ Node หลายๆ Node
การวางตัวของ Node แต่ละตัว (Topology) ก็จะถูกพิจารณาด้วย
ในที่นี้ขอ ละ ไว้ ให้มันง่ายๆเป็น Grid สีเหลี่ยม ก่อนละกัน
2. Node องค์ความรู้ จะมองเป็นก้อนของความรู้ที่มีค่าต่างๆประกอบหลายๆค่าก็ได้นะ
3. ข้อมูลนำเข้านั่นเอง
มันทำงานยังไงของมัน ?
อย่างแรกเลยคือ ที่ MAP ของเรา
Attribute ต่างๆใน Node จะถูกเริ่มต้นด้วยค่ามั่วๆเต็มไปหมด
กรณีนี้จะเอาข้อมูลเกี่ยวกับคน ในเรื่องของ น้ำหนัก ส่วนสูง ไขมันในกระแสเลือด และ รอบเอว และ ข้อมูลทางการแพทย์ที่เป็นตัวเลขเต็มไปหมดเลย (ตัวเลขหลายตัว) (ใจร้ายจริงๆให้ตายสิ)
ซึ่งเราจะมองว่า จำนวนของ Properties เหล่านี้ นับเป็นมิติ (Dimension) นั่นเอง
เช่น ข้อมูล มี 1.ความกว้างที่วัดได้ 2. ความยาวที่วัดได้ 3. ความสูงที่วัดได้
จะมองเป็น 3 มิตินั่นเอง
เทียบกับข้อมูลเกี่ยวกับคนที่เรามี มันมีจำนวนมิติมหาศาลเลย ถ้าเป็นข้อมูลที่มีจำนวนมิติ 1–3 มิติ น่าจะยัง เอาไป Plot และมองเห็นภาพอยู่
ในกรณีนี้ ข้อมูลดูหลายมิติมากๆ แค่จะแสดงผลเฉยๆ ไม่ต้องยุ่งกับ Machine Learning ก็ปวดหัวตุบๆละ
- ข้อมูลน้ำเข้า จะถูกเปรียบเทียบกับทุกๆ Node ใน Map เพื่อหาว่า Node ใด ใน Map มีค่า “ ความคล้าย ” กับมันมากที่สุด
ความคล้ายในที่นี้จะถูกคำนวนด้วย Euclidian Distance
2. หลังจากนั้น Node Map ที่เป็นผู้ชนะ (Winner Node) หรือ เรียกว่า Best Matching Unit — BMU (ไอ้เขียวๆในรูปนั่นแหละ ) จะถูก Update ตามสมการ
แต่การอัพเดทแค่ที่บริเวณ Best Matching unit พบว่า มันทำงานไม่ค่อยเหมือนสมองมนุษย์เราซักเท่าไร เวลา Cell ต่างๆเรียนรู้ มักจะเรียนรู้เป็นบริเวณ ไม่ใช่เป็นจุด
จึงเกิดเรื่องของ Neighbor และ Learning Curve ขึ้นมา
ค่าที่เราจะ สอน Map ของเรานั้น จะแปรผันตาม 2 ตัวแปรที่เปลี่ยนไปตามเวลานี้
การ update map จึงทำเป็นบริเวณๆไป
และ อาณาเขตจะลดลงเรื่องตามเวลาที่เราสอน Map ของเรา
ความรุนแรง(ความเข้ม) ของการ Update ก็เช่นกัน
ท้ายที่สุด
เมื่อทำวนไปเรื่อยๆ นานๆเข้า จะพบว่า ความรู้เริ่มพอกพูนเป็น Zone ต่างๆ
เราสามารถแบ่งโซนภูเขาในรูปได้ และพบว่ามันคือองค์ความรู้ที่ ‘ เป็นหมวดหมู่เดียวกัน ’ นั่นเอง ! :D
หลังจากได้ MAP แล้วทำอะไรต่อ
เราสามารถระบายสีโซนที่ MAP เราเรียนรู้ แบบนี้ นั่นเอง
(ในเชิง เทคนิค การที่จะแบ่งโซนเหล่านี้จะต้องดูภูเขา U-Matrix ในรูปด้านบน และเอามาขีดเส้นแบ่ง Zone )
เห็นไหม มันก็ไม่ยากอย่างที่คิดเลย แม้ว่าจะมีเรื่องของคณิตศาสตร์เข้ามาเกี่ยวข้องเยอะแยะเต็มไปหมด
ประโยชน์ของมันมีอยู่เยอะมากๆ โดยเฉพาะในงาน Recognition เช่น ลายมือ หรือ จดจำคน รวมไปถึง วิเคราะห์หลายๆสิ่งที่มนุษย์ไม่น่าจะแบ่งหมวดหมู่ได้
สุดท้ายนี้อยากจะฝากอะไรถึงคนอ่าน
Machine Learning เป็นเรื่องที่โดยส่วนตัวผมคิดว่า มันกำลังมาในไม่ช้านี้ จากหนังที่เราเห็นหุ่นยนต์ หรือ Gadget ล้ำๆ มันไม่ได้เพ้อฝันหรอกครับ
แต่ทุกๆอย่างย่อมมีขีดจำกัดของมัน อยู่ที่ว่าใครจะหยิบ Tools หรือ Algorithm ตัวไหนมา
SOM ก็เช่นกัน ~
ไว้เจอกันใหม่ครับ วันนี้ดึกมากๆแล้ว
ลาก่อย~
ติว iTUTOR — @C3mx