แล้ว SOM มัน คือ อะไร คนคิดวิธีการนี้ชื่อส้ม หรือป่าว ? ตอบเลยว่ามันไม่ใช่ครับ SOM เป็นตัวย่อมาจาก Self-Organizing Map ครับ โดยสามารถเรียกอีกชื่อนึงด้นะว่าเป็น Kohonen Map (Network) คิดค้นโดย Dr.Teuvo Kohonen และ Dr. Timo Honkela ส่วนตัวผมคุ้นชื่อหลังมากกว่านะ เพราะเคยเรียน AI มาตอนปริญญาตรี
พอมันมี Network และ AI เช้ามาเกี่ยวข้องแล้ว อ่าช่ายใช่แล้วครับ มันเป็นมันเป็น AI ดูตอบแบบกำปั้นทุบดินมากๆ โดยเจ้า SOM มันเป็น Neural Network แบบหนึ่งครับ โดยถูกจัดอยู่ในกลุ่ม Unsupervise Learning ครับ
เกริ่นมาซะนานแล้ว เรามาดูกันดีกว่า ว่าเจ้า SOM ทำอย่างไรบ้าง
Step 0: แปลงข้อมูลอยู่อยู่ในรูปของตัวเลขก่อนครับ เพราะเครื่องมันไม่สามารถรู้ได้ หรอกว่า สิ่งที่ส่งเข้าไป คือ อะไร โดยสิ่งที่เราทำจะเรียกว่า Feature Map
Step 1: Initialization - กำหนดค่า Weight สุ่มเข้าไปในใน Feature Map
Step 2: Sampling - สร้าง Input Vector ใส่เข้าไป
Step 3: Matching - หา Neuron Node ที่เรียกว่าเป็น Winner Node ที่มีค่าใช้เคียงกับ Input Vector โดยเราต้อง
- ดูความใกล้เคียงของ Node ที่เป็น โดยใช้ Euclidean Distance
- หา Node ที่ชนะ โดยดูว่า Node ไหนมีระยะใกล้ที่สุด
Step 4: Updating - ปรับค่า Weight ใน Feature Map ให้สอดคล้องกับ Winner Node ที่เปลี่ยนไป อันนี้มีได้หลายสูตร เช่น
Step 5: วนทำข้อที่ 2 จนครบทุกๆ Input Vectorง
Step 6: ปรับค่า Learning Rate(α) โดยตัว Learning Rate หรือ อัตราการเรียนรู้ คือ
- อัตราการเรียนรู้สูงของ neural network ถ้ามีค่าสูงเกินไปจะทำให้การเรียนรู้ไม่มีประสิทธิภาพ และถ้าต่ำเกินไปก็จะใช้เวลาในการเรียนรู้นานแต่จะสามารถเรียนรู้ได้มีประสิทธิภาพมากกว่า ซึ่งปกติจะมีค่า 0.1 แต่เราสามารถเพื่มขึ้นได้ขึ้นกับลักษณะปัญหาของเรา กำหนดเป็นสมการอันนึง
- ที่มีการกำหนดค่า Learning Rate สูง เพราะใช้หลักการ Greedy คือ เอามามากที่สูงก่อน จากนั้นค่อยไปปรับจูนกับค่า weight ที่ที่เราได้สุ่มขึ้นมา จนได้ค่าที่มีประสิทธิภาพที่ แต่ละ Model ต้องการ
- โดยทั่วไปมักจะกำหนดค่า Learning Rate ไม่เกิน 1
Step 7: ลดขนาดพื้นที่ลงตาม Neighbor กับ node ลง โดยมีหลายวิธีจำกัดขนาดพื้นที่แบบสามเหลี่ยม สีเหลี่ยม
Step 8: Repeat ทำ Step 2-7 ซ้ำไปเรื่อยๆ ถึง Stop Condition
- จนกว่า Feature Map จะไม่มีการเปลี่ยนแปลง
- หรือ Learning Rate เข้าใกล้ 0
รู้ Step แล้ว แล้วมันเอาไปใช้อะไรได้บ้าง
- จัดกลุ่มไง - Clustering ทั้งหลาย งานไหนที่แบ่งกลุ่มได้ ก็เข้าข่ายที่อาจจะนำไปใช้ได้ เช่น คัดเลือก Project ที่เหมาะสม ตาม Feature ที่กำหนดให้
สิ่งที่ SOM มันทำ คือ ทำให้ข้อมูลที่มีหลายมิติ มันแบนลง มิติน้อยลง เพื่อให้คนทั่วๆไป สามารถทำความเข้าใจได้ง่ายครับ
เอ๊ะ มันดูคล้ายๆกับ K-Mean Clustering นะ แล้ว 2 ตัวนี้มันแตกต่างกันตรงไหน ?
- ถ้าถามผม ผมคิดว่า K-Mean เหมือน Concept คล้ายกัน เป้าหมายคล้ายกัน แต่จะไปดูที่จุด Centroid แต่ SOM หา Winner Node
- แต่การเลือกใช้ น่าจะขึ้นกับลักษณะของข้อมูลที่ได้มานะ โดยส่วนตัวเช้าใจว่า SOM ใช้พลังในการคำนวณ มากกว่า K-Mean นะ
Reference
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.