“Machine Learning(ML)” คืออะไร มาหาคำตอบกัน03 September 2020Programing

“Machine Learning(ML)” คืออะไร มาหาคำตอบกัน

เคยสงสัยหรือไม่ว่า ทำไม

Netflix แนะนำหนังที่ตรงกับความชอบของเราได้

Facebook รู้ได้อย่างไรว่าหน้าเราเป็นใคร

Spotify รู้ได้อย่างไรว่าเราชอบเพลงแนวไหน

รถ Tesla วิ่งได้อย่างไร โดยไม่มีคนขับ 

Alpha Go แข่งหมากล้อมชนะคนได้อย่างไร

ซึ่งเบื้องหลังเทคโนโลยีเหล่านี้ล้วนแต่ใช้ Machine Learning ในการพัฒนา แล้ว Machine Learning มันคืออะไร เรามาหาคำตอบไปพร้อมกันเลยค่ะ

Machine Learning คือ การทำให้ระบบคอมพิวเตอร์เรียนรู้ได้ด้วยตนเอง โดยใช้ข้อมูล

เน้นตรงคำว่า โดยใช้ “ข้อมูล

ซึ่งแตกต่างกับการเขียนโปรแกรมทั่วไป เพราะการเขียนโปรแกรมทั่วไปเราจะใส่ข้อมูล(Data) และเขียน Program สั่งคอมพิวเตอร์เพื่อให้ได้ผลลัพธ์(Output) ออกมาตามที่สั่ง

แต่ Machine Learning เราไม่ได้เขียน Program สั่งคอมพิวเตอร์เพื่อให้ได้ Output ตามที่สั่ง แต่เราใส่ Data และ Output(ผลลัพธ์) เข้าไป เพื่อให้ได้ Program ที่จะนำไปตอบในอนาคตได้ว่า Input แบบนี้ จะได้ Output ออกมาเป็นอะไร

การเปรียบเทียบ Traditional Programming กับ Machine Learning

ซึ่งมีรูปแบบการเรียนรู้ที่หลากหลายมาก แต่เราจะพูดถึงการเรียนรู้ 3 แบบ หลักๆ ที่ใช้กันมาก คือ

Supervised Learning —- เรียนรู้โดยมี data มาสอน

Unsupervised Learning —- เรียนรู้โดยไม่มี data สอน

Reinforcement Learning —- เรียนรู้ตามสภาพแวดล้อม

เราจะยกตัวอย่างให้เห็นชัดๆ ไปทีละเรื่อง 

Supervised Learning

Supervised Learning คือการเรียนรู้ โดยมี data มาสอน เช่น เด็กน้อยต้องไปสอบแยกแยะประเภทหมา แมว 

เราจึงต้องชี้ให้เด็กน้อยรู้จักหมา รู้จักแมว หลายๆ ครั้ง จนเด็กจำได้ว่า หมาเป็นสัตว์ 4 ขา มี 2 หู 1 หาง แล้วจึงอุ้มหมามาถามเด็กว่า นี่อะไร? เด็กน้อยก็จะตอบว่า “หมาค่ะ”

คอมพิวเตอร์ก็ทำได้เหมือนกันนะ แต่คอมพิวเตอร์ไม่มีตา อ่าวไม่มีตาแล้วทำยังไงละ !!

นัก Data Scientist จึงสร้าง Model ที่ทำให้คอมพิวเตอร์รู้จักหมา แมว ขึ้นมา โดยเอาข้อมูล แมว เช่น สีขน ลักษณะ ของแมวแต่ละตัว แปลงให้เป็นภาษาคอมพิวเตอร์ (มันก็คือชุดตัวเลข ที่เรียกว่า features) พร้อมเฉลยเลยว่า นี่คือแมว โดยใส่ข้อมูลเป็นตัวเลข (เราเรียกว่า labels) ไปบอกคอมพิวเตอร์ และเอาข้อมูลหมาใส่เข้าไปพร้อมเฉลยว่านี่คือหมา(เราเรียกขั้นตอนนี้ว่า Feature Extraction)

เมื่อใส่ input เสร็จ นัก Data Scientist ก็จะ Train Model เพื่อให้คอมพิวเตอร์แยกแยะหมาแมวได้ ตาม features (เราเรียกขั้นตอนนี้ว่า Classification)

หลังจากนั้นเราเอา แมวมาให้คอมพิวเตอร์ดู แล้วให้ตอบว่านี่คืออะไร? คอมพิวเตอร์ก็ดูจาก features ที่ใส่ไปให้ และก็สามารถ Predict หรือตอบได้ว่า นี่คือแมว

Process การ Train และ Predict จะเป็นสิ่งที่ต้องทำเสมอในการทำ Machine Learning Model (ไว้มาลงลึกในภาคปฏิบัติกัน)

จริงๆ แล้ว การใส่ features ของภาพและวิธีการในการแยกแยะ ที่เราใช้กันบ่อยโดยไม่รู้ตัวว่าเป็น Machine Learning ก็คือการรัน Regression และยังมี features อื่นๆ ที่นิยมใช้กัน เช่น Support vector machine, Naive Bayes, Gradient boosting และ Classification trees(หรือ random forest)

Regression analysis
Output ที่ได้จากการรัน Regression ที่มา Wikipedia: Regression analysis

Unsupervised Learning

Unsupervised Learning ตรงข้ามกับ Supervised Learning คือไม่มี data มาสอน เทียบได้ก็คือ ไม่บอกเด็กน้อยแล้วว่า นี่คือหมาหรือแมว แต่ให้เด็กน้อยแยกแยะได้เองว่านี่คือหมาหรือแมว ซึ่งมันน่าจะยากน่าดูนะเนี่ย

แล้วเด็กน้อยจะแยกแยะเองได้อย่างไรละ ?

เด็กน้อยก็จะสังเกตรูปร่างหน้าตาของหมา แมวเอง ว่ามีลักษณะอย่างไร แล้วเอาไปวิเคราะห์และประมวลผลเองว่าอันไหนคือหมา อันไหนคือแมว ในทางปฎิบัตินั้นยากเหมือนกันนะเนี่ย

สมมติว่ามีหมา 3 สายพันธุ์ จะแยกหมา 3 สายพันธุ์ได้อย่างไร?

วีธีง่ายสุดก็แยกตามขนาด น้ำหนัก และส่วนสูง

แต่บังเอิญไปค้นหารูปในอินเตอร์เน็ตเจอรูปหมา 3 ตัว มี 3 สีพอดี เลยเอามาติ๊ต่างเลยละกันว่า แกน y คือน้ำหนัก แกน x คือส่วนสูง ส่วนอายุเท่าๆ กันหมด

เราเลยแยกแยะได้ว่า หมาสายพันธ์เดียวกัน ที่อายุไล่เลี่ยกัน มีน้ำหนักใกล้เคียงกัน ส่วนสูงก็ไม่ห่างกันมาก สมควรจะเกาะกลุ่มกัน (เราเรียกว่าการทำ Clustering)

Cluster
ที่มา Wikipedia: Cluster Analysis 

Model สำหรับทำ Clustering มีมากมาย แต่ที่นิยมใช้กันคือ K Nearest Neighbour และ K Mean

Reinforcement Learning

Reinforcement Learning คือการเรียนรู้และเปลี่ยนไปตามสภาพแวดล้อมที่ตนเองอยู่ เพราะเหตุนี้ Reinforcement Learning จึงเป็นรูปแบบที่ดูเหมือนจะเข้าใกล้คำว่า AI(Artificial Intelligence) มากที่สุด

เข้าใจง่ายๆ เลย ก็ให้นึกถึงเวลาเด็กฝีกเดิน !!

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

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

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

Alpha Go
ที่มา https://deepmind.com/research/case-studies/alphago-the-story-so-far

วิธีที่ใช้กันบ่อยๆ คือ Markov Decision Processes(MDP) และ Q-learning

และนี้ก็คือความหมายของ Machine Learning ตามแบบฉบับของผู้เขียนที่ได้เคยศึกษามา หากท่านได้มีคำแนะนำเพิ่มเติม สามารถ Comment กันมาได้เลยนะคะ

ก่อนหน้า
ถัดไป