Machine Learning Life Cycle: 7 ขั้นตอนง่ายๆ ในการสร้างโมเดล ML

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

“Your Idea” หรือ สิ่งที่คุณต้องการสร้าง

ก่อนอื่นมาเริ่มกันที่ “idea” หรือ แนวคิด ของสิ่งที่คุณต้องการทำกันก่อนเลยค่ะ

คุณมีไอเดียจะสร้าง Application ที่ทำนายอารมณ์ของคน เช่น ถ้าทำนายว่าเศร้า ระบบอาจจะเสนอทางเลือกว่า “Call a friend?” (อยากจะโทรหาเพื่อนมั้ย?) หรือ จะ “See a cute pictures” (อยากดูรูปน่ารักๆ มั้ย?) เพื่อทำให้คนๆ นั้นมีอารมณ์ที่ดีขึ้นได้

ถ้าคุณตัดสินใจใช้ ML เข้ามาช่วยในการทำงาน เราจะพาไปดูว่า คุณจะต้องทำขั้นตอนอะไรบ้าง! มาดูกันเลยค่ะ

1. กำหนดขอบเขตของปัญหา (Problem Definition)

ในที่นี้เราวิเคราะห์ และ ทราบว่า

  • 1- ปัญหาของเราเป็นปัญหาประเภท “Binary Classification” หรือ ปัญหาของการจัดหมวดหมู่ของๆ 2 กลุ่ม ซึ่งในที่นี้คือ จากรูปเราต้องการแบ่งกลุ่มคนออกเป็น 2 กลุ่ม คือ “Sad” (เศร้า) กับ “Not Sad” (ไม่เศร้า)
  • 2- เราตั้งสมมุติฐานว่าอารมณ์ของบุคคลสามารถแบ่งแยกได้จากการแสดงออกทางหน้าตา

2. “Data Collection” หรือ การรวบรวมข้อมูล

เป็นขั้นตอนที่สำคัญมากๆ ในการทำงานของ Machine Learning เพราะการมีข้อมูลตั้งต้นที่ไม่เหมาะสม มีความเป็นไปได้สูงมากที่จะได้มาซึ่งโมเดลที่แย่ ถึงแม้ว่าวิธีการที่ใช้ (ML algorithm) ในการทำงานจะเป็นวิธีที่มีประสิทธิภาพมากก็ตาม เปรียบเสมือน เอาหนังสือเรียนที่มีข้อมูลที่ไม่ถูกต้อง ถึงแม้จะไปสอนเด็กที่มีความเฉลียวฉลาดแค่ไหน เด็กก็ย่อมจะถูกบิดเบือนทางความคิดไปกับข้อมูลที่ไม่มีประสิทธิภาพนั่นเอง

ในการเก็บรวบรวมข้อมูลนั้น สามารถเกิดคำถามได้อย่างมากมายในระหว่างขั้นตอนการวางแผน และ เก็บรวบรวมข้อมูล ตัวอย่างเช่น เมื่อเราต้องการเก็บรวบรวมภาพถ่ายของใบหน้าของผู้คน ก็ต้องมานั่งวางแผนว่า …

  • 1- คุณจะเก็บข้อมูลจากใคร ผู้คนในวัยหนุ่มสาว? ผู้สูงอายุ? เด็ก? ผิวขาว? ผิวสองสี? ผมตรง? ผมหยักศก? เป็นต้น
  • 2- จะเก็บข้อมูลเหล่านี้มาจากที่ไหน ส่วนไหนของโลก? เอากี่ทวีป? กี่จังหวัด? เป็นต้น และ ข้อมูลของคนที่เก็บมาจากพื้นที่ที่แตกต่างกัน มีลักษณะเหมือนหรือแตกต่างกันอย่างไร เราจะต้องทำความเข้าใจในส่วนนี้ด้วย
  • 3- เมื่อเก็บข้อมูลมาได้แล้ว จำนวนล่ะ? จะต้องมีข้อมูลซักกี่คนถึงจะเรียกว่า “พอ” 10? 100? หรือ ต้องการเป็นล้านคน?

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

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

  • 1 – ข้อมูลที่ได้มีความชัดเจนเพียงพอหรือไม่ ถ้าภาพเบลอเกินไป ดีไม่ดีระบบอาจจะอ่านเจอ 1 ตา 2 ปากก็เป็นได้! ดังนั้นอย่าลืม “ความคุมคุณภาพความชัดเจนของรูป” ด้วยค่ะ
  • 2 – เมื่อเก็บรูปมาแล้ว มีข้อมูลอื่นๆ ที่จะต้องเก็บมาด้วยหรือไม่ เช่น อายุ เพศ เมืองที่อยู่อาศัย ข้อมูลเหล่านี้ถือว่าเป็น “Features” ค่ะ และเจ้า Features นี้เอง ถ้าเราเก็บดีๆ มันก็อาจจะนำเราไปสู่การค้นพบที่คาดไม่ถึงได้เลยทีเดียวค่ะ
  • 3 – ข้อมูลอีกอย่างที่สำคัญก็คือ “Label” ค่ะ Label หรือ ป้ายข้อความ ในที่นี้หมายถึง เมื่อเก็บรูปมาแล้ว เราก็ต้องมีคลาส หรือ กลุ่มบอกด้วยว่ารูปแต่ละรูปนั้น “Sad” หรือ “Not sad” เพื่อให้โมเดลได้ทำการเรียนรู้ในอนาคตว่า หน้าแบบนี้ คือ เศร้า รึเปล่านั่นเองค่ะ
  • 4- เมื่อได้ข้อมูลมาแล้วเท่านั้นยังไม่พอ เราต้องคิดอีกว่าเราได้ข้อมูลของคนในแต่ละกลุ่มเพียงพอ และ มีความสมดุลกันระหว่างจำนวนข้อมูลทั้งสองกลุ่มหรือไม่

เมื่อได้ข้อมูลที่เราต้องการแล้ว ต่อมาก็จะเข้าสู่ขั้นตอนของการ “Preprocessing” หรือ การจัดการข้อมูลก่อนใช้งาน หรือ การเตรียมความพร้อมของข้อมูลก่อนจะใช้งานด้วย ML นั่นเอง ซึ่งวิธีที่ใช้ในการ Preprocess นั้นจะขึ้นอยู่กับลักษณะของข้อมูลที่เรามี เช่น ในที่นี้ข้อมูลของเราเป็นรูปภาพ การ Preprocessing ก็อาจจะเป็นการปรับให้รูปอยู่ใน Format เดียวกัน หรือ ปรับขนาด และ ความละเอียดของรูปทั้งหมดให้เท่ากัน เป็นต้น

3. Spliting up data หรือ การแบ่งข้อมูล

เสร็จจากการเก็บรวบรวม และ การ Preprocessing ข้อมูลแล้ว ในขั้นตอนนี้เราจะทำการ “แบ่งข้อมูล” ออกเป็น 3 ส่วนด้วยกัน คือ

  • Training Set (ข้อมูลสอน)
  • Validation set (ข้อมูลตรวจสอบความถูกต้อง)
  • Test set (ข้อมูลทดสอบ)

โดยปกติแล้วชุดข้อมูลสอน จะเป็นชุดข้อมูลที่ใหญ่ที่สุด ใช้ในการ “Train” หรือ สอนโมเดล ML เพื่อให้สามารถทำงานได้ในอนาคตเมื่อมีข้อมูลชุดใหม่เข้ามา ในส่วนของข้อมูล Validation และ Test อาจจะมีขนาดที่ใกล้เคียงกันก็ได้ โดยข้อมูลสองชุดนี้จะต้องเป็นข้อมูลที่ โมเดล ML ไม่เคยเห็นมาก่อน

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

4. Define a model หรือ การเลือกโมเดล ML

ขั้นตอนนี้จะทำการเลือกโมเดล ML ที่เหมาะสมกับปัญหา นับว่าเป็นอีกขั้นตอนที่สำคัญ เพราะว่าเราจะต้องทำการเลือก ML ที่เข้ากันกับปัญหาของเราให้ได้ เช่น ถ้าข้อมูลของเราเป็น Time series หรือ อนุกรมเวลา แล้วล่ะก็ เราก็จะต้องเลือก ML ที่สามารถวิเคราะห์ความสัมพันธ์ในเชิงลำดับเวลาได้ จำพวก LSTM เป็นต้น แต่ถ้าหากว่าข้อมูลของเราเป็นรูปภาพ สิ่งที่เราต้องให้ความสำคัญก็คือ การเลือกโมเดล ML ที่มีความสามารถในการวิเคราะห์ Features หรือ ส่วนประกอบหลักๆของภาพได้ จำพวก CNN เป็นต้น

นอกเหนือจากการเลือกโมเดลให้ตรงกับปัญหาข้างต้นแล้ว เรายังต้องพิจารณาอีกว่าโมเดล ML ที่เลือกมานั้นมีระดับ “ความซับซ้อน” ที่เหมาะสมกับข้อมูลของเราหรือไม่ เช่น ถ้าข้อมูลของเรามี Features เป็นจำนวนมาก ความซับซ้อนสูง แต่เราดันเลือกโมเดลพื้นฐานเช่น Linear Regression ก็จะไม่เหมาะ ทางเลือกที่เราจะพิจารณาก็อาจจะเป็น Deep Learning ที่มีความสามารถสูงกว่าในการจัดการกับข้อมูลที่เป็น High Dimensional เป็นต้น

5. Train the model หรือ การสอนโมเดล ML

เมื่อเลือกโมเดลได้แล้ว ขั้นตอนนี้เราจะเริ่ม “Train” หรือ ทำการสอนโมเดลโดยใช้ข้อมูลสอน (Training set) ที่เราแบ่งไว้ในขั้นตอนที่ 3 ในขั้นตอนการสอนนี้จะมีการทำ Optimisation เข้ามาเกี่ยวข้องด้วย เพื่อหาพารามิเตอร์ที่เหมาะสมที่สุดสำหรับโมเดล ML ของเรา ดังนั้น ในขั้นตอนนี้เราอาจจะนำข้อมูลชุด Validation set ที่เรามามาช่วยในการเลือกพารามิเตอร์ที่ดีที่สุดได้ค่ะ

6. Evaluation หรือ การวัดประสิทธิภาพของโมเดล

  • 1- ขั้นตอนนี้เป็นขั้นตอนหลังจากที่เราได้สร้างโมเดล และ ทดสอบการทำงานของโมเดลด้วย Validation set มาแล้ว โดยเราจะนำข้อมูล Test set ที่เราได้แบ่งไว้ มาทำการวัดประสิทธิภาพของโมเดล (ต้องแน่ใจว่า Test set นี้ ไม่เคยถูกเห็นโดยโมเดล)
  • 2- โดยในการวัดประสิทธิภาพของโมเดล เราจะต้องตัดสินใจว่าจะใช้ค่าอะไรในการวัด เช่น ค่าความถูกต้อง (Accuracy) หรือ ค่า Sensitivity ของโมเดล โดยอาจจะทำการวัดโดยใช้ Confusion Matrix ก็ได้ สุดท้ายเราจะต้องทำการตัดสินใจว่าค่าใดที่มีผลกระทบกับโมเดลของเรามากที่สุด ตัวอย่างเช่น ใน Application นี้ค่า False positive (คนไม่เศร้า แต่ระบบทำนายว่าเศร้า) อาจจะไม่ได้ส่งผลกระทบทางลบกับโมเดลมาก เนื่องจากเราได้เสนอ option ให้ผู้ใช้ ก็ทำให้ผู้ใช้มีความสุขอยู่ดี แต่ในทางกลับกัน ค่า False negative (คนเศร้า แต่ระบบทำนายว่าไม่เศร้า) อาจจะส่งผลกระทบมากกว่า เพราะระบบจะเพิกเฉย ไม่เสนอแนวทางใดๆ ซึ่งอาจจะทำให้ผู้ใช้เศร้าไปมากกว่าเดิมได้
  • 3- สุดท้าย ในการวัดประสิทธิภาพของโมเดล เราต้องพิจารณาด้วยว่าโมเดลนั้นสามารถทำงานได้ดีกับทุกกลุ่มของข้อมูลหรือไม่

7. Deploy model หรือ การสร้างโมเดลเพื่อใช้งานจริง

เมื่อเราทดสอบโมเดล ML จนพอใจแล้ว ขั้นตอนสุดท้ายก็คือ การนำโมเดลนั้น มาสร้าง “ระบบ” เพื่อให้เหมาะสมกับการใช้งานจริง ในขั้นตอนนี้ก็อาจจะมีการออกแบบเพิ่มในส่วนของการใช้งาน เช่น Application นี้จะมีหน้าตามเป็นแบบไหน สีอะไร? การอ่านสีหน้าจะอ่านจากรูปโดยการอัพโหลด หรือ การ selfie? และ ถ้าเกิดว่าโมเดลทำนายผิด ผู้ใช้จะสามารถ report กลับมายังผู้พัฒนาระบบได้อย่างไร เป็นต้น

หลังจากระบบได้รับการพัฒนาเสร็จสมบูรณ์แล้ว เราอาจจะนำระบบออกมาให้ผู้ใช้ได้ทดสอบการใช้งานเป็นช่วงระยะเวลาหนึ่ง และ อาจจะมีการเก็บรวมรวม Feedback เพื่อนำกลับไปพัฒนาระบบให้สมบูรณ์ยิ่งขึ้นไปได้อีกเช่นกัน

ภาพรวมของ ML life cycle

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

ขอขอบคุณเจ้าของวีดีโอ Simple ML explanations by MIT PhD students (ML-Tidbits) ไว้ ณ ที่นี้ค่ะ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s