Scratching The Surface of Semi-supervised Learning

Konpat Ta Preechakul
O v e r f i t t e d
2 min readAug 24, 2015

--

(หากยังไม่รู้ว่า Supervised Learning คืออะไร ? อ่านก่อน Machine Learning เรียนอะไร, รู้ไปทำไม @iboss)

หากเคยลองใช้ Supervised learning ในชีวิตประจำวันหรือพยายามใช้กับข้อมูลจริง ๆ ที่อยู่รอบตัวเรานั้น ก็จะพบว่า “ทำไมยากจัง” ข้อมูลเฉย ๆ นั้นหากไม่ยากหรอก แต่ “ป้าย” นั้นหายาก เช่น เราสามารถหารูปอะไรก็ได้ เยอะมาก ๆ เลย ง่าย ๆ แค่พิมพ์ใน google.com แต่กลับไม่มีใครติดป้ายไว้ให้ว่ารูปนั้นคือรูปอะไรแน่ ๆ

ถ้าหากเราต้องการเอาข้อมูลเรานี้มาให้คอมพิวเตอร์เรียนรู้ อาจจะเป็นโปรแกรมจำภาพสิ่งต่าง ๆ เราต้องสอนมันด้วยรูปภาพ “สิ่งต่าง ๆ” จำนวนมากแต่เรากลับไม่มีข้อมูลที่จะสอนคอมพิวเตอร์ว่ารูปนี้ที่ให้ดูอยู่เนี่ยคือภาพอะไรกันแน่

ถ้าเราจะไปติด “ป้าย” ของแต่ละรูป อย่าว่าแต่คนคนเดียว สักพันคนก็คงติดกันไม่ไหวสำหรับข้อมูลที่เรามีอยู่ในอินเตอร์เน็ตนี้ ทำอย่างไรดีให้เราสามารถใช้ข้อมูลจำนวนมาก (เพื่อจะได้ความแม่นยำสูง ๆ) แต่ก็ไม่ต้องนั่งติดป้ายเอง (เพราะว่ามีราคาแพง ลงทุนสูง) แน่นอนว่าเราทำมันได้ด้วยเทคนิคในกลุ่มของ Semi-supervised learning

คงไม่เกินความคาดหมายกันเพราะว่า Supervised learning จัดการกับข้อมูลที่มี “ป้าย” และ Unsupervised learning จัดการกับข้อมูลที่ไม่มีป้าย ถ้าเราต้องการเชื่อมสองโลกนี้ ให้สองสิ่งนี้ช่วยเหลือเกื้อกูลกันมันก็ต้องออกมาเป็นชื่อประมาณ กึ่งๆ supervised learning ก็คือ Semi-supervised learning นี่แหละ

ดูตัวอย่งให้เห็นภาพซักหน่อย

สมมติว่าเรามีข้อมูลที่ติด “ป้าย” อยู่สองตัว เรียกว่า “แดง” กับ “เหลือง” หากเราต้องการสร้าง “กฎ” การแบ่งข้อมุลนี้ออกจากกัน ก็จะเห็นว่าเป็นวิธีทาง supervised learning และก็ทำได้ไม่ยาก ก็คือเส้นสีเทาด้านบนนั่นเอง หวังว่าเราท่านจะเห็นด้วยกันว่าเส้นสีเทานี่ค่อนข้างจะเป็นกลางทีเดียว และก็คงหาเส้นที่ดีกว่านี้ได้ยากแล้ว หากเรามีข้อมูลเพียงเท่าที่เห็นนี้

เอาใหม่.. สมมติว่าเราไม่ได้มีแค่สองจุดนี้

เรามีจุด “ดำ” อีกหลาย ๆ จุด แต่ไม่ได้ “ติดป้าย” เอาไว้ และเราก็มีจุดที่ติดป้ายไว้เท่าเดิม หวังว่าเราหลาย ๆ คนจะเริ่มเห็นว่าเส้นสีเทา เริ่มจะไม่สมเหตุสมผลแล้ว (มันน่าจะตีได้ดีกว่านี้มั้งงง) เมื่อไหร่ที่เรารู้สีกอย่างนี้ก็แสดงว่าเราเริ่มรู้สึกว่า แม้ข้อมูลที่เรามีเพิ่มขึ้นมาไม่ได้ “ติดป้าย” ไว้ แต่มันก็บอกอะไรเราได้บางอย่าง

ผมว่าคงไม่ยากเกินไป ที่จะมองว่าที่จริงแล้วเส้นที่ดีกว่าเส้นตรงด้านบนอาจจะเป็น “เส้นโค้ง” แบบนี้แทน

แก้ไข: ผมควรจะย้ำตรงนี้เล็กน้อยว่า เนื่องจากเราไม่รู้จริง ๆ ว่า จุดดำ ๆ แท้จริงแล้วสีอะไร เพราะฉะนั้นเราอาจจะมองได้ “เส้น” ไม่เหมือนกันได้ ซึ่งก็ไม่มีใครถูกไปกว่ากัน ความถูกต้องจะขึ้นอยู่กับจะเอาไปใช้กับงานอะไรมากกว่า

และถ้าเราบอกได้ว่ามันควรเป็นเส้นโค้งแบบนี้ เราก็บอกได้อีกว่า “เป็นไปได้หรือไม่ที่จุดดำ ๆ ฝั่งซ้ายก็น่าจะเป็นสีแดงด้วย และจุดดำ ๆ ฝั่งขวาก็น่าจะเป็นสีเหลืองด้วย” แสดงว่าตอนนี้ เราสามารถ “ระบายสีจุด” ให้เหมาะสมได้เช่นภาพดังต่อไปนี้

พอเป็นแบบนี้แล้วเราก็จะเห็นว่ามันก็คงไม่เกินไปที่เราจะ google เพื่อหาภาพจำนวนมาก และให้คนระบุ หรือ ติดป้าย ให้กับตัวอย่างภาพจำนวนเล็กน้อย และคอมพิวเตอร์ก็สามารถคิดเองได้ว่าภาพ ๆ อื่น ๆ น่าจะเป็นภาพใด และสามารถใช้ข้อมูลเหล่านั้นมาเรียนรู้แบบ supervised learning ราวกับว่าภาพต่าง ๆ ได้ถูกติดป้ายไว้อย่างดีแล้ว

อย่างไรก็ดีนี่เป็นเพียงตัวอย่างที่ถูกทำให้ดูง่าย และคิดว่ามันง่ายเท่านั้น เพราะว่าในชีวิตจริงข้อมูลไม่ได้มีเส้นบาง ๆ กั้นสวยงามอย่างนี้ มันอาจจะเป็นตัวเลือกที่เสี่ยงกว่านี้มาก เช่นถ้าเราเลือกผิดมันส่งผลให้ประสิทธิภาพโดยรวมของระบบ แย่กว่าการที่เราเลือกไม่ใช้พวกจุดดำ ๆ เหล่านี้ก็เป็นได้

--

--

Konpat Ta Preechakul
O v e r f i t t e d

A graduate student in Machine Learning seeking revolutionary intelligent machines