เมื่อวานนี้ 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 ก็เหมือนการทำเหมืองแร่ ที่เราสามารถนำมาสกัดเป็นทองแดง ทองคำ เหล็ก อะลูมิเนียม ถ้าเป็นข้อมูลก็คือเอาข้อมูลดิบมาแปรรูปให้มีความหมายและอ่านได้
แต่ว่ามีความเป็นไปได้ว่าทั้งสามเรื่องมีความสัมพันธ์กัน จากรูปที่เข้าใจน่าจะแสดงความสัมพันธ์ได้ประมาณนี้
[img class=”aligncenter” src=”/wp-content/uploads/2016/02/ml.png”]
จุดเริ่มต้นของทุกอย่างก็คือต้องมีข้อมูล 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 อีกแบบนำวิเคราะห์ข้อมูลหลายๆ ลำดับขั้น
[img class=”aligncenter” src=”/wp-content/uploads/2016/02/maxresdefault.jpg”]