برنامه ریزی پروژه های ML با برنامه ریزی پروژه های مهندسی نرم افزار معمولی متفاوت است. پروژه های ML مشخصاً غیرخطی هستند و درجات مختلفی از عدم قطعیت دارند. آنها به یک رویکرد تکراری و یک ذهنیت تجربی نیاز دارند.
عدم قطعیت پروژه
برنامه ریزی در مراحل اولیه می تواند دشوار باشد زیرا بهترین رویکرد معمولاً هنگام شروع یک پروژه مشخص نیست. این عدم قطعیت ذاتی تخمین جدول زمانی را سخت می کند.
رقابت اخیر Kaggle عدم قطعیت پروژه های ML را نشان می دهد. در هفته های اول یک مسابقه 350 تیم شرکت کردند. برخی از تیم ها توانستند کیفیت پیش بینی معیار را از 35% به 65% افزایش دهند. در طول دو هفته بعد، تعداد تیم هایی که روی مشکل کار می کردند از 350 به 1400 افزایش یافت. با این حال، بهترین مدل تنها به کیفیت پیش بینی 68 درصد دست یافت.
شکل 3 عدم قطعیت در توسعه ML را با نشان دادن افزایش قابل توجه در تلاش اما حداقل دستاوردها در کیفیت مدل نشان می دهد.
شکل 3 . طی یک دوره دو هفتهای، تعداد تیمهایی که روی مشکل کار میکردند تا 4 برابر افزایش یافت، اما کیفیت مدل تقریباً ثابت ماند و دشواری در برآورد تلاش یک راهحل ML را برجسته کرد.
به عبارت دیگر، بیش از هزار تیم - که هر کدام با انواع تبدیل دادهها، معماریها و فراپارامترها آزمایش میکنند - تنها به تولید مدلی با کیفیت پیشبینی 68 درصد دست یافتند.
مثالی از صنعت، غیرخطی بودن پروژههای ML را نشان میدهد، که در آن خروجی با ورودیها متناسب نیست. دو تیم چندین ماه طول کشید تا یک مدل را با کیفیت پیشبینی 90 درصد آموزش دهند. با این حال، چندین تیم بیش از پنج سال طول کشید تا این مدل را با کیفیت پیشبینی 99.9 درصد برای تولید آماده کنند.
این مثالها نشان میدهند که ML آماده برای تولید یک فرآیند اکتشافی است که هم به یک ذهنیت علمی و هم مهندسی نیاز دارد.
رویکرد تجربی
در بیشتر موارد، توسعه ML بیشتر شبیه انجام آزمایش است تا انجام مهندسی نرم افزار سنتی. ML نیاز به آزمایش ویژگیهای مختلف، آزمایش معماریهای متعدد و تنظیم فراپارامترها به درستی دارد. طبق تعریف، آزمایش ها تضمینی برای موفقیت ندارند. به همین دلیل، بهتر است با استفاده از یک چارچوب آزمایشی برنامه ریزی کنید.
بیایید به یک طرح مهندسی نرم افزار معمولی نگاه کنیم تا تفاوت آن با طرح پروژه ML را ببینیم.
برنامه ریزی پروژه های مهندسی نرم افزار
در یک طرح مهندسی نرم افزار معمولی، شما الزامات را تعریف می کنید، اجزای تشکیل دهنده را مشخص می کنید، تلاش را تخمین می زنید و کار را برنامه ریزی می کنید. یک راه به وضوح تعریف شده برای یک راه حل وجود دارد. به عنوان مثال، مهندسان اغلب با درجه بالایی از اطمینان وظایفی را که برای ساختن برنامهای مطابق با مشخصات طراحی باید انجام دهند، میدانند.
وقتی آنها زمان لازم برای تکمیل یک کار را پیش بینی می کنند، می توانند کار را بر اساس پروژه های مشابه تخمین بزنند. اگرچه چالشهایی همیشه رخ میدهند - مانند وابستگیهای ناشناخته یا تغییر نیازمندیها - که میتواند گاهی اوقات تخمین را دشوار کند، معمولاً یک راه روشن برای راهحل وجود دارد.
در مقابل، پروژههای ML معمولاً یک مسیر روشن برای موفقیت ندارند.
برنامه ریزی پروژه های ML
برای اکثر پروژه های ML، بهترین راه حل را با آزمایش چندین رویکرد در فرآیند آزمون و خطا پیدا خواهید کرد. شما معمولاً راه حل بهینه برای مشکل خود را قبل از تلاش برای حل آن نمی دانید. برای مثال، معماری راه حل بهینه ممکن است یک مدل خطی ساده، یا یک شبکه عصبی، یا احتمالاً یک درخت تصمیم باشد. تنها با امتحان کردن هر رویکرد می توانید بهترین راه حل را پیدا کنید.
این ابهام برنامه ریزی را سخت می کند. همانطور که قبلاً بحث شد، پیشبینی تلاشی که یک پروژه ML نیاز دارد دشوار است. تنها با تلاش برای حل مشکل می توانید درک بهتری از مقدار زمان و منابعی که یک راه حل ممکن است به آن نیاز داشته باشد به دست آورید.
استراتژی های زیر برای برنامه ریزی کار ML توصیه می شود:
جعبه زمان کار . برای تکمیل وظایف یا تلاش برای یک راه حل خاص، چارچوب های زمانی مشخصی تنظیم کنید. به عنوان مثال، ممکن است دو هفته را برای تعیین اینکه آیا می توانید به نوع مناسبی از داده ها دسترسی داشته باشید، اختصاص دهید. اگر بتوانید داده ها را دریافت کنید، ممکن است دو هفته دیگر را تعیین کنید تا ببینید آیا یک مدل ساده نشان می دهد که یک راه حل ML امکان پذیر است یا خیر. اگر یک مدل ساده با شکست مواجه شد، ممکن است دو هفته دیگر را برای آزمایش یک شبکه عصبی تعیین کنید. در پایان هر بازه زمانی، اطلاعات بیشتری برای تعیین اینکه آیا ادامه استفاده از منابع برای مشکل ارزشمند است یا خیر، خواهید داشت.
محدوده مورد نیاز پروژه را کاهش دهید . اگر راه حل ML امیدوارکننده به نظر می رسد اما یک ویژگی حیاتی برای محصول یا خدمات شما نیست، نیازهای آن را بازگردانید. به عنوان مثال، هنگام برنامه ریزی برای کار سه ماهه بعدی، ممکن است برنامه ریزی کنید که یک راه حل بسیار ساده را امتحان کنید. سپس در سه ماهه بعدی، ممکن است برای بهبود مکرر راه حل برنامه ریزی کنید. پیادهسازی یک راهحل ML با ایجاد بهبودهای تدریجی در یک افق زمانی طولانیتر راهی بوده است که بسیاری از تیمها به راهحلهای تاثیرگذار ML رسیدهاند.
پروژه کارآموز یا نوگلر هدایت و راهنمایی یک کارآموز یا Noogler برای تلاش برای راه حل ML می تواند راه خوبی برای شروع کاوش در فضای جدید با نتایج ناشناخته باشد. پس از پایان پروژه، درک بهتری از تلاشی که یک راه حل ML به آن نیاز دارد و رویکردهای بالقوه امیدوارکننده برای دنبال کردن آن خواهید داشت – یا اینکه آیا منابع باید در جای دیگری قرار داده شوند.
با هر استراتژی، شکست سریع عاقلانه است. ابتدا سعی کنید با کمترین هزینه، اما به طور بالقوه بیشترین بازده را داشته باشید. اگر این رویکرد جواب داد، راه حل خوبی پیدا کرده اید. اگر اینطور نیست، شما زمان و منابع زیادی را تلف نکرده اید.
از آنجایی که تیمها تجربه و قرار گرفتن در معرض آزمایشهای در حال اجرا را کسب میکنند، میتوانند تلاشی که ممکن است یک آزمایش به آن نیاز داشته باشد را بهتر تخمین بزنند و برنامهریزی را قابل پیشبینیتر کنند. با این حال، نتیجه آزمایش تقریباً همیشه ناشناخته خواهد بود، بنابراین تعداد آزمایشهای مورد نیاز برای یافتن بهترین راهحل را نمیتوان از قبل تخمین زد.
رویکردهای برنامه ریزی با یک طرز فکر تجربی به تیم شما کمک می کند تا برای موفقیت آماده شود. وقتی یک رویکرد به جای دلسرد شدن به بن بست منجر می شود، اعضای تیم می دانند که این بخشی از فرآیند یافتن راه حل ML است. مهمتر از آن، با بحث در مورد عدم قطعیت ذاتی در توسعه ML با ذینفعان، می توانید انتظارات واقع بینانه تری ایجاد کنید.
یادت باشه
یادگیری برنامه ریزی چندین رویکرد ML به طور احتمالی به زمان و تجربه نیاز دارد. طرح پروژه شما ممکن است به به روز رسانی های مکرر نیاز داشته باشد. آن را به عنوان یک سند پویا در حال تکامل ثابت در نظر بگیرید، زیرا تیم شما با رویکردهای متعدد آزمایش می کند. با تمرکز بر ایده های کلیدی زیر، شانس موفقیت خود را افزایش خواهید داد:
- هزینه و شانس موفقیت برای هر رویکرد را تخمین بزنید.
- سعی کنید مجموعه ای از رویکردها را امتحان کنید.
- درس های آموخته شده را شناسایی کنید و سعی کنید سیستم را یکی یکی بهبود بخشید.
- برای شکست ها برنامه ریزی کنید.
گاهی اوقات یک رویکرد اولیه منجر به پیشرفت می شود. ممکن است شخصی اشکالی را در خط لوله تولید داده یا تقسیم آموزشی- اعتبار سنجی کشف کند. با برنامه ریزی خوب و مستندات کامل، احتمال پیدا کردن مدلی که مشکل کسب و کار شما را زودتر از حد انتظار حل می کند را افزایش می دهید.