شما میتوانید اپلیکیشن اندروید ما را دانلود کنید.
مخصوص نسخه اندروید 4.4 به بالا دانلود اپلیکیشن اندروید

وبلاگ

یادگیری عمیق (Deep Learning) چیست؟

خلاصه: یادگیری عمیق یا همان Deep Learning شاخه ای از بحث یادگیری ماشینی و مجموعه ای از الگوریتم هایی است که تلاش می کنند مفاهیم انتزاعی سطح بالا را با استفاده یادگیری در سطوح و لایه های مختلف مدل کنند. در این پست قصد داریم تا به دوره از پرداختن به جزئیات ریاضی، به شیوه ای جذاب به معرفی یادگیری عمیق بپردازیم.

 مقدمه ای کوتاه در رابطه با تاریخچه هوش مصنوعی (Artificial Intelligence)

وقتی رشته هوش مصنوعی شروع به کار کرد، تمامی محققین بر روی “حل” مشکل متمرکز شده بودند و اینگونه بود که آن ها آموزش دیدند. برای مثال، یافتن راهکاری برای هر چیز مسائل دشوار به شکل خودکار. پیش از آن که مردم حرکت به سوی اتخاذ رویکردی متفاوت در برابر مشکل را آغاز کنند، ابتدا می بایست یک تحول انگاره یا جابه‌جایی پارادایم (به انگلیسی: Paradigm Shift) اتفاق می افتاد.

رویکرد جدید نه برای حل یک مسئله بلکه برای “تقلید” از آن راهکار بود. تمامی مشکلات قابل حل نیستند و ریاضیدانان از پیش با این موضوع آشنا هستند. پس آنچه می بایست به آن توجه می شد بنا کردن چیزی به عنوان راه حل بود. به عنوان مثال:

۰=۱+X2

 این معادله تا زمانی که مفهومی به نام اعداد مختلط (complex numbers) معرفی نشده بود پاسخی نداشت. پس مشکلات دیگری نیز هستند که در حقیقت غیر قابل هستند (از نظر منطقی). مشکلات جهان واقعی پیچیده تر از آن هستند که بتواند برای آنان راه حلی یافت. پس نیاز بود تا از مفهوم “تقلید” از یک راهکار برای حل مشکلات بسیار پیچیده دنیای حقیقی استفاده می شد. بهترین مثال برای مقایسه این دو پارادایم ابتدا نام بردن از دیپ بلو کامپیوتر شطرنج بازی است که توسط شرکت آی‌بی ام (IBM) ساخته شده و در ۱۹۹۶ گری کاسپاروف شطرنج باز برتر جهان را شکست داد و دیگری AlphaGo گوگل است که موفق شد تا Lee Sedol استاد بازی Go را در سال ۲۰۱۶ میلادی شکست دهد. مورد اول یافتن بهترین حرکت در شطرنج بود، در حالی که دومی “تقلید” از روی حرکت یک بازیکن حرفه ای در بازی Go بود.

  اثبات این مسئله که چیزی می تواند یاد گرفته شود

بدون پشتوانه قوی ریاضی، اصرار بر حرکت رو به جلو در زمینه های تحقیقاتی بی معنی است. بنابراین مسائل به زبان ریاضی و همچنین “تقلید” یک راه حل به ” برازاندن” یا همان (fitting) یک تابع ترجمه شدند.

حال آیا همه توابع می توانند “fitting” شوند؟ آن طور که به نظر می رسد باید گفت “بله” یا حداقل می توان گفت این پاسخ برای بیشتر مشکلات دنیای حقیقی که ما با آن روبرو هستیم صادق است. این همان چیزی است که از آن با عنوان “قضیه تقریب جهانی” یا UAT نام برده می شود. اما این موضوع نیازمند یک معماری معین است که ما اکنون از آن با نام “شبکه عصبی یا همان Neural Network نام می بریم. بنابراین معماری توسعه یافت که تضمین کند که با هر تابعی و با هر دقتی (accuracy) برازانده یا fit شود. برخی از مشاهدات جالب در رابطه با این معماری عبارت بودند از:

  • دسته ای از ورودی های گسسته قادر بودند تا با توابع پیوسته برازنده (fit) گردند ( به عنوان مثال توابعی بدون هیچ جهش ناگهانی).
  • وجود حداقل یک لایه (به نام لایه مخفی) از چنین گره گسسته ای لازم بود.
  • اطلاعات به دست آمده از یک گره می توانست به عنوان یک ورودی همچون مکانیزم بازخورد باشد.
  • گونه ای از “غیر خطی” مجبور بودند تا در شبکه ثبت شوند (به نام تابع فعالسازی)

 تقلید یا حدس زدن

یک مشکلی که رابطه با متد “fitting” معرفی شده در بالا وجود دارد این می باشد که بهتر این است تا ما بدانیم که راه حل مشکل به چه شکل است. این موضوع باعث به وجود آمدن پرسشی دیگر در ذهن ما می شود که اگر ما راهکار را می دانیم پس اصلا دیگر چه نیازی است تا آن را fit کنیم؟ پاسخ به این پرسش دو پهلو است؛ ۱-پردازش راهکار دقیق ممکن است بسیار محاسبه بر تر باشد ۲- بسیاری از مشکلات امروزه دنیای زندگی مصنوعی یا  AI تقلید از رفتار و کارهای انسان است.

اما همچنان مشکل اول به قوت خود باقیست. ما می بایست از پیش با راهکار آشنا باشیم. یک کامپیوتر جهت حل یک مسئله بدون راهکار مجبور به “حدس زدن” می گردد و یاد می گیرد که حدس بزند. پس اینجا یک شکاف در سر راه “یادگیری مشکلات” وجود دارد؛ تقلید و حدس زدن. پیشتر این موضوع با نام “یادگیری تحت تظارت” و “یادگیری بدون نظارت” شناخته می شد. برای نام بردن نمونه ای از “یادگیری بدون نظارت” می توان به دسته کردن مجموعه ای از داده ها بر اساس برخی از صفات اشاره کرد. این متدها رو هم رفته “یادگیری ماشین” نامیده می شوند.

در “یادگیری تحت تظارت”، دیتا پوینت (قرمز) در نظر گرفته شده و شبکه یاد گرفته است تابع (آبی) را fit کند، در این مورد تابع سینک (sinc) مد نظر است. در “یادگیری بدون تظارت” فقط عکس در نظر گرفته شده بود و به شبکه گفته شده بود تا عکس ها را بر اساس رنگ هر پیکس در ۸ دسته تقسیم بندی کند. همانطور که مشاهده می کنید شبکه در تقسیم بندی کردن پیکسل ها خوب عمل کرده است.

یادگیری عمیق شبکه های عصبی

حال سوال اینجاست که چه چیز در رابطه با شبکه های عمیق عصبی، عمیق است؟ شبکه های عمیق عصبی اساسا شبکه های عصبی هستند با بیش از یک لایه مخفی. بنابراین بیشتر به جای آن که “عمیق تر” باشند، “وسیع تر” هستند. در اینجا تعدادی سوال مطرح می شود که باید پاسخ داده شود.

اگر یک شبکه دارای یک لایه مخفی می تواند هر تابعی را تقریب بزند (UAT)، چرا چندین لایه اضافه می کند؟ این سوال یکی از اساسی ترین پرسش ها می باشد. هر لایه مخفی به عنوان یک استخراج گر ویژگی یا همان feature extractor عمل می کند. چنانچه ما تنها یک لایه مخفی داشته باشیم، دو مشکل رخ می دهد:

  • قابلیت feature extractor شبکه خیلی کم است. معنی آن این است که ما مجبور هستیم تا ویژگی های (feature) مناسبی به شبکه ارائه کنیم. این کار باعث افزودن عمل استخراج ویژگی ای می شود که مختص آن اپلیکیشن است. بنابراین شبکه در برخی از حوزه ها توانایی خود در یادگیری انواع مختلفی از توابع را از دست می دهد و دیگر نمی توان آن را “اتوماتیک” نامید.
  • حتی برای یادگیری ارائه ویژگی ها، تعداد گره ها در لایه های مخفی به صورت نمایی رشد می کنند که باعث مشکلات محاسباتی در حین یادگیری می گردد.

برای حل این موضوع، ما نیاز به شبکه ای داریم که بتواند ویژگی ها را به کمک خود یاد بگیرد. پس ما چندین لایه مخفی را که هریک از تعداد گره ها کمتر است را اضافه می کنیم. حال نحوه کار آن به چه شکل است؟ این شبکه های عصبی عمیق یاد می گیرند تا تنها با نگاه به تصاویر به دست آمده از صفحه نمایش، بازی های آتاری را بازی کنند.

جهش

حال چرا و چگونه مسئله یادگیری عمیق طی چند سال اخیر به این موفقیت دست پیدا کرده است؟ در پاسخ به چرایی این موضوع باید گفت که ایده های انقلاب گرایانه به وجود آمده  در الگوریتم های یادگیری عمیق در دهه ۱۹۹۰ میلادی توسط دکتر Goeffry Hinton باعث این مسئله شده است. اما در پاسخ به چگونگی آن می توان گفت عوامل بسیاری این مسئولیت را بر عهده داشتند؛ تعداد بسیار زیادی از مجموعه داده ها در دسترس بودند، معماری های سخت افزاری بهبود یافت، کتابخانه های نرم افزاری ساخته شد و همچنین پیشرفت های بزرگی در زمینه بهسازی convex رخ داد.

 حرکت با احتیاط

یافته های جدید نشان می دهند که این مدل یادگیری عمیق در برابر حملات به شدت آسیب پذیر است. DNN ها به هنگام عدم وجود مانع به راحتی می توانند بر روی داده ها تاثیر بگذارند. عکس زیر گویای این مطلب است:

این آسیب پذیری به  علت آسیب پذیری بیش از حد ویژگی هاست (features). تغییرات غیر قابل مشاهده توسط انسان برای ویژگی ها می تواند کاملا منجر به نابودی شبکه یادگیری گردد. اکنون مدل های جدید پیشنهاد گردیده اند که با نام Adversarial شناخته می شوند، اما پرداختن به آن فرصت دیگری را می طلبد. یکی دیگر از تغییرات در حال تکرار مسئله overfitting دیتا است که می تواند منجر به دقت بالا در زمینه آموزش گردد، اما در طول آزمایش ها نشان داده شده که این مسئله تاثیر بسیار ضعیغی از نظری عملکردی داشته اند.

برگرفته از:

What Is Deep Learning?

پاسخ دهید