یادگیری ماشین اتوماتیک
یادگیری ماشین اتوماتیک(به انگلیسی: Automated machine learning، به طور مخفف AutoML) فرایند اتوماسیون اعمال یادگیری ماشین بر مشکلات دنیای واقعی است. AutoML خط لوله کامل فرایندهای یادگیری ماشین- از مجموعه دادههای خام گرفته تا ایجاد مدل قابل استفاده -را در بر میگیرد. پیش از این AutoML به عنوان راه حلی مبتنی بر هوش مصنوعی برای چالشهای روزافزون استفاده از یادگیری ماشین ارائه شدهاست.[1][2] به دلیل اتوماتیک بودن AutoML افراد غیر متخصص نیز میتوانند از مدلها و تکنیکهای یادگیری ماشین، بدون نیاز به یادگیری تخصصی در این زمینه، استفاده کنند.
خودکارسازی فرایند استفاده از الگوریتم های یادگیری ماشین علاوه بر مزایای ذکر شده، مزایای دیگری مانند تولید راه حلهای سادهتر، ایجاد سریع تر این راه حلها و ایجاد مدلهایی که اغلب از مدلهایی که به صورت دستی طراحی شدهاند، بهترند، ارائه میدهد.
مقایسه با رویکرد استاندارد
در یادگیری ماشین معمولی، مجموعه ای از دادههای ورودی برای یادگیری در اختیار داریم. این دادهٔ خام ممکن است در شکل و فرمتی مناسب برای اعمال همه ی الگوریتمها، نباشد. برای اینکه دادهها برای یادگیری ماشین قابل استفاده باشند، ممکن است یک متخصص نیاز به اعمال پیش پردازش دادهها، مهندسی ویژگیها، استخراج ویژگیها و روشی برای انتخاب ویژگیها داشته باشد.
بعد از این مرحله باید انتخاب الگوریتم و بهینهسازی پارامترها، برای حداکثر کردن کارایی پیشبینی مدل، انجام شود. همهٔ این مراحل چالشهایی دارند و AutoML بهطور قابل ملاحظه ای این مراحل را برای افراد غیرمتخصص، ساده میکند.
اهداف اتوماتیک سازی
یادگیری ماشین اتوماتیک میتواند گامهای مختلفی از فرایند یادگیری ماشین را هدف قرار دهد.[2] که این اهداف شامل موارد زیر است:
- آمادهسازی دادههای خام و فرمتهای مختلف (به انگلیسی: Data preparation)
- مهندسی ویژگی
- انتخاب ویژگیها
- استخراج ویژگی
- یادگیری متا و یادگیری انتقال
- تشخیص و اصلاح مقادیر جا افتاده یا اشتباه دادهها یا مقادیر گمشده
- انتخاب مدل
- بهینهسازی هایپرپارامترهای الگوریتم یادگیری
- انتخاب خط لوله بر اساس محدودیتهای زمان، حافظه و محدودیتهای پیچیدگی
- انتخاب معیارهای ارزیابی و روشهای اعتبار سنجی
- بررسی مشکلها
- تجزیه و تحلیل نتایج به دست آمده
- رابط کاربر و تصویر سازی برای یادگیری ماشین خودکار
به طور کلی میتوان فرایند یادگیری ماشین اتوماتیک را به چند بخش اصلی تقسیم کرد:
- آمادهسازی دادهها
- مهندسی ویژگیها
- ایجاد مدل و تخمین کارایی مدل
آمادهسازی دادهها
جمعآوری داده
مطالعات عمیق و فراوان در حوزهٔ یادگیری ماشین به وجود آورندهٔ نیاز دائمی به در دسترس بودن دادههای مختلف شدهاست. به همین دلیل تعداد زیادی دیتاست قابل دسترسی برای همگان به وجود آمدهاند. در مراحل اولیه توسعه یادگیری ماشین، دیتاست اعداد دستنویس MNIST[3] توسعه داده شد و پس از آن دیتاستهای بزرگ CIFAR-10 و CIFAR-100 و ImageNet[4] نیز توسعه داده شدند. دیتاستهای مختلفی با جستجوی عبارت مورد نظر در Kaggle و Google Dataset Search و Elsevier Data بایگانیشده در ۳ ژوئن ۲۰۲۰ توسط Wayback Machine نیز قابل دسترسی است[5]ولی معمولاً به دست آوردن دیتاست برای موارد خاص مانند اطلاعات خصوصی افراد، توسط روشهای ذکر شده، ساده نیست. برای حل این مشکل دو راه حل پیشنهاد میشود:
جستجوی داده
با جستجو در وب، که یک منبع پایان ناپذیر دادهها است میتوان بعضی دادهها را به دست آورد اما ممکن است با مشکلاتی از جمله نادرست بودن یا نداشتن برچسب دادهها روبه رو شویم که برای حل این مشکلها، روشهایی برای برچسب زدن به صورت خودکار به دادهها، ایجاد شدهاند.[5]
سنتز دادهها
شبیهسازی دادهها یکی از پر استفادهترین روشها برای تولید دادهها است: یعنی استفاده از شبیهسازهایی که به اندازهٔ ممکن به دنیای واقعی شبیه است. OpenAI Gym[6] یک ابزار معروف برای ایجاد محیطهای شبیهسازی متفاوت است
روش دیگر برای تولید دادهها استفاده از Generative Adversarial Networks یا GAN است.[5]
پاک سازی دادهها
دادههای جمعآوری شده ناگزیر دارای نویز اند و این نویز میتواند تأثیر منفی در آموزش مدل داشته باشد در نتیجه در صورت نیاز باید فرایند پاک سازی داده ها (به انگلیسی: data cleaning) انجام شود.
بهطور معمول پاک سازی دادهها به دانش افراد متخصص احتیاج دارد اما دسترسی به افراد متخصص محدود و هزینه بر است. به همین دلیل روشها و سیستمهای مانند BoostClean[7] برای اتوماتیک کردن این فرایند استفاده میشود. البته این سیستمها فقط بر روی دیتاستهای ثابتی میتوانند کار کنند اما در دنیای واقعی که روزانه دادههای بسیاری تولید میشود، این روشها پاسخ گو نیستند.[5]
افزونگی دادهها
افزونگی داده ها (به انگلیسی: Data Augmentation) میتواند دادههای جدیدی بر اساس دادههای موجود تولید کند و تا حدودی از ابزارهای «جمع آوری داده ها» به حساب میآید. این روش همچنین به عنوان رگیولایزر برای جلوگیری از over fit شدن مدل بر روی دادههای آموزشی مورد استفاده است. برای مثالی از پیادهسازی بخش افزونگی دادهها برای دادههای تصویری میتوان با بزرگ یا کوچک کردن تصویر یا بریدن بخشهایی از آن تصاویر جدید ایجاد کرد[5]
از اولین سیستمهایی که برای اتوماتیک سازی این بخش استفاده میشدهاست، AutoAugment[8]است.
امروزه فرایند پیش پردازش دادهها بهطور کامل و جامع توسط هیچکدام از ابزارهای AutoML پیادهسازی نشدهاست و هنوز به مقدار قابل توجهی تلاش فرد برای پیادهسازی نیاز دارد.[9]
مهندسی دادهها
هدف مهندسی دادهها (به انگلیسی: Feature Engineering)ماکسیمم کردن ویژگیهای استخراج شده از دادههای خام برای استفاده توسط الگوریتمها و مدل است؛ و شامل بخشهایی میشود:
انتخاب ویژگیها
در انتخاب ویژگیها (به انگلیسی: Feature Selection) یک زیر مجموعه از ویژگیها را از روی مجموعه اصلی ویژگیها با کاهش ویژگیهای نامربوط یا تکراری انتخاب میشود و با این کار تلاش می شودکه مدل را سادهتر شود تا از بیش برازش (به انگلیسی: overfitting)جلوگیری کرده و کارایی مدل را بهتر شود. از جمله روشها برای جستجوی ویژگیها استفاده از روشهای جستجوی اول سطح و اول بهترین و همینطور الگوریتمهای شبیهسازی خنکسازی فلزات(به انگلیسی: Simulated annealing) و الگوریتمهای ژنتیک است.[5]
تولید ویژگیها
در تولید ویژگیها (به انگلیسی: Feature Construction)ویژگیهای جدیدی را از فضای ویژگیهای پایه یا دادههای خام ایجاد میشود تا قابلیت تعمیم و مقاومت(به انگلیسی: robustness) مدل را بهبود دهد. برای مثال از روشهایی مانند متمم کردن ویژگیهای بولین یا مینمم یا ماکسیمم کردن دادههای عددی استفاده میشود.[5]
استخراج ویژگیها
فرایند استخراج ویژگیها (به انگلیسی: Feature Extraction) روشی برای کاهش بعد است که با بعضی از توابع تناظر(به انگلیسی: mapping function)انجام میشود و اطلاعات و ویژگیهای غیر تکراری را بر اساس معیارهای مشخصی استخراج میکند. کرنل استخراج ویژگیها تابع تناظری است که میتواند باروشی مانند PCA پیادهسازی شود. به تازگی از شبکه های عصبی پیشخور (به انگلیسی: feed-forward)هم برای این کار استفاده میشود.[5]
ایجاد مدل و تخمین کارایی مدل
ایجاد مدل به دوبخش فضای جستجو و روشهای بهینهسازی تفسیم میشود. فضای جستجو ساختار مدل را تعریف میکند.
بهطور کلی میتوان مدلها را به دو دسته تقسیم کرد:
- مدلهای معمول یادگیری ماشین مانند SVM ,والگوریتم کی-نزدیکترین همسایه (به انگلیسی: k-nearest neighbors)و درخت تصمیمگیری
- شبکههای عصبی عمیق(DNN)[5]
در این ادامه بیشتر بر NAS تمرکز می کنیم و مراحل AutoML را حول آن توضیح می دهیم.
جستجوی معماری عصبی(NAS)
جستجوی معماری عصبی (به انگلیسی: Neural architecture search، به طور مخفف "NAS") [10][11] روشی برای اتوماسیون طراحی شبکههای عصبی مصنوعی (ANN) است و روشی است که بهطور گسترده در زمینه یادگیری ماشین مورد استفاده قرار میگیرد. از NAS برای طراحی شبکههایی استفاده شدهاست که از معماریهایی با طراحی دستی بهترعمل میکنند.[12][13]
متدهای NAS را میتوان با توجه به فضای جستجو، استراتژی جستجو و استراتژی تخمین عملکرد طبقهبندی کرد.[10]
- فضای جستجو نوع ANN را که میتوان طراحی و بهینهسازی کرد تعریف میکند. این بخش در واقع قوانین طراحی معماری شبکه را تعیین میکند.
- روش بهینه سازی نحوه هدایت جستجو برای پیدا کردن معماری با بهترین کارایی را ،پس از تعریف فضای جستجو، تعیین می کند
- استراتژی تخمین عملکرد، نحوه عملکرد ANNهای پیشنهادی را ارزیابی میکند.
هدف NAS جستجوی معماری شبکه عصبی مقاوم(به انگلیسی: robust) و با کارایی مناسب است که به وسیلهٔ انتخاب و ترکیب اعمال مختلف پایه که توسط فضای جستجو از قبل تعریف شدهاست، انجام میشود.
فضای جستجو
معماری شبکه عصبی را می توان به صورت یک گراف بدون دور جهت دار(به انگلیسی: direct acyclic graph)نمایش داد که از راس ها و یال هایی که این رئوس را به هم وصل می کند تشکیل می شود که هر راس یک تنسور را نشان می دهد و هر یال یک عملیات را از مجموعه اعمال کاندید نشان می دهد. این مجموعه شامل عملیات اساسی کانولوشن، pooling و تابع فعال ساز(به انگلیسی: activation function) و پریدن از روی رابطه و الحاق و جمع است. نحوه انتخاب و ترکیب این روش ها با فضای جستجوی طراحی شبکه تغییر می کند. این فضای جستجو الگوی ساختاری که الگوریتم های بهینه سازی معماری می توانند در آن جستجو کنند را مشخص می کند.[5]
بهینه سازی
روشهای بهینهسازی را می توان به دو دسته بهینه سازی پارامترهای فرایند یادگیری (مانند نرخ یادگیری و سایز batch) و گروه پارامترهای طراحی معماری مدل (مانند تعداد همسایهها در KNN و تعداد لایهها در شبکه عصبی عمیق) تقسیم کرد.[5]
بهینه سازی معماری
بعد از تعریف فضای جستجو باید شبکه با بهترین عملکرد را انتخاب کنیم که به آن بهینه سازی معماری گفته می شود. جستجوی اتوماتیک معماری از روش های مختلفی انجام می شود. یک روش استفاده از الگوریتم ژنتیک است .برای مثال می توان معماری شبکه را با رشته ای باینری مشخص کرد که در آن 1 نشان دهنده این است که دو راس به هم متصل اند و صفر نشان دهنده ی نبود هیچ اتصالی بین آن دو راس است(در این روش تعداد راس ها از قبل تعیین می شود) . در این نمونه استفاده از الگوریتم ژنتیک ، cross over شامل ترکیب بخش های مختلف شبکه های تولید شده است و هدف آن حفظ شبکه هایی با کارایی خوب و حذف شبکه های ضعیف می باشد.[5]
بهینه سازی hyper parameter ها
بعد از پیدا کردن امیدبخش ترین معماری شبکه عصبی، باید هایپرپارامترهای مناسبی انتخاب کنیم تا شبکه به طور دقیق تنظیم شود. از جمله روش های بهینه سازی هایپرپارامترها می توان به موارد زیر اشاره کرد:
- جستجوی grid
- جستجویrandom
- بهینه سازی بیزین
- بهینه سازی gradient-based
- بهینه سازی تکاملی
- بهینه سازی population-based
تخمین مدل
وقتی یک مدل شبکه عصبی تولید شد باید کارایی آن ارزیابی شود .اولین روشی که به ذهن می رسد، آموزش دادن شبکه تا زمان همگرا شدن آن و سپس ارزیابی آن است اما این راه منابع محاسباتی و زمان زیادی نیاز دارد. به همین دلیل روش هایی برای سریعتر کردن ارزیابی مدل توصیه می شود که به چند مورد اشاره می شود:
- به دلیل اینکه زمان آموزش شبکه رابطه مستقیم با اندازه مدل و داده ها دارد، می توان برای مثال در مساله دسته بندی تصاویر،از زیر مجموعه ای از تصاویر و یا از دیتاستی با رزولوشن کمتر برای آموزش استفاده کنیم.
- برای سریعتر کردن این فرایند می توان از دانش فراگرفته شده در مسائل قبلی (وزن ها) استفاده کنیم.
- راه دیگر استفاده از توقف زودهنگام(به انگلیسی: early stopping) که به طور معمول برای جلوگیری از بیش برازش(به انگلیسی: over-fitting) شدن در یادگیری ماشین استفاده می شود، است . می توان با کمک این روش، ارزیابی مدلی که بر روی داده های validation نتیجه مناسبی ندارد را متوقف کنیم.
روشها و ابزارهای AutoML
هر یک از ابزارهای AutoML بخشی از الگوریتمهای یادگیری ماشین برای ساختن مدلها را پشتیبانی میکنند. از جمله رگرسیون لوجستیک، الگوریتمهای درختی، مدلهای شبکه عصبی و SVM. برای بهینهسازی پارامترها از معروفترین روشها جستجوی حریصانه، جستجوی بیزی و جستجوی رندم هستند.
ابزارهایی که برای AutoML ایجاد شدهاند شامل موارد زیر است که در دانشگاهها یا سازمانهای ذکر شده توسعه داده شدهاند:
- Auto-sklearn در دانشگاه University of Freiburg در سال ۲۰۱۴
- Auto-ml که یک پکیج متن باز (به انگلیسی: open-source) پایتون است در سال ۲۰۱۶
- TPOT در دانشگاه Pennsylvania در سال ۲۰۱۵
این سه ابزار از پکیج یادگیری ماشین scikit-learn ساخته شدهاند
- Auto-keras در دانشگاه Texas A&M در سال ۲۰۱۷ توسعه داده شدهاست که بر روی kerasو Tensorflow Scikit-learn اجرا میشود.
- Darwin را SparkCognition در ۲۰۱۸ معرفی کرد.
- H2O-Automl در سال ۲۰۱۶ توسط H2O معرفی شد که از مدلهای یادگیری ماشین بر پلتفرم H2O استفاده میکند.
- Google Cloud Automl بر روی پلتفرم ابری گوگل کار میکند و در سال ۲۰۱۷ معرفی شد.
- Microsoft AzureMLکه در سال ۲۰۱۸ توسعه داده شد، از الگوریتمهایی بر روی Azure استفاده میکند.
- TransmogrifAI را که بر روی Spark ML کار میکند Salesforce در سال ۲۰۱۸ معرفی کرد
- Ludwig در سال ۲۰۱۹ توسط Uber معرفی شد و بر روی فریم ورک یادگیری متن باز(به انگلیسی: open-source) توزیع شده Uber مدل هارا اجرا میکند
پلتفرمهای یاد شده بر روی جنبههای متفاوتی از فضای AutoML تأکید دارند؛ و در زمان کنونی، روشهای متفاوتی برای انتخاب مدل(به انگلیسی: model selection) و بهینه سازی هایپرپارامترها دارند؛ و روشی وجود ندارد که بهطور مشخص از دیگر ابزارها بهتر باشد.[9]
جستارهای وابسته
منابع
- Thornton, Chris; Hutter, Frank; Hoos, Holger H.; Leyton-Brown, Kevin (2013). "Auto-WEKA". Proceedings of the 19th ACM SIGKDD international conference on Knowledge discovery and data mining - KDD '13. New York, New York, USA: ACM Press. doi:10.1145/2487575.2487629. ISBN 978-1-4503-2174-7.
- "AutoML 2014 @ ICML". AutoML 2014 Workshop @ ICML. Retrieved 2018-03-28.
- Lecun, Y.; Bottou, L.; Bengio, Y.; Haffner, P. (1998). "Gradient-based learning applied to document recognition". Proceedings of the IEEE. 86 (11): 2278–2324. doi:10.1109/5.726791. ISSN 0018-9219.
- Deng, Jia; Dong, Wei; Socher, Richard; Li, Li-Jia; Kai Li; Li Fei-Fei (2009-06). "ImageNet: A large-scale hierarchical image database". 2009 IEEE Conference on Computer Vision and Pattern Recognition. IEEE. doi:10.1109/cvpr.2009.5206848. ISBN 978-1-4244-3992-8. Check date values in:
|date=
(help) - AutoML: A Survey of the State-of-the-Art Xin He, Kaiyong Zhao, Xiaowen Chu
- "Preprint repository arXiv achieves milestone million uploads". Physics Today. 2014. doi:10.1063/pt.5.028530. ISSN 1945-0699.
- "Preprint repository arXiv achieves milestone million uploads". Physics Today. 2014. doi:10.1063/pt.5.028530. ISSN 1945-0699.
- Cubuk, Ekin D.; Zoph, Barret; Mane, Dandelion; Vasudevan, Vijay; Le, Quoc V. (2019-06). "AutoAugment: Learning Augmentation Strategies From Data". 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). IEEE. doi:10.1109/cvpr.2019.00020. ISBN 978-1-72813-293-8. Check date values in:
|date=
(help) - Truong, Anh; Walters, Austin; Goodsitt, Jeremy; Hines, Keegan; Bruss, C. Bayan; Farivar, Reza (2019-11). "Towards Automated Machine Learning: Evaluation and Comparison of AutoML Approaches and Tools". 2019 IEEE 31st International Conference on Tools with Artificial Intelligence (ICTAI). IEEE. doi:10.1109/ictai.2019.00209. ISBN 978-1-72813-798-8. Check date values in:
|date=
(help) - Elsken, Thomas; Metzen, Jan Hendrik; Hutter, Frank (August 8, 2019). "Neural Architecture Search: A Survey". Journal of Machine Learning Research. 20 (55): 1–21. arXiv:1808.05377. Bibcode:2018arXiv180805377E – via jmlr.org.
- Wistuba, Martin; Rawat, Ambrish; Pedapati, Tejaswini (2019-05-04). "A Survey on Neural Architecture Search". arXiv:1905.01392 [cs.LG].
- Zoph, Barret; Le, Quoc V. (2016-11-04). "Neural Architecture Search with Reinforcement Learning". arXiv:1611.01578 [cs.LG].
- Zoph, Barret; Vasudevan, Vijay; Shlens, Jonathon; Le, Quoc V. (2017-07-21). "Learning Transferable Architectures for Scalable Image Recognition". arXiv:1707.07012