การวางแผนโครงการ ML

การวางแผนโปรเจ็กต์ ML นั้นแตกต่างจากการวางแผนโปรเจ็กต์วิศวกรรมซอฟต์แวร์ทั่วไป โปรเจ็กต์ ML มีลักษณะที่ไม่ใช่แบบเชิงเส้นและมีความไม่แน่นอนในระดับต่างๆ วิธีนี้ต้องอาศัยวิธีการทำซ้ำและแนวคิดในการทดลอง

ความไม่แน่นอนของโปรเจ็กต์

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

การแข่งขัน Kaggle เมื่อเร็วๆ นี้แสดงให้เห็นถึงความไม่แน่นอนของโครงการ ML ในช่วงสัปดาห์แรกของการแข่งขัน มีทีมเข้าร่วม 350 ทีม บางทีมสามารถเพิ่มคุณภาพการคาดการณ์เปรียบเทียบ จาก 35% เป็น 65% ในช่วง 2 สัปดาห์ข้างหน้า จำนวนทีมที่แก้ไขปัญหานี้เพิ่มขึ้นจาก 350 เป็น 1, 400 คน อย่างไรก็ตาม โมเดลที่ดีที่สุดจะมีคุณภาพการคาดการณ์เพียง 68% เท่านั้น

รูปที่ 3 แสดงให้เห็นถึงความไม่แน่นอนในการพัฒนา ML โดยแสดงให้เห็นถึงความพยายามที่เพิ่มขึ้นอย่างมีนัยสำคัญ แต่ได้กำไรเพียงเล็กน้อยจากคุณภาพของโมเดล

รูปภาพแสดงจำนวนทีมที่เพิ่มขึ้นจาก 350 เป็น 1400 ทีมในช่วง 2 สัปดาห์ แต่คุณภาพของโมเดลดีขึ้นเพียง 3 เปอร์เซ็นต์

รูปที่ 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 หลายๆ วิธีต้องอาศัยเวลาและประสบการณ์ แผนโครงการอาจต้องมีการอัปเดตบ่อยครั้ง เปรียบได้กับเอกสารแบบไดนามิกที่มีการพัฒนาอย่างต่อเนื่องในขณะที่ทีมของคุณทำการทดสอบด้วยวิธีที่หลากหลาย การมุ่งเน้นไปที่แนวคิดหลักต่อไปนี้จะช่วยเพิ่มโอกาสความสำเร็จของคุณ:

  • ประเมินต้นทุนและโอกาสในการประสบความสำเร็จของแต่ละวิธี
  • ลองสร้างพอร์ตโฟลิโอของแนวทาง
  • ระบุบทเรียนที่ได้เรียนรู้และพยายามปรับปรุงระบบทีละอย่าง
  • วางแผนรับมือความล้มเหลว

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