เมื่อวานนี้ 20 /2/2016 มีโอกาสได้มาเรียน Machine Learning กับ ดร.กานต์ ที่ Geeky Base เป็นเวลาครึ่งวัน เนื่องจากไม่ได้ลงทะเบียนไว้ พอดีผ่านมาทำธุระแถวเกษตรพอดี เลยขอท่านอาจารย์มาขอความรู้ด้านนี้ไว้เนื่องจากกำลังสนใจอย่างมาก และถ้าได้รับคำชี้แนะจากคนที่มีประสบการณ์ก็จะได้ไม่หลงทาง สิ่งที่ได้รับจากการเรียนครึ่งวัน ขอสรุปคร่าวๆ ดังนี้
Machine Learning คืออะไร ?
การนำประสบการณ์ หรือข้อมูล (E=>Experience) มาสอนให้ Machine เรียนรู้ในรูปแบบฟังก์ชั่นของ โมเดลในการวัดผลต่างๆ (T => Task) และทำตรวจสอบผลลัพธ์ Measurement (P) สรุปก็คือ จุดประสงค์ที่เราสอนคอมพิวเตอร์ให้ตัดสินใจแทนเรา ซึ่งก็ต้องป้อนข้อมูล E => โมเดลในการวัดผล T => ตรวจสอบผลลัพธ์ P
ทำไมต้องใช้ Machine Learning
มนุษย์เรามีความสามารถในการตัดสินใจได้ไม่แน่นอนเหมือนเครื่องจักร อารมณ์มีผลต่อการตัดสินใจมากกว่าเหตุผล ดังนั้นในงานที่ต้องทำซ้ำๆเป็นประจำ หรือการตัดสินใจในสถานการณ์ต่างๆ การนำเครื่องมืออย่างคอมพิวเตอร์มาข่วยตัดสินใจก็จะช่วยให้ลด ความผิดพลาดของคนทำงาน (Human Error) ได้
Machine Learning กับ Statistics กับ Data Mining
หลายคนที่คิดว่า 3 อย่างนี้เหมือนกัน อาจจะมีส่วนจริงและไม่จริง แต่ถ้าหากมองที่จุดประสงค์ของทั้งสามอย่างนี้ ไม่ได้มีจุดประสงค์เหมือนกันซะทีเดียว แต่ละตัวมีจุดประสงค์ ดังนี้
- Machine Learning - นำข้อมูลดิบ หรือสถิติ มาเพื่อวิเคราะห์หาคำตอบความน่าจะเป็นเพื่อตัดสินใจกระทำบางอย่าง
- Statistics - ผลลัพธ์ที่ผ่านการวิเคราะห์แปลผลมาจากกลุ่มข้อมูล เพื่อนำเสนอในรูปแบบต่างๆ เช่น ค่าเฉลี่ย Min Max ค่าเบี่ยงเบนมาตรฐาน อื่นๆ
- Data Mining - การนำข้อมูลจำนวนมากมารวบรวม เพื่อ แบ่งกลุ่ม เรียงลำดับ แบ่งความสัมพันธ์ นำมาแสดงด้วยภาพกราฟฟืค เพื่อเป็นแหล่งรวบรวมคลังความรู้ของข้อมูลเพื่อใช้ในการค้นหา Knowledge Discovery in Databases สำหรับ Data Mining ก็เหมือนการทำเหมืองแร่ ที่เราสามารถนำมาสกัดเป็นทองแดง ทองคำ เหล็ก อะลูมิเนียม ถ้าเป็นข้อมูลก็คือเอาข้อมูลดิบมาแปรรูปให้มีความหมายและอ่านได้
แต่ว่ามีความเป็นไปได้ว่าทั้งสามเรื่องมีความสัมพันธ์กัน จากรูปที่เข้าใจน่าจะแสดงความสัมพันธ์ได้ประมาณนี้
จุดเริ่มต้นของทุกอย่างก็คือต้องมีข้อมูล Data ก่อน การทำ Data Mining จำเป็นต้องมีข้อมูล ส่วนการนำเสนอผลลัพธ์ในเชิงสถิติอาจจะใช้ข้อมูลจาก
ส่วน Machine Learning จะนำข้อมูลดิบ หรือข้อมูลที่มีการแปรผลแล้วไปใช้ในการต้ดสินใจเพื่อดำเนินการบางอย่างต่อไป
Programming กับ Machine Learning
การเขียนโปรแกรมเป็นการเขียนฟังก์ชั่นให้ทำงานได้ตาม Requirement ที่ได้รับมา ต่างจาก Machine Learning คือ
Machine Learning จะเป็นการเอาข้อมูลมาใส่ในฟังก์ชั่นหรือโมเดลเพื่อหาคำตอบ
Machine Learning นำไปประยุกต์ใช้ในงานอะไรบ้าง
- Casino นำ Machine Learning ใช้กล้องแสกนดูลูกค้าใหม่ จับดูพฤติกรรมของลูกค้า หากเล่นเสียมาก ก็จะพาไปเลี่ยงข้าวเพื่อให้รู้สึกดีและกลับมาเล่นใหม่
- Fast 7 -> God’s Eye
- predpol.com ใช้วิเคราะห์แนวโน้มการเกิดอาชญกรรม
เครื่องมือในการช่วยวิเคราะห์และจำแนกข้อมูลแบบต่างๆ
การเขียนโปรแกรมจำแนกรูปว่าอันไหนคือหมาอันไหนคือแมว เป็นเรื่องยากมากที่โปรแกรมเมอร์จะเขียนได้ทุกคน หรือหากต้องเขียนเองก็คงต้องใช้เวลามาก ปัจจุบันมีเครื่องมือที่นำมาช่วยในงาน Machine Learning สำหรับจำแนกข้อมูประเภทต่างๆดังนี้
- Search Engine
- Medical Diagnosis
- Object Recognition
- Stock Market Analysis
- Credit Card Fraud Detection
- Speech Recognition
โมเดลในการนำมาหาคำตอบของข้อมูลมีอะไรบ้าง
สำหรับโมเดลที่ใช้ใน Machine Learning มีมากมายหลายตัว ที่พอจับใจความได้ ก็จะมี (ท่านอาจารย์สอนสูตรคณิตศาสตร์กันเลยทำผมนี่หลุดไป ตกคณิตครับ)
- - k-Nearest Neighbours
- - Perceptron
- - Naive Bayes
- - Support Vector Machines
All models are wrong, but some are useful -> George E.P. Box
- ไม่มีโมเดลใดถูกต้อง 100 % แต่ก็ใช้ประโยชน์ได้ ดีกว่าไม่เลย อย่างเช่น Google Map ก็ไม่ได้มี สเกลถูกต้อง 100 % แต่ก็มีข้อมูลมากพอที่เราจะเชื่อถือและใช้ประโยชน์ได้
ในระหว่างที่เรียนเนื่องจากผมเขียนโปรแกรมด้วย NodeJS เป็นหลัก ก็เลย Search npm ดูก็เจอหลายตัว อย่างเช่น https://www.npmjs.com/package/machine_learning ซึ่งโมเดลที่ได้รับความนิยมทั่วไปก็น่าจะมีหมด
สำหรับโมเดลใหม่ที่แก้ไขปัญหาการวิเคราะห์ให้วัดผลข้อมูลได้ถูกต้องมากขึ้นที่ได้ยินวันอบรมก็คือ Deep Learning
Deep learning เป็นชื่อเรียกของการ learning อีกแบบนำวิเคราะห์ข้อมูลหลายๆ ลำดับขั้น
Panop
ดีครับ อยากถามว่า Math สำหรับ ML สำคัญมากน้อยเพียงใดครับ คือ กำลังจะตัดสินใจเรียน
ไม่ค่อยเก่ง คณิตเท่าไหร่ ครับ
ขอบคุณมาก
แทน
Sumphamit Khongcharoen
น่าสนใจมากเลยครับ พอดีผมกำลังหาข้อมูลทำรายงานเกี่ยวับ Deep Learning อยาก implement ได้ แต่ไม่รู้จะใช้ เครื่องมือตัวไหน และทำไงดีครับ
เพราะเพิ่งเริ่มศึกษา ยังไม่รู้เรื่องเลย
รบกวนขอความกรุณาแนะนำหน่อยได้ไหมครับ