آرتین محمدی
آرتین محمدی
خواندن ۴ دقیقه·۲ سال پیش

از این به بعد فرآیندِ یادگیری ماشین رو خودکار کُن!

شاید عنوان عجیب به‌نظر برسه، اما چیزی هست که چند وقته سَرِ زبون‌ها افتاده و گفتم چرا ما فارسی‌زَبون‌ها چیزی ازش نداریم! (کلاً در یوتیوب فارسی که نیست، ولی تونستم چندتا مقاله نسبتاً معمولی با معیار ترجمه صِرف بودن ازش پیدا کنم... بهتره خودمون کار رو دست بگیریم تا مبادا پس‌فردا یکی بیاد همین رو ۴-۵ میلیون بِفروشه به این رویا که مثلاً با ۱-۳ جلسه شرکت در فلان کلاس سریعاً کار پیدا کن!) خلاصه این بود قصه‌ای کوتاه از چِرایی نوشتنِ مقاله پنجُمَم! (سومی رو پاک کردم البته) اگه بیشتر کنجکاو بودید، می‌تونید کمی شیک‌تر در کانال یوتیوبی‌مون که لینک‌اش در انتهای بدنه مقاله اومده ببینید که چطور باهاش کار می‌کنیم...

 گرفته‌شده از وب‌سایت analyticsindiamag.com
گرفته‌شده از وب‌سایت analyticsindiamag.com

چی هستن و اصلاً چرا هستن

همون‌طور که حدس می‌زنید، مثل خیلی چیزمیزای دیگه، برای این کار هم خارجکی‌ها (خارجکی‌ها رو با لحن فان بخونید، نه توهین به اونایی که غیرِ ایرانی هستن) یه اصطلاحی درنظر گرفتن... AutoML مخفف یادگیری ماشین خودکار شده (در ویکی‌پدیا به‌صورت «یادگیری ماشین خودکاره» نوشته شده ولی) اومده تا به ما کمک کنه هرچه سریع‌تر و البته ساده‌تر تسک‌های این دنیا رو انجام بدیم!

نه، حرفه‌ای‌ها نترسن، قرار نیست این AutoML که خیلی‌ها به اشتباه اون رو یه محصول از طرف گوگل می‌دونن و نه یه مفهوم، جای شما رو بگیره و به‌ضررتون بشه! (منظورم از حرفه‌ای‌ها در اول پاراگراف حرفه‌ای‌های حسود و خیرنخواه بود) کْی دیتا رو جمع‌آوری می‌کنه؟ کْی دیتا رو تمیز می‌کنه و داده‌های حساس رو از چرت‌وپرت‌ها جدا می‌کنه؟ (البته بعضی از ابزارها این کار رو دست‌و‌پا شکسته انجام می‌دن) آیا می‌شه همواره به ماشین‌ها اطمینان داشت و به عبارتی دیگه، آیا وسواس ما انسان‌ها رو به‌خرج می‌دن الگوریتم‌ها در مواجه با چالش‌های واقعی‌تر؟ دیدید چقدر استدلالِ‌‌هامون ساده بود؛ ساخت مُدل فقط ۱۰-۳۰ درصد کار رو شامل می‌شه!

همه می‌تونن از این ابزارها استفاده کنن، چه یه متخصص فوقِ خفنِ هوش مصنوعی باشید، و چه یه نـــوب که فقط روی هایپِ این بازار سواره! کْی بدش می‌آد سریع‌تر و هوش‌مندانه‌تر (با استرس از این واژه هوش‌مندانه استفاده شده) روزمره‌هاش رو انجام بده؟! تقریباً هیچ آدم عاقلی!

چطور کار می‌کنن

این بخش جذابه برای فنی‌ها، اما نمی‌خوام خیلــــی بریم داخل و غرق‌شون بشیم! کُلاً این زمینه کارِش تموم نشده و تحقیقات کمی نمی‌آد که قصد دارن روش‌های نو‌ای ارائه کنن... این رو گفتم که بدونید توضیحات ذِیل رو نمی‌شه به همه‌شون تعمیم داد.

اجازه بدید قبلش با اصطلاح «هایپرپارامتر» آشناتون کنم؛ هایپرپارامتر که یِکم فارسی‌تَرِش می‌شه «ابرپارامتر»، به متغیرهایی می‌گن که برای دست‌کاری و تنظیم فرآیند یادگیری استفاده می‌شن. (مشخصه که برای هر الگوریتم نیاز به متغیرهای متفاوتی داریم، مثلاً کِرنِلی که در «ماشین بردار پشتیبان» هست، در «رگرسیون لجستیک» نداریم)

بعضی از ابزارهای ارائه‌دهنده، به‌صورت رَندومْ می‌آن و پارامترها رو اَنگولک می‌کنن (خیــلی معقول نیست ازشون استفاده کنیم)، اما ما می‌دونیم که گوگل از یه تکنیک یادگیری تقویتی به نام NASNet استفاده می‌کنه که خودِش می‌آد و توپولوژی شبکه عصبی رو طراحی می‌کنه... هدف از این طراحیِ معماری، استفاده هرچه کمتر از منابع و به حداقل رسوندن مداخله انسانی‌عه! (NAS از Neural Architecture Search آمده است)

فِریم‌ْورک‌‌های پایتونیِ محبوب

اینجا نظر زیاد و متفاوت داریم برای انتخاب «بهترین»، اما من با توجه به همون اندک تجربه‌ام لیستی ازشون می‌آرم...

دقت کنید که شماره‌ای زده نشده و ترتیب نداره، اما اگه یه اسلحه روی شقیقه‌ام بذارن و بگن مُرتبِش کن، من FLAML رو می‌آرم بعد از PyCaret و سپس Auto-Sklearn رو هُل می‌دن به انتهای صف!

حالا که تا اینجا اومدیم، بیایم با موردِ دوم و آخرِ لیستِ‌مون (لیستِ مرتب شده) یه مُدل بسازم ببینم آیا می‌شه عملکردشون رو این‌طور سنجید یا نه؟! (می‌خوام با دِیتاستِ ارزیابیِ خودروها کار کنم و دیگه نشون نمی‌دم که چطور اون رو می‌تونیم دانلود کنیم)

ایمپورت کردن چیزمیزایی که می‌خوایم استفاده کنیم:

خوندن دیتاستِ بدون سَرِ ما:

تغییر نام ستون‌ها یا به عبارتی دیگه گذاشتن سَر واسه دیتافِریم:

یه سری اطلاعات از دیتاست:

گرم کردن برای ساخت مُدل‌هامون با کُدگذاری برچسب‌هایی که در اختیار داریم:

جداسازی داده‌های آموزش و تست از هم‌دیگه:

سِپُردن کار به FLAML با بودجه زمانیِ تنها ۳۰ ثانیه:

بهترین مُدل رو حالا چی می‌گه؟

نمی‌شه فهمید واقعاً بهترینه یا نه، تا زمانی که دقتِش رو روی داده‌های تستِ‌مون بِسَنجیمْ:

نوبتِ استفاده از کِلاسِ طبقه‌بندیِ فریمْ‌وُرکِ Auto-Sklearn هستش:

رهبران ما کُدوم الگوریتم‌ها می‌تونن باشن به ترتیب؟

دقت نتایج‌ها به هم آیا نزدیکه؟

و تمام! گام بعدی‌ای که می‌تونید انجام بِدید این هست که مُدل‌هاتون رو ذخیره کنید تا برای هربار استفاده مجبور نباشید مجدد تِرِین‌شون کنید... نوت‌بوک رو می‌تونید در گیت‌هاب و کَگِل‌ام پیدا کنید، و یا حتی می‌تونید در یوتیوب ببینید که چطور روش توضیح می‌دم!


می‌تونم این مقاله رو از پیچیده‌ترین مقالاتم بدونم... البته ک*ن‌گشادی هم یه بخشِ قضیه شد و این هفته حوصله تحقیق رو ازم گرفته بود! مهم نیست، اگه شما توضیحات بیشتری دارید می‌تونید برای تکمیل این مقاله در قسمت نظرات مطرحِش کنید که به مفیدتر شدنش کمکِ شایانی می‌کنه... :)

منابع:

برنامه نویسییادگیری ماشینماشین لرنینگدیتا ساینسداده
یه انسانِ علاقه‌مند به وَررفتن با داده‌ها، فلسفه، تاریخ، و پردازش زبان طبیعی که با ساخت ابزارهای راحت‌کننده زندگی هم کِیف می‌کنه!
شاید از این پست‌ها خوشتان بیاید