Machine Learning คืออะไร?
เคยสงสัยกันบ้างรึเปล่า ว่า
Facebook รู้ได้อย่างไรว่าหน้าเราเป็นใคร
Spotify รู้ได้อย่างไรว่าเราชอบเพลงแนวไหน
รถที่วิ่งโดยไร้คนขับ วิ่งได้ยังไง เลี้ยวได้ด้วย ทำไมไม่ชนกันตาย??
Machine Learning อยู่กับเรามานานแล้ว นานตั้งแต่เกิดสำหรับหลายๆคน เพราะมันเริ่มต้นตั้งแต่สมัยปี 1959 ไม่ใช่เรื่องใหม่เลย
หากใครเคยดู The Imitation game เป็นเรื่องราวการถอดรหัสลับของนาซี ในสงครามโลกที่พลิกให้ฝั่งพันธมิตรเป็นฝ่ายชนะ จะเห็นเครื่อง ENIGMA ที่สร้างโดย Alan Turing บิดาแห่ง Computer Science ในปัจจุบัน (แต่เนื้อเรื่องไม่ได้มาทาง machine learning เลยนะ ไปทางทฤษฏีเกม เสียมากกว่า)
เจ้าเครื่องนี้มันก็คำนวนมั่วๆไปเรื่อยๆตามกลไกที่ตั้งและการจูนค่าต่างๆด้วยการหมุน ก้อนกลมๆ ที่อยู่หน้าเครื่องมากมาย เพื่อหาความสัมพันธ์ของรหัสลับ ที่ได้จากคลื่น บ้างก็กล่าวว่านี่คือ super computer เครื่องแรก ที่ทำเรื่อง machine learning
มาตอบคำถามในตอนแรกกันดีกว่า ว่าเรื่องวิเศษๆเหล่านั้นได้ทำอย่างไร
คำตอบคือ “เขาใช้ Machine Learning”
Machine Learning คือ การทำให้ระบบคอมพิวเตอร์เรียนรู้ได้ด้วยตนเอง โดยใช้ ข้อมูล
ย้ำดังๆ ตรงคำว่า โดยใช้ “ข้อมูล”
ซึ่งมันแตกต่างกับการเขียนโปรแกรมทั่วไป เพราะ Programming เราจะใส่ ข้อมูล (Data) และ Program เข้าไปเพื่อให้ได้ Output
แต่ Machine Learning เราไม่ได้ Program คำตอบ เราใส่ Data และ Output (ผลลัพธ์) เข้าไป เพื่อให้หา Program ที่จะนำไปตอบในอนาคตได้ว่า Input แบบนี้ Output จะเป็นอะไร
การใช้ข้อมูล ใช้ได้หลายแบบ ซึ่งมันจะแบ่งตามประเภทของ Machine Learning
Machine Learning มีอะไรบ้าง มีกี่แบบ
ศาสตร์แขนงนี้ กว้างเป็นทะเลครับ ถ้าจะให้แบ่ง ก็คงแบ่งได้ 3 แบบ
- Supervised Learning — เรียนรู้โดยมี data มาสอน
- Unsupervised Learning — เรียนรู้โดยไม่มี data สอน
- Reinforcement Learning — เรียนรู้ตามสภาพแวดล้อม
จะยกตัวอย่างชัดๆทีละเรื่อง เปรียบ Machine Learning สอนหุ่นยนต์ เหมือนการสอนเด็กน้อยให้แยกแก้วน้ำ ออกจาก ปากกา นะครับ
Supervised Learning
คือการเรียนรู้ โดยมี data มาสอน ชัดๆเลยก็คือ เด็กน้อยต้องไปสอบแยกแยะประเภทหมาแมว
เราจึงชี้ให้เด็กน้อย รู้จักแมว ชี้ให้รู้จักหมา หลายๆครั้งจนเด็กจได้
แล้วจึงอุ้มแมวมาถามเด็กว่า นี่อะไร?
เด็กน้อยก็จะตอบว่า “แมวค่ะ ❤ !!” (น่ารักเชียะ )
คอมพิวเตอร์ ก็ทำได้เช่นกัน แต่คอมพิวเตอร์ไม่มีตา !!
Data Scientist จึงต้องสร้าง Model ที่จะทำให้คอมพิวเตอร์รู้จักหมาแมวเข้าไป
โดยเอาข้อมูลหมาแมวใส่เข้าไปเช่น ใส่สี ใส่ลักษณะ ของแมวแต่ละตัวเข้าไป โดยแปลงให้เป็นภาษาคอมฯก่อน หรือเป็นตัวเลขนั่นเอง (เราเรียกมันว่า features)
พร้อมเฉลยไว้เลยว่า นี่คือแมว !! โดยใส่ข้อมูลเป็นตัวเลข (เราเรียกมันว่า labels)
และก็เอาหมาใส่เข้าไปพร้อมเฉลยว่านี่คือหมา
เมื่อใส่ Input เสร็จ Data Scientist ก็จะ Train Model เพื่อให้คอมพิวเตอร์แยกแยะหมาแมวได้ ตาม features
หลังจากนั้นเราก็เอา แมวมาให้ คอมพิวเตอร์ดู แล้วให้ตอบว่า นี่อะไร? คอมพิวเตอร์ก็ดูจาก features ที่ใส่ไปให้ และสามารถ Predict หรือตอบได้ว่า นี่คือแมว !!
Process การ Train และ Predict จะเป็นสิ่งที่ต้องทำเสมอในการทำ Machine Learning Model (ไว้มาลงลึกภาคปฏิบัติกัน)
(จริงๆการใส่ features ของภาพและวิธีการในการแยกแยะ ก็จะเป็นเรื่อง convolutional neural network แต่ตอนนี้ใจเย็นๆเอาแค่ Concept ก่อน)
ที่ใช้กันบ่อยโดยไม่รู้ตัวว่าเป็น Machine Learning คือการรัน Regression จ้า
อื่นๆ ก็
- Support vector machine
- Naive Bayes
- Gradient boosting
- Classification trees / random forest
Unsupervised Learning
Unsupervised Learning นั้นตรงกันข้ามกับ Supervised Learning คือไม่มี Data มาสอน ถ้าให้เทียบก็คือ ไม่บอกเด็กน้อยแล้วว่า นี่คือหมาหรือแมว แต่ให้เด็กแยะแยะได้เอง (ซึ่งมันก็คงจะยากอะนะ)
แยกแยะเองได้อย่างไร?
เด็กน้อยก็จะสังเกตรูปร่างหน้าตาของแมวได้ รูปร่างหน้าตาของหมาได้ ว่ามันไม่เหมือนกัน แต่ในทางปฏิบัตินั้นยาก
สมมติว่าต้องมีแมว 3 สายพันธุ์ จะแยกง่ายสุดทำอย่างไร?
ก็แยกตามขนาด น้ำหนัก และส่วนสูง
บังเอิ๊นบังเอิญ ไปเจอรูปในเน็ตเป็น 3 สีพอดี เอามาติ๊ต่างเลยละกันว่า แกน y คือน้ำหนัก แกน x คือ ส่วนสูง อายุเท่าๆกันหมด
สายพันธ์เดียวกัน ที่อายุพอๆกัน ก็ควรจะเกาะกลุ่มกัน จริงมั้ยครับ ก็จะแบ่งได้ดังรูป
Model ที่จะหาตัวนี้ก็มีมากมาย ตัวอย่างโมเดลที่ง่ายที่สุด ก็จะเป็นการพยายามหาระยะห่างจากจุดๆหนึ่งไปอีกจุดหนึ่ง ก็จะได้การกระจุกตัวนั่นเอง
วิธีทำ ก็คล้ายๆเลย เอาข้อมูลใส่ไป ยำกัน ได้ออกมา จบบบ (ค่อยลงละเอียดเนอะ)
แต่ในชีวิตจริงมันซับซ้อนกว่านั้นมากครับ โมเดลที่ใช้ๆกันคือ
- K Nearest Neighbour
- K Mean
Reinforcement Learning
ในบรรดา Machine Learning ทั้งหมด Reinforcement Learning คือสิ่งที่ดูเป็น Artificial Intelligence (AI) ที่แท้ทรู ที่สุด เพราะจะเรียนรู้และเปลี่ยนไปตามสิ่งแวดล้อม
เข้าใจง่ายที่สุด ให้นึกถึงเวลา เด็ก ฝึกเดิน
ในการเดินแต่ละครั้ง มีหลายปัจจัยที่ต้องคิด ที่เด็กน้อยจะต้องทำให้ได้คือ ยืนอย่างไร พื้นเสมอหรือไม่ ทิ้งน้ำหนักตัวตรงไหน กางแขนกี่องศา ก้าวเท้าระยะเท่าไหร่ ยกขาสูงแค่ไหน
มันดูยากมากสำหรับเด็กน้อย ก็ต้องทดลองเดิน ไปเรื่อยๆ
และให้รางวัลเด็กน้อยเป็นช็อคโกแลต เมื่อเด็กเดินสำเร็จ แต่ถ้าไม่เดินก็ไม่ให้รางวัลบ
เด็กน้อยก็จะเข้าใจว่า แบบนี้ดี แบบนี้ไม่ดี
อีกตัวอย่างหนึ่งที่ชัดคือการฝึกสัตว์เลี้ยงครับ
วิธีนี้เหมาะมากกับโจทย์บางประเภท คือการหากลยุทธ์ที่ทำให้ชนะเกม เช่นเดินออกจากเขาวงกต
ที่ใช้กันบ่อยๆคือ
- Markov Decision Processes (MDP)
- Q-learning