/ Data Science

Machine Learning ตอนที่ 1: ทำไมต้องมี Machine Learning

โลกเรามีปัญหาอะไร

ลองจินตนาการถึงปัญหาเหล่านี้

  • มองรูป แล้วบอกว่าของที่อยู่ในรูปคืออะไร
  • ฟังคลิปเสียง แล้วบอกว่าเสียงที่ได้ยินคือข้อความอะไร
  • แปลประโยคจากภาษาหนึ่งไปเป็นอีกภาษาหนึ่ง

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

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

เราสามารถให้คอมพิวเตอร์เรียนรู้จากข้อมูลเหล่านี้ แล้วให้มันแก้ปัญหาที่เป็นลักษณะเดียวกับที่อยู่ในตัวอย่างข้อมูล วิธีนี้เรียกว่า Machine Learning

Machine Learning ถูกนำมาแก้ปัญหาอะไรแล้วบ้าง

  • ปัญหาเกี่ยวกับรูป
    ระบุสิ่งของในรูปว่าคืออะไร และอยู่ตรงไหนของรูป (Object Detection)
    ดูภาพใบหน้าและบอกว่าเป็นใคร (Face Recognition)

  • ปัญหาเกี่ยวกับเสียง
    แปลงจากเสียงเป็นข้อความ (Speech Recognition)

  • ปัญหาเกี่ยวกับภาษา
    แปลประโยคจากภาษาหนึ่งไปเป็นอีกภาษาหนึ่ง (Machine Translation)
    วิเคราะห์อารมณ์ของข้อความ ว่าเป็นทางบวก ทางลบ หรือเป็นกลาง (Sentiment Analysis)

  • ปัญหาที่ใช้ข้อมูลทั่วไป
    คาดการณ์ยอดขายในอนาคตของสินค้า (Sales Forecasting)
    ประเมินโอกาสการคลิกโฆษณาของผู้ใช้ (Click-Through-Rate Prediction)

ตัวอย่างที่ยกมาเป็นเพียงส่วนหนึ่งของ Machine Learning เท่านั้น ยังมีปัญหาอื่นๆอีกมากมายที่ Machine Learning ถูกนำไปใช้

สำหรับข้อมูลที่ไม่มีการกำหนดรูปแบบที่ชัดเจน เช่น รูป เสียง หรือภาษา เราเรียกข้อมูลประเภทนี้ว่า Unstructured data ส่วนข้อมูลที่มีการจัดอยู่ในรูปแบบที่กำหนด เช่น ข้อมูลยอดขายของสินค้า หรือข้อมูลการคลิกโฆษณาของผู้ใช้ ข้อมูลประเภทนี้เรียกว่า Structured data

Machine Learning คืออะไร

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

มี Machine Learning ไปทำไม ในเมื่อคนก็แก้ปัญหาเดียวกันได้

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

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

Machine Learning (ML) เกี่ยวข้องยังไงกับ Artificial Intelligence (AI)

Machine Learning เป็นวิธีหนึ่งที่ได้มาซึ่งความเป็น AI

AI หมายถึงระบบคอมพิวเตอร์ที่มีความฉลาด ความฉลาดนี้มักวัดโดยเทียบกับคน ยิ่งฉลาดใกล้เคียงคนเท่าไหร่ ยิ่งใกล้เคียงความเป็น AI เท่านั้น ซึ่งระบบคอมพิวเตอร์ที่ฉลาดนี้สามารถสร้างขึ้นมาได้โดยใช้ Machine Learning หรือก็คือให้ระบบคอมพิวเตอร์เรียนรู้ความฉลาดจากชุดข้อมูลขนาดใหญ่ที่ถูกสะสมมา

Supervised Machine Learning: เรียนรู้จากข้อมูลที่มีคำตอบ

Machine Learning ที่เรากำลังพูดถึงต่อไปนี้ทั้งหมด เราจะพูดถึงประเภทที่เจาะจง คือประเภทที่เรียนรู้จากข้อมูลที่มีคำตอบ กลุ่มนี้เรียกว่า Supervised Machine Learning

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

ข้อมูลที่คำตอบมีศัพท์เฉพาะเรียกว่า Labeled data

Supervised Machine Learning เป็นกลุ่มที่เข้าใจง่ายที่สุดในความเห็นของเรา ดังนั้นถ้าเพิ่งเริ่มศึกษา Machine Learning ควรเริ่มจากกลุ่มนี้

วิธีการสร้าง Machine Learning Model

เริ่มจากจัดหาข้อมูลสำหรับให้ model เรียนรู้ (หรือจะเรียกว่าใช้สอน model หรือใช้ฝึก model ก็ได้) ข้อมูลชุดนี้เรียกว่า Training set หรือ Training data ซึ่งต้องเป็นข้อมูลที่มีคำตอบในตัว

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

สรุปขั้นตอน Gradient Descent
เริ่มต้นกำหนดค่าแบบสุ่มให้ model (ซึ่งเป็น model ที่ยังใช้งานไม่ได้)

  1. ให้ model ทำนายคำตอบของตัวอย่างข้อมูลแต่ละตัว
  2. ดูว่า model ทำนายคำตอบตัวไหนผิดบ้าง
  3. ปรับ model เล็กน้อย โดยดูจากตัวอย่างที่ทำนายผิด เพื่อให้อนาคตทำนายผิดน้อยลง

ทำ 1-3 วนไปเรื่อยๆ จนปริมาณการทำนายผิดไม่ลดลงแล้ว ให้หยุด เราจะได้ model ที่ใช้งานได้

gradient descent

  • สำหรับการดูว่าตัวอย่างไหน model ตอบผิดบ้าง และตอบผิดไปเท่าไหร่ เราต้องกำหนดวิธีวัดไว้ล่วงหน้า วิธีวัดความผิดพลาดนี้เรียกว่า Cost Function จากกราฟจะเห็นว่าความผิดพลาดจะลดลงเรื่อยๆเมื่อสอน model เป็นจำนวนรอบที่มากขึ้น

  • model ทุกตัวจะเก็บ parameter จำนวนหนึ่งไว้สำหรับการคำนวณ (หรือเรียกว่าการทำนายก็ได้) การปรับ model ที่พูดถึงนี้หมายถึงการปรับ parameter เพื่อให้ผลการคำนวณเกิดความผิดพลาดตามนิยามของ Cost Function น้อยลง

model ที่สามารถนำมาใช้สำหรับ Machine Learning มีด้วยกันหลายแบบ เรามาเริ่มจากอันที่ง่ายที่สุดก่อน

Logistic Regression

model นี้มีไว้สำหรับแยกข้อมูลสองประเภทออกจากกัน (Binary Classification)
เช่น มีข้อมูลของผู้ป่วย และให้ model ทำนายว่า เป็นโรคหรือไม่ เราเรียกผู้ป่วยที่เป็นโรคว่า ตัวอย่าง positive และผู้ป่วยที่ไม่เป็นโรคว่าตัวอย่าง negative

logistic regression

model รับ input เข้ามา ซึ่ง input ในที่นี้คือข้อมูลหลายๆอย่างของผู้ป่วยคนนึง โดยจะมี input กี่ตัวก็ได้ถึงแม้ในรูปจะมีแค่ 3 ตัวก็ตาม จากนั้น model ทำการคำนวณสองขั้นตอน

  1. ขั้นแรกคือคำนวณ Linear combination ของ input กับ parameter ของ model ( ∑ )
  2. ขั้นที่สองคือเอาผลลัพธ์จากขั้นแรกมาคำนวณ Sigmoid function ( σ )

ได้ออกมาเป็นความน่าจะเป็นที่จะเป็น positive (เป็นตัวเลข มีค่าระหว่าง 0 ถึง 1)

ในกรณีตัวอย่างนี้ เวลาสอน model ก็คือใช้ข้อมูลของผู้ป่วยจำนวนมาก พร้อมกับคำตอบว่าแต่ละคนเป็นโรครึเปล่า และใช้ Gradient Descent ในการหา parameter ที่เหมาะสมของ model จากนั้นเราจะได้ model ที่สามารถทำนายความน่าจะเป็นของการเป็นโรคนี้ของผู้ป่วยในอนาคตได้

Logistic Regression เป็น model แบบง่ายๆ ใช้ได้กับพวกข้อมูลที่เป็น Structured data บางประเภทที่ไม่ซับซ้อน ในความเป็นจริงอาจจะไม่ดีพอสำหรับตัวอย่างปัญหาการทำนายโรคที่กล่าวมา

ตอนต่อไปเราจะพูดถึง model ที่ซับซ้อนมากขึ้น

Machine Learning ตอนที่ 1: ทำไมต้องมี Machine Learning
Share this

Subscribe to Code on the Hill