یادگیری ماشین خودکاره

**یادگیری ماشین خودکاره**  فرایند خودکارسازی اعمال یادگیری ماشین بر مشکلات دنیای واقعی است. اُتوام‌ال خط لوله کامل فرایندهای یادگیری ماشین- از مجموعه داده‌های خام گرفته تا ایجاد مدل قابل استفاده -را در بر می‌گیرد. پیش از این اُتوام‌ال به عنوان راه حلی مبتنی بر هوش مصنوعی برای چالش‌های روزافزون استفاده از یادگیری ماشین ارائه شده‌است. به دلیل خودکار بودن اُتوام‌ال افراد غیر متخصص نیز می‌توانند از مدل‌ها و تکنیک‌های یادگیری ماشین، بدون نیاز به یادگیری تخصصی در این زمینه، استفاده کنند.

خودکارسازی فرایند استفاده از الگوریتم‌های یادگیری ماشین علاوه بر مزایای ذکر شده، مزایای دیگری مانند تولید راه حل‌های ساده‌تر، ایجاد سریع تر این راه حل‌ها و ایجاد مدل‌هایی که اغلب از مدل‌هایی که به صورت دستی طراحی شده‌اند، بهترند، ارائه می‌دهد.

## مقایسه با رویکرد استاندارد
در یادگیری ماشین معمولی، مجموعه ای از داده‌های ورودی برای یادگیری در اختیار داریم. این دادهٔ خام ممکن است در شکل و فرمتی مناسب برای اعمال همهٔ الگوریتم‌ها، نباشد. برای اینکه داده‌ها برای یادگیری ماشین قابل استفاده باشند، ممکن است یک متخصص نیاز به اعمال پیش پردازش داده‌ها، مهندسی ویژگی‌ها، استخراج ویژگی‌ها و روشی برای انتخاب ویژگی‌ها داشته باشد.

بعد از این مرحله باید انتخاب الگوریتم و بهینه‌سازی پارامترها، برای حداکثر کردن کارایی پیش‌بینی مدل، انجام شود. همهٔ این مراحل چالش‌هایی دارند و اُتوام‌ال به‌طور قابل ملاحظه ای این مراحل را برای افراد غیرمتخصص، ساده می‌کند.

## اهداف خودکارسازی
یادگیری ماشین خودکار می‌تواند گام‌های مختلفی از فرایند یادگیری ماشین را هدف قرار دهد. که این اهداف شامل موارد زیر است:
* آماده‌سازی داده‌های خام و فرمت‌های مختلف 
** تشخیص نوع ستون ها؛ به عنوان مثال، بولین یا اعداد گسسته یا پیوسته یا متنی
** تشخیص هدف ستون ها؛ به عنوان مثال، برچسب داده، قسمت طبقه‌بندی، ویژگی‌های عددی، دسته‌بندی، ویژگی‌های متنی،
** تشخیص وظیفه؛ به عنوان مثال، طبقه‌بندی باینری، رگرسیون، طبقه‌بندی یا رتبه‌بندی
* مهندسی ویژگی
** انتخاب ویژگی‌ها
** استخراج ویژگی
** یادگیری متا و یادگیری انتقال
** تشخیص و اصلاح مقادیر جا افتاده یا اشتباه داده‌ها یا مقادیر گمشده
* انتخاب مدل
* بهینه‌سازی ابرپارامترهای الگوریتم یادگیری
* انتخاب خط لوله بر اساس محدودیت‌های زمان، حافظه و محدودیت‌های پیچیدگی
* انتخاب معیارهای ارزیابی و روشهای اعتبار سنجی
* بررسی مشکل‌ها
** تشخیص نشت 
** تشخیص تنظیمات نادرست 
* تجزیه و تحلیل نتایج به دست آمده
* رابط کاربر و تصویرسازی برای یادگیری ماشین خودکار

به‌طور کلی می‌توان فرایند یادگیری ماشین خودکار را به چند بخش اصلی تقسیم کرد:
# آماده‌سازی داده‌ها
# مهندسی ویژگی‌ها
# ایجاد مدل و تخمین کارایی مدل

## آماده‌سازی داده‌ها
### جمع‌آوری داده
مطالعات عمیق و فراوان در حوزهٔ یادگیری ماشین به وجود آورندهٔ نیاز دائمی به در دسترس بودن داده‌های مختلف شده‌است. به همین دلیل تعداد زیادی دیتاست قابل دسترسی برای همگان به وجود آمده‌اند. در مراحل اولیه توسعه یادگیری ماشین، دیتاست اعداد دست‌نویس MNIST توسعه داده شد و پس از آن دیتاست‌های بزرگ CIFAR-10 و CIFAR-100 و ImageNet نیز توسعه داده شدند. دیتاست‌های مختلفی با جستجوی عبارت مورد نظر در Kaggle و Google Dataset Search و Elsevier Data  نیز قابل دسترسی استولی معمولاً به دست آوردن دیتاست برای موارد خاص مانند اطلاعات خصوصی افراد، توسط روش‌های ذکر شده، ساده نیست. برای حل این مشکل دو راه حل پیشنهاد می‌شود:

#### جستجوی داده
با جستجو در وب، که یک منبع پایان ناپذیر داده‌ها است می‌توان بعضی داده‌ها را به دست آورد اما ممکن است با مشکلاتی از جمله نادرست بودن یا نداشتن برچسب داده‌ها روبه رو شویم که برای حل این مشکل‌ها، روش‌هایی برای برچسب زدن به صورت خودکار به داده‌ها، ایجاد شده‌اند.

#### سنتز داده‌ها
شبیه‌سازی داده‌ها یکی از پر استفاده‌ترین روش‌ها برای تولید داده‌ها است: یعنی استفاده از شبیه‌سازهایی که به اندازهٔ ممکن به دنیای واقعی شبیه است. OpenAI Gym یک ابزار معروف برای ایجاد محیط‌های شبیه‌سازی متفاوت است

روش دیگر برای تولید داده‌ها استفاده از Generative Adversarial Networks یا GAN است.

### پاک‌سازی داده‌ها
داده‌های جمع‌آوری شده ناگزیر دارای نویز اند و این نویز می‌تواند تأثیر منفی در آموزش مدل داشته باشد در نتیجه در صورت نیاز باید فرایند پاک‌سازی داده‌ها  انجام شود.

به‌طور معمول پاک‌سازی داده‌ها به دانش افراد متخصص احتیاج دارد اما دسترسی به افراد متخصص محدود و هزینه بر است. به همین دلیل روش‌ها و سیستم‌های مانند BoostClean برای خودکار کردن این فرایند استفاده می‌شود. البته این سیستم‌ها فقط بر روی دیتاست‌های ثابتی می‌توانند کار کنند اما در دنیای واقعی که روزانه داده‌های بسیاری تولید می‌شود، این روش‌ها پاسخ گو نیستند.

### افزونگی داده‌ها
افزونگی داده‌ها  می‌تواند داده‌های جدیدی بر اساس داده‌های موجود تولید کند و تا حدودی از ابزارهای «جمع‌آوری داده‌ها» به حساب می‌آید. این روش همچنین به عنوان رگیولایزر برای جلوگیری از over fit شدن مدل بر روی داده‌های آموزشی مورد استفاده است. برای مثالی از پیاده‌سازی بخش افزونگی داده‌ها برای داده‌های تصویری می‌توان با بزرگ یا کوچک کردن تصویر یا بریدن بخش‌هایی از آن تصاویر جدید ایجاد کرد

از اولین سیستم‌هایی که برای خودکارسازی این بخش استفاده می‌شده‌است، AutoAugmentاست.

امروزه فرایند پیش پردازش داده‌ها به‌طور کامل و جامع توسط هیچ‌کدام از ابزارهای اُتوام‌ال پیاده‌سازی نشده‌است و هنوز به مقدار قابل توجهی تلاش فرد برای پیاده‌سازی نیاز دارد.

## مهندسی داده‌ها
هدف مهندسی داده‌ها ماکسیمم کردن ویژگی‌های استخراج شده از داده‌های خام برای استفاده توسط الگوریتم‌ها و مدل است؛ و شامل بخش‌هایی می‌شود:

### انتخاب ویژگی‌ها
در انتخاب ویژگی‌ها  یک زیر مجموعه از ویژگی‌ها را از روی مجموعه اصلی ویژگی‌ها با کاهش ویژگی‌های نامربوط یا تکراری انتخاب می‌شود و با این کار تلاش می شودکه مدل را ساده‌تر شود تا از بیش برازش جلوگیری کرده و کارایی مدل را بهتر شود. از جمله روش‌ها برای جستجوی ویژگی‌ها استفاده از روش‌های جستجوی اول سطح و اول بهترین و همین‌طور الگوریتم‌های شبیه‌سازی خنکسازی فلزات و الگوریتم‌های ژنتیک است.

### تولید ویژگی‌ها
در تولید ویژگی‌ها ویژگی‌های جدیدی را از فضای ویژگی‌های پایه یا داده‌های خام ایجاد می‌شود تا قابلیت تعمیم و مقاومت مدل را بهبود دهد. برای مثال از روش‌هایی مانند متمم کردن ویژگی‌های بولین یا مینمم یا ماکسیمم کردن داده‌های عددی استفاده می‌شود.

### استخراج ویژگی‌ها
فرایند استخراج ویژگی‌ها  روشی برای کاهش بعد است که با بعضی از توابع تناظرانجام می‌شود و اطلاعات و ویژگی‌های غیر تکراری را بر اساس معیارهای مشخصی استخراج می‌کند. کرنل استخراج ویژگی‌ها تابع تناظری است که می‌تواند باروشی مانند PCA پیاده‌سازی شود. به تازگی از شبکه‌های عصبی پیشخور هم برای این کار استفاده می‌شود.

## ایجاد مدل و تخمین کارایی مدل
ایجاد مدل به دوبخش فضای جستجو و روش‌های بهینه‌سازی تفسیم می‌شود. فضای جستجو ساختار مدل را تعریف می‌کند.

به‌طور کلی می‌توان مدل‌ها را به دو دسته تقسیم کرد:
# مدل‌های معمول یادگیری ماشین مانند SVM ,والگوریتم کی-نزدیک‌ترین همسایه و درخت تصمیم‌گیری
# شبکه‌های عصبی عمیق(DNN)

در این ادامه بیشتر بر NAS تمرکز می‌کنیم و مراحل اُتوام‌ال را حول آن توضیح می‌دهیم.

### جستجوی معماری عصبی(NAS)
جستجوی معماری عصبی  روشی برای اتوماسیون طراحی شبکه‌های عصبی مصنوعی (ANN) است و روشی است که به‌طور گسترده در زمینه یادگیری ماشین مورد استفاده قرار می‌گیرد. از *NAS* برای طراحی شبکه‌هایی استفاده شده‌است که از معماری‌هایی با طراحی دستی بهترعمل می‌کنند.

متدهای NAS را می‌توان با توجه به فضای جستجو، استراتژی جستجو و استراتژی تخمین عملکرد طبقه‌بندی کرد.
* *فضای جستجو* نوع ANN را که می‌توان طراحی و بهینه‌سازی کرد تعریف می‌کند. این بخش در واقع قوانین طراحی معماری شبکه را تعیین می‌کند.
* *روش بهینه‌سازی* نحوه هدایت جستجو برای پیدا کردن معماری با بهترین کارایی را، پس از تعریف فضای جستجو، تعیین می‌کند
* *استراتژی تخمین* عملکرد، نحوه عملکرد ANNهای پیشنهادی را ارزیابی می‌کند.

هدف NAS جستجوی معماری شبکه عصبی مقاوم و با کارایی مناسب است که به وسیلهٔ انتخاب و ترکیب اعمال مختلف پایه که توسط فضای جستجو از قبل تعریف شده‌است، انجام می‌شود.

### فضای جستجو
معماری شبکه عصبی را می‌توان به صورت یک گراف بدون دور جهت دارنمایش داد که از راس‌ها و یال‌هایی که این رئوس را به هم وصل می‌کند تشکیل می‌شود که هر راس یک تنسور را نشان می‌دهد و هر یال یک عملیات را از مجموعه اعمال کاندید نشان می‌دهد. این مجموعه شامل عملیات اساسی کانولوشن، pooling و تابع فعال ساز و پریدن از روی رابطه و الحاق و جمع است. نحوه انتخاب و ترکیب این روش‌ها با فضای جستجوی طراحی شبکه تغییر می‌کند. این فضای جستجو الگوی ساختاری که الگوریتم‌های بهینه‌سازی معماری می‌توانند در آن جستجو کنند را مشخص می‌کند.

### بهینه‌سازی
روش‌های بهینه‌سازی را می‌توان به دو دسته بهینه‌سازی پارامترهای فرایند یادگیری (مانند نرخ یادگیری و سایز batch) و گروه پارامترهای طراحی معماری مدل (مانند تعداد همسایه‌ها در KNN و تعداد لایه‌ها در شبکه عصبی عمیق) تقسیم کرد.

#### بهینه‌سازی معماری
بعد از تعریف فضای جستجو باید شبکه با بهترین عملکرد را انتخاب کنیم که به آن بهینه‌سازی معماری گفته می‌شود. جستجوی خودکار معماری از روش‌های مختلفی انجام می‌شود. یک روش استفاده از الگوریتم ژنتیک است. برای مثال می‌توان معماری شبکه را با رشته‌ای باینری مشخص کرد که در آن ۱ نشان دهنده این است که دو راس به هم متصل اند و صفر نشان دهندهٔ نبود هیچ اتصالی بین آن دو راس است (در این روش تعداد راس‌ها از قبل تعیین می‌شود). در این نمونه استفاده از الگوریتم ژنتیک، هم‌گذری  شامل ترکیب بخش‌های مختلف شبکه‌های تولید شده‌است و هدف آن حفظ شبکه‌هایی با کارایی خوب و حذف شبکه‌های ضعیف می‌باشد.

#### بهینه‌سازی ابرپارامترها

بعد از پیدا کردن امیدبخش‌ترین معماری شبکه عصبی، باید ابرپارامترهای  مناسبی انتخاب کنیم تا شبکه به‌طور دقیق تنظیم شود. از جمله روش‌های بهینه‌سازی ابرپارامترها می‌توان به موارد زیر اشاره کرد:
* جستجوی شبکه‌ای
* جستجوی تصادفی
* بهینه‌سازی بیزین
* بهینه‌سازی مبتنی‌ بر گرادیان
* بهینه‌سازی فرگشتی (تکاملی)
* بهینه‌سازی population-based

### تخمین مدل
وقتی یک مدل شبکه عصبی تولید شد باید کارایی آن ارزیابی شود. اولین روشی که به ذهن می‌رسد، آموزش دادن شبکه تا زمان همگرا شدن آن و سپس ارزیابی آن است اما این راه منابع محاسباتی و زمان زیادی نیاز دارد. به همین دلیل روش‌هایی برای سریعتر کردن ارزیابی مدل توصیه می‌شود که به چند مورد اشاره می‌شود:
* به دلیل اینکه زمان آموزش شبکه رابطه مستقیم با اندازه مدل و داده‌ها دارد، می‌توان برای مثال در مسئله دسته‌بندی تصاویر، از زیر مجموعه ای از تصاویر یا از دیتاستی با رزولوشن کمتر برای آموزش استفاده کنیم.
* برای سریعتر کردن این فرایند می‌توان از دانش فراگرفته شده در مسائل قبلی (وزن‌ها) استفاده کنیم.
* راه دیگر استفاده از توقف زودهنگام که به‌طور معمول برای جلوگیری از بیش برازش شدن در یادگیری ماشین استفاده می‌شود، است. می‌توان با کمک این روش، ارزیابی مدلی که بر روی داده‌های validation  نتیجه مناسبی ندارد را متوقف کنیم.

## روش‌ها و ابزارهای اتوام‌ال
هر یک از ابزارهای اُتوام‌ال بخشی از الگوریتم‌های یادگیری ماشین برای ساختن مدل‌ها را پشتیبانی می‌کنند. از جمله رگرسیون لجستیک، الگوریتم‌های درختی، مدل‌های شبکه عصبی و SVM. برای بهینه‌سازی پارامترها از معروف‌ترین روش‌ها جستجوی حریصانه، جستجوی بیزی و جستجوی رندم هستند.

ابزارهایی که برای اُتوام‌ال ایجاد شده‌اند شامل موارد زیر است که در دانشگاه‌ها یا سازمان‌های ذکر شده توسعه داده شده‌اند:
* Auto-sklearn در دانشگاه University of Freiburg در سال ۲۰۱۴
* Auto-ml که یک پکیج متن باز  پایتون است در سال ۲۰۱۶
* TPOT در دانشگاه Pennsylvania در سال ۲۰۱۵

این سه ابزار از پکیج یادگیری ماشین scikit-learn ساخته شده‌اند
* Auto-keras در دانشگاه Texas A&M در سال ۲۰۱۷ توسعه داده شده‌است که بر روی keras و Tensorflow Scikit-learn اجرا می‌شود.
* Darwin را SparkCognition در ۲۰۱۸ معرفی کرد.
* H2O-اُتوام‌ال در سال ۲۰۱۶ توسط H2O معرفی شد که از مدل‌های یادگیری ماشین بر پلتفرم H2O استفاده می‌کند.
* Google Cloud اُتوام‌ال بر روی پلتفرم ابری گوگل کار می‌کند و در سال ۲۰۱۷ معرفی شد.
* Microsoft AzureML که در سال ۲۰۱۸ توسعه داده شد، از الگوریتم‌هایی بر روی Azure استفاده می‌کند.
* TransmogrifAI را که بر روی Spark ML کار می‌کند Salesforce در سال ۲۰۱۸ معرفی کرد
* Ludwig در سال ۲۰۱۹ توسط Uber معرفی شد و بر روی فریم ورک یادگیری متن-باز  توزیع شده Uber مدل هارا اجرا می‌کند
پلتفرم‌های یاد شده بر روی جنبه‌های متفاوتی از فضای اُتوام‌ال تأکید دارند؛ و در زمان کنونی، روش‌های متفاوتی برای انتخاب مدل  و بهینه‌سازی ابرپارامترها دارند؛ و روشی وجود ندارد که به‌طور مشخص از دیگر ابزارها بهتر باشد.

## جستارهای وابسته
* جستجوی معماری عصبی
* تکامل عصبی
* خود-هماهنگ‌ساز

## منابع

رده:یادگیری ماشین