การวางแผนโปรเจ็กต์ ML นั้นแตกต่างจากการวางแผนโปรเจ็กต์วิศวกรรมซอฟต์แวร์ทั่วไป โปรเจ็กต์ ML มีลักษณะที่ไม่ใช่แบบเชิงเส้นและมีความไม่แน่นอนในระดับต่างๆ วิธีนี้ต้องอาศัยวิธีการทำซ้ำและแนวคิดในการทดลอง
ความไม่แน่นอนของโปรเจ็กต์
การวางแผนระยะเริ่มต้นอาจเป็นเรื่องยากเนื่องจากแนวทางที่ดีที่สุดมักไม่ชัดเจนเมื่อเริ่มโครงการ ความไม่แน่นอนที่เกิดขึ้นเองนี้ทำให้ การประเมินลำดับเวลาเป็นเรื่องยาก
การแข่งขัน Kaggle เมื่อเร็วๆ นี้แสดงให้เห็นถึงความไม่แน่นอนของโครงการ ML ในช่วงสัปดาห์แรกของการแข่งขัน มีทีมเข้าร่วม 350 ทีม บางทีมสามารถเพิ่มคุณภาพการคาดการณ์เปรียบเทียบ จาก 35% เป็น 65% ในช่วง 2 สัปดาห์ข้างหน้า จำนวนทีมที่แก้ไขปัญหานี้เพิ่มขึ้นจาก 350 เป็น 1, 400 คน อย่างไรก็ตาม โมเดลที่ดีที่สุดจะมีคุณภาพการคาดการณ์เพียง 68% เท่านั้น
รูปที่ 3 แสดงให้เห็นถึงความไม่แน่นอนในการพัฒนา ML โดยแสดงให้เห็นถึงความพยายามที่เพิ่มขึ้นอย่างมีนัยสำคัญ แต่ได้กำไรเพียงเล็กน้อยจากคุณภาพของโมเดล
รูปที่ 3 ในระยะเวลา 2 สัปดาห์ จำนวนทีมที่แก้ไขปัญหานี้เพิ่มขึ้น 1 ใน 4 ปัจจัย แต่คุณภาพของโมเดลยังคงใกล้เคียงเดิม ซึ่งไฮไลต์ความยากในการประมาณโซลูชัน ML
กล่าวคือ ทีมต่างๆ กว่า 1,000 ทีมที่ทำการทดสอบด้วยการเปลี่ยนรูปแบบข้อมูล สถาปัตยกรรม และไฮเปอร์พารามิเตอร์ที่หลากหลาย ทำได้เพียงสร้างโมเดลที่มีคุณภาพในการคาดการณ์ 68% เท่านั้น
ตัวอย่างจากอุตสาหกรรมแสดงให้เห็นถึงความไม่เป็นเชิงเส้นของโปรเจ็กต์ ML ซึ่งเอาต์พุตไม่ได้ตามสัดส่วนของอินพุต 2 ทีมใช้เวลาหลายเดือน ในการฝึกโมเดลให้มีคุณภาพการคาดการณ์ 90% อย่างไรก็ตาม ต้องใช้เวลาหลายทีมนานกว่า 5 ปีในการเตรียมโมเดลให้พร้อมสำหรับการผลิตโดยมีคุณภาพการคาดการณ์ 99.9%
ตัวอย่างเหล่านี้เน้นย้ำว่า ML ที่พร้อมสำหรับเวอร์ชันที่ใช้งานจริงเป็นกระบวนการสำรวจที่ต้องใช้ทั้งแนวคิดทางวิทยาศาสตร์และวิศวกรรม
แนวทางการทดสอบ
ในกรณีส่วนใหญ่ การพัฒนา ML จะเหมือนกับการทดสอบมากกว่าวิศวกรรมซอฟต์แวร์แบบดั้งเดิม โดย ML จำเป็นต้องมีการทดสอบฟีเจอร์ที่แตกต่างกัน ลองใช้สถาปัตยกรรมหลายรายการ และปรับแต่งไฮเปอร์พารามิเตอร์อย่างเหมาะสม ตามคำจำกัดความแล้วไม่มีการรับประกันว่าการทดสอบจะประสบความสำเร็จ ด้วยเหตุนี้ คุณจึงควรวางแผนโดยใช้เฟรมเวิร์กทดลอง
ลองดูแผนวิศวกรรมซอฟต์แวร์ทั่วไปว่าแตกต่างจากแผนโครงการ ML อย่างไร
วางแผนโครงการวิศวกรรมซอฟต์แวร์
ในแผนงานวิศวกรรมซอฟต์แวร์ทั่วไป คุณจะกำหนดข้อกำหนด ระบุองค์ประกอบ ประเมินปริมาณงาน และกำหนดเวลางาน มีวิธีการแก้ปัญหา ที่ชัดเจนอยู่แล้ว ตัวอย่างเช่น วิศวกรมักทราบดีอยู่แล้วว่างานใดที่จำเป็นต้องดำเนินการเพื่อสร้างแอปพลิเคชันที่เป็นไปตามข้อกำหนดการออกแบบ
เมื่อคาดการณ์ระยะเวลาที่จะใช้ในการทำงาน นักเรียนจะประเมินงานตามโครงการที่คล้ายกันได้ แม้ว่าความท้าทายจะเกิดขึ้นได้ตลอด เช่น ทรัพยากร Dependency ที่ไม่ทราบ หรือความจำเป็นที่ต้องมีการเปลี่ยนแปลง แต่ก็อาจทำให้การประเมินยากในบางกรณี แต่โดยทั่วไปแล้ว เส้นทางไปสู่โซลูชันที่ชัดเจนก็มีอยู่
ในทางกลับกัน โปรเจ็กต์ ML ไม่ได้มีเส้นทางสู่ความสำเร็จที่ชัดเจนเพียงเส้นทางเดียว
การวางแผนโปรเจ็กต์ ML
สำหรับโปรเจ็กต์ ML ส่วนใหญ่ คุณจะพบโซลูชันที่ดีที่สุดด้วยการทดลองด้วยวิธีต่างๆ ในกระบวนการลองผิดลองถูก ปกติแล้วคุณจะไม่ทราบถึงวิธีแก้ปัญหาที่ดีที่สุดก่อนที่จะพยายามแก้ปัญหานั้น ตัวอย่างเช่น สถาปัตยกรรมของโซลูชันที่เหมาะสมที่สุดอาจเป็นโมเดลเชิงเส้นง่ายๆ หรือโครงข่ายประสาท หรืออาจเป็นแผนผังการตัดสินใจ การลองใช้แต่ละวิธีจะทำให้คุณค้นพบโซลูชันที่ดีที่สุด
ความคลุมเครือนี้ทำให้การวางแผนเป็นเรื่องยาก อย่างที่บอกไปก่อนหน้านี้ การคาดการณ์ความพยายามที่โปรเจ็กต์ ML ต้องการนั้นไม่ใช่เรื่องง่าย การลองแก้ปัญหาเท่านั้นจะทำให้คุณเข้าใจระยะเวลาและทรัพยากรที่โซลูชันต้องการได้ดียิ่งขึ้น
กลยุทธ์ที่แนะนำสำหรับการวางแผนงาน ML มีดังนี้
ใส่กล่องเวลาให้กับงาน กำหนดกรอบเวลาที่ชัดเจนเพื่อทำงานให้เสร็จสิ้นหรือพยายามหาทางแก้ไข ตัวอย่างเช่น คุณอาจจัดสรรเวลา 2 สัปดาห์เพื่อกำหนดว่าคุณจะสามารถเข้าถึงข้อมูลประเภทที่เหมาะสมได้หรือไม่ หากได้ข้อมูลแล้ว คุณอาจต้องรออีก 2 สัปดาห์เพื่อดูว่าโมเดลง่ายๆ ระบุว่าโซลูชัน ML เป็นไปได้หรือไม่ หากโมเดลง่ายๆ ล้มเหลว คุณอาจระบุเวลาเพิ่มอีก 2 สัปดาห์ในการลองใช้เครือข่ายประสาทเทียม เมื่อสิ้นสุดแต่ละกรอบเวลา คุณจะได้ข้อมูลเพิ่มเติมในการพิจารณาว่าการใช้ทรัพยากรกับปัญหานี้ต่อจะคุ้มค่าไหม
กำหนดขอบเขตตามข้อกำหนดของโครงการ หากโซลูชัน ML ดูน่าสนใจแต่ไม่ใช่ฟีเจอร์สำคัญของผลิตภัณฑ์หรือบริการ ให้กำหนดขอบเขตข้อกำหนดของโซลูชันดังกล่าว เช่น เมื่อวางแผนงานของไตรมาสถัดไป คุณอาจวางแผนที่จะลองใช้โซลูชันที่เรียบง่ายมากๆ จากนั้นในไตรมาสต่อๆ ไป คุณอาจวางแผนที่จะปรับปรุงโซลูชันดังกล่าวซ้ำๆ การนำโซลูชัน ML ไปใช้โดยการปรับปรุงเพิ่มเติมในส่วนของระยะเวลาที่ยาวนานขึ้นทำให้หลายๆ ทีมได้โซลูชัน ML ที่มีประสิทธิภาพ
โปรเจ็กต์ Intern หรือ Noogler การชี้นำและแนะแนวทางให้นักศึกษาฝึกงานหรือ Noogler ลองใช้โซลูชัน ML อาจเป็นวิธีที่ดีในการเริ่มต้นสำรวจพื้นที่ใหม่ที่ไม่ทราบผลลัพธ์ หลังจากจบโปรเจ็กต์แล้ว คุณจะเข้าใจมากขึ้นว่าโซลูชัน ML ต้องการและมีแนวทางที่มีแนวโน้มจะให้คุณดำเนินการอย่างไร หรือควรนำทรัพยากรไปไว้ที่อื่นหรือไม่
ไม่ว่ากลยุทธ์ใดก็ตาม ควรล้มเหลวอย่างรวดเร็ว พยายามใช้ต้นทุนต่ำที่สุด แต่มีแนวโน้มที่จะได้ผลตอบแทนสูงสุดก่อน หากแนวทางนั้นได้ผล คุณก็พบวิธีแก้ปัญหาที่ดีแล้ว หากไม่ แสดงว่าคุณก็ไม่ได้สิ้นเปลืองเวลาและทรัพยากรไปมากมาย
เมื่อทีมมีประสบการณ์และมีโอกาสได้ทำการทดสอบ พวกเขาก็จะประมาณความพยายามที่การทดสอบอาจต้องการได้ดีขึ้น ทำให้การวางแผนคาดเดาได้มากขึ้น อย่างไรก็ตาม ระบบมักจะไม่ทราบผลการทดสอบแทบทุกครั้ง ดังนั้นจึงไม่สามารถประมาณจำนวนการทดสอบที่ต้องใช้เพื่อหาวิธีแก้ปัญหาที่ดีที่สุดได้
การวางแผนโดยใช้แนวคิดทดลองช่วยให้ทีมพร้อมรับความสำเร็จ เมื่อแนวทางนำไปสู่ทางตัน สมาชิกในทีมจะเข้าใจดีว่านี่เป็นขั้นตอนในการค้นหาโซลูชัน ML แทนที่จะถูกกีดกัน ที่สำคัญไปกว่านั้น เมื่อพูดถึงความไม่แน่นอนที่เกิดขึ้นอยู่แล้วในการพัฒนา ML กับผู้มีส่วนเกี่ยวข้องจะช่วยให้คุณตั้งความคาดหวังที่สมจริงมากขึ้นได้
โปรดทราบ
การเรียนรู้การวางแผนแนวทาง ML หลายๆ วิธีต้องอาศัยเวลาและประสบการณ์ แผนโครงการอาจต้องมีการอัปเดตบ่อยครั้ง เปรียบได้กับเอกสารแบบไดนามิกที่มีการพัฒนาอย่างต่อเนื่องในขณะที่ทีมของคุณทำการทดสอบด้วยวิธีที่หลากหลาย การมุ่งเน้นไปที่แนวคิดหลักต่อไปนี้จะช่วยเพิ่มโอกาสความสำเร็จของคุณ:
- ประเมินต้นทุนและโอกาสในการประสบความสำเร็จของแต่ละวิธี
- ลองสร้างพอร์ตโฟลิโอของแนวทาง
- ระบุบทเรียนที่ได้เรียนรู้และพยายามปรับปรุงระบบทีละอย่าง
- วางแผนรับมือความล้มเหลว
บางครั้งวิธีเริ่มต้นก็นำไปสู่ความก้าวหน้าอย่างยิ่ง ผู้ใช้อาจพบข้อบกพร่องในไปป์ไลน์การสร้างข้อมูลหรือการแยกการตรวจสอบการฝึก การวางแผนที่ดีและเอกสารประกอบที่ละเอียดจะช่วยให้คุณมีโอกาสพบรูปแบบที่แก้ปัญหาทางธุรกิจได้เร็วกว่าที่คาดไว้