จริงๆ แนวคิดของ A.I. หรือปัญญาประดิษฐ์ มีมานานแล้ว
หากเป็นยุคพลเด็กๆ ที่ชัดที่สุดคือ การ์ตูนแมวหุ่นยนต์ที่ชื่อโดราเอม่อนนี่แหละ และน่าจะเป็นแรงบันดาลใจให้หลายๆ คนในการสร้างระบบพวกนี้ด้วย
หรือถ้าเป็นใหม่ๆ หน่อยระบบจาร์วิส ในหนังเรื่อง Iron Man มหาประลัยคนเกราะเหล็ก ที่โต้ตอบสั่งงานคู่ใจพระเอกในเรื่องได้อย่างรวดเร็ว
ทีนี้การจะทำให้ระบบรองรับการสร้าง และการทำงานของปัญญาประดิษฐ์ได้ก็ต้องเริ่มจากเจ้าของระบบเอง อย่างฝั่ง iOS ของ Apple ก็มี Core ML นี่ตัวหนึงล่ะ ที่เตรียมมาให้ใช้งาน
Core ML มีหน้าที่อะไรในระบบ iOS?
Apple กำหนดหน้าที่ของ Core ML อย่างชัดเจน นั่นคือ
ใช้รวมโมเดลของ Machine Learning เข้ากับตัวแอพพลิเคชั่น iOS
โดยมีการออกแบบให้รองรับกับการใช้งานแบบต่างๆ ที่เกี่ยวข้อง เช่น
- Vision สำหรับการวิเคราะห์ภาพ
- Foundation สำหรับการทำงานกับ ระบบประมวลภาษาธรรมชาติ (Natural Langauge Processing, NLP)
- GamePlayKit สำหรับการเรียนรู้ตรรกะการตัดสินใจ
และเจ้านี่ ยังถูกออกแบบให้ทำงานบนอุปกรณ์พกพาโดยเฉพาะ ทำให้กินพลังงานและทรัพยากรน้อย และสามารถทำงานได้โดยตรงจากภายในเครื่อง ทำให้มีความเสถียรสูง
Trained model คืออะไร?
สำหรับพวกเราที่เพิ่งมาจับด้าน Machine Learning นี้ อาจจะสงสัยว่า Trained Model คืออะไร ขออธิบายแบบง่ายๆ ว่า
Trained Model คือผลลัพธ์ของการใช้อัลกอริทึ่ม Machine Learning กับชุดข้อมูลหนึ่งนั่นเอง
โดยปกติ เราจะใช้ Model กับข้อมูลใหม่ๆ ที่อยู่ในกลุ่มเดียวกัน เช่น ถ้า Model ตัวหนึ่งสร้างจากการฝึกข้อมูลราคาคอนโดในประเทศไทย เราก็อาจจะใช้ Model ตัวนี้ในการพยากรณ์ราคายูนิตในคอนโดจากจำนวนห้องต่างๆ ได้
เราลองนึกง่ายๆ ว่า ถ้า Trained Model คือตัวละครในเกมส์ มันคือตัวละครที่เลเวลอัพทักษะในด้านในด้านหนึ่งโดยเฉพาะครับ สามารถเอาไปลุยภารกิจเฉพาะได้
ถ้ามี Model ที่สร้างจากเครื่องมืออื่นอยู่แล้วล่ะ?
แน่นอนว่า Apple ในตอนนี้ไม่ได้ปิดระบบมิดชิดเหมือนเมื่อก่อน แต่เปิดรับการทำงานกับมาตรฐานอื่นๆ มากขึ้น ในที่นี้ก็คือ Model ที่สามารถเอามาใช้ใน Core ML ได้นั่นเอง
โดยในที่นี้ทาง Apple เตรียม Core ML Tools เพื่อแปลง model ให้อยู่ในรูปแบบที่ใช้งานได้
ด้านล่างพลสรุป ประเภท Model, รูปแบบ, รวมถึงเครื่องมือที่รองรับไว้ให้เทียบดูแล้ว
ประเภท Neural Networks
- โมเดลที่รองรับ: Feedforward, convolutional, recurrent
- เครื่องมือที่รองรับ: Caffe v1, Keras 1.2.2+
ประเภท Tree ensembles
- โมเดลที่รองรับ: Random forests, boosted trees, decision trees
- เครื่องมือที่รองรับ: scikit-learn 0.18, XGBoost 0.6
ประเภท Support Vector Machines
- โมเดลที่รองรับ: Scalar regression, multiclass classification
- เครื่องมือที่รองรับ: scikit-learn 0.18, LIBSVM 3.22
ประเภท Generalized linear models
- โมเดลที่รองรับ: Linear regression, logistic regression
- เครื่องมือที่รองรับ: scikit-learn 0.18
ประเภท Feature engineering
- โมเดลที่รองรับ: Sparse vectorization, dense vectorization, categorical processing
- เครื่องมือที่รองรับ: scikit-learn 0.18
ประเภท Pipeline models
- โมเดลที่รองรับ: Sequentially chained models
- เครื่องมือที่รองรับ: scikit-learn 0.18
Core ML Tools เป็นแพคเกจ Python ตัวหนึ่ง (ได้ยินเสียงคนทำ Python เฮแถวนี้) สามารถค้นหาชื่อ coremltools บน Python Package Index ได้ครับ
วิธีแปลง Model เพื่อใช้ทำงาน
การใช้ Core ML Tools แปลง model นั้น เราสามารถใช้ภาษา Python ในการเขียนใช้งาน ซึ่งผลลัพธ์ของเราจะได้ไฟล์ Core ML model format หรือนามสกุล .mlmodel
เช่นการแปลง model ที่สร้างจาก Caffe ก็ใช้โหลดไฟล์นามสกุล .caffemodel ไปใช้กับคำสั่ง convert
import coremltools
coreml_model = coremltools.converters.caffe.convert('my_caffe_model.caffemodel')
แล้วสั่งบันทึกเป็นไฟล์ mlmodel
coreml_model.save('my_model.mlmodel')
และขึ้นอยู่กับ model ที่นำมาใช้ เราอาจต้องเตรียมข้อมูลต่างๆ เช่นชื่อรูปภาพ หรือประเภทของไฟล์ที่ใช้ด้วย โดยสามารถอ้างอิงได้จากวิธีใช้ของตัว Core ML tools โดยตรงที่นี่
วิธีเอา Model ไปในแอพพลิเคชั่น
เมื่อ Model ของเราพร้อมแล้ว เราสามารถเอาไปใช้กับโปรเจค Xcode ที่ปกติใช้ทำแอพพลิเคชั่น iOS ได้ ตัวอย่างภาษาอังกฤษมีอยู่ที่นี่
ส่วนของ Xamarin ก็มีเนื้อหาในเอกสารแนะนำอยู่ แต่พรุ่งนี้ Next Technology Meetup จะไปจอยกับ Digital Thailand Club จะไปเล่า กับเดโมการเอามาใช้ง่ายๆ ใน Xamarin iOS กัน
เดี๋ยวว่างๆ หลังงานช่วงนี้ จะมาทำคลิปวิดีโอสอนแยกไว้ต่างหาก หวังว่าคงช่วยให้เข้าใจหน้าที่ และเป้าหมายของ Core ML ใน iOS มากขึ้นนะคร้าบ