یادگیری تقویتی (Reinforcement Learning) چیست؟
یادگیری تقویتی و یا یادگیری تقویتی عمیق یکی از زیرشاخه های یادگیری ماشینی است. یادگیری ماشینی (Machine Learning) یکی از علوم نوظهوری است که در سالهای اخیر از رشد بسیار بالایی برخوردار بوده است، به طوری که تخمین زده شده است که در حال حاضر دارای بازار 7.3 میلیارد دلاری است که روز به روز نیز بر مقدار آن افزوده میشود.
موسسه مکنزی (McKinsey) پیشبینی کرده است که تکنیکهای هوش مصنوعی (AI) مانند یادگیری عمیق (Deep Learning) و یادگیری تقویتی (Reinforcement Learning) دارای پتانسیل ایجاد درآمد سالیانه در حدود 5.8 تریلیون دلار هستند و میتوانند در بیش از 18 صنعت به صورت تجاری پیادهسازی شوند.
به طور کلی یادگیری ماشینی به سه دسته:
- یادگیری با نظارت (Supervised Learning)
- یادگیری بدون نظارت (Unsupervised Learning)
- یادگیری تقویتی (Reinforcement Learning)
تقسیمبندی میشود.
یادگیری با نظارت (Supervised Learning) چیست؟
یادگیری با نظارت پیدا کردن تابعی است که با وارد کردن یک ورودی مانند x، خروجی مانند y حاصل شود. یادگیری با نظارت را میتوان به دو زیر مجموعه کلی تقسیمبندی نمود:
- طبقهبندی (Classification)
- رگرسیون (Regression)
در طول فرآیند یادگیری طبقهبندی، تعدادی داده با عنوان طبقه مشخص شده به عنوان ورودی به الگوریتم ارائه میشوند. بعد از انجام فرآیند یادگیری، الگوریتم قادر خواهد بود دادههای ورودی را دریافت نماید و به عنوان پاسخ، طبقه مربوطه را ارائه دهد. به عنوان مثال تعیین این مطلب که آیا ایمیل دریافتی صحیح و یا هرزنامه است توسط الگوریتمهای طبقهبندی انجام میشود.
رگرسیون نیز یک روش آماری برای پیشبینی است که در آن سعی میشود تا رابطهای بین متغیرهای مستقل و وابسته استخراج شود.
یادگیری بدون نظارت (Unsupervised Learning) چیست؟
یادگیری بدون نظارت شاخهای از یادگیری ماشینی است که هدف آن پیدا کردن الگوهای موجود در دادهها است و اغلب در تجزیه و اکتشاف دادهها مورد استفاده قرار میگیرد.
خوشهبندی (Clustering) یکی از پرکاربردترین روشهای یادگیری بدون نظارت است. هدف در خوشهبندی شناسایی خوشهها و زیرگروهها از دادههایی است که نامگذاری نشدهاند. این خوشهها یا زیرگروهها به گونهای انتخاب میشوند که دادههای موجود در آنها بیشترین شباهت ممکن را به هم داشته باشند.
عمده تفاوت روش یادگیری ماشینی با نظارت و بدون نظارت در نامگذاری (Label) دادهها است. در یادگیری با نظارت دادههای ورودی نامگذاری شدهاند. ولی در یادگیری بدون نظارت ما با دادههایی مواجه هستیم که نامگذاری خاصی ندارند.
معرفی یادگیری تقویتی
یادگیری تقویتی فرآیند نگاشت موقعیتها به اقداماتی است که در نهایت منجر به حداکثر نمودن پاداش دریافتی میشود. بنابراین عامل یادگیرنده با انتخاب اقدامات و مشاهده نتایج آنها، سعی در حداکثر نمودن پاداش دریافتی مینماید. نکته قابل توجه اين است که اين اقدامات نه تنها پاداش دريافتي آني را تحت تاثير قرار ميدهد، بلکه تمامي پاداشهاي بعدي را نيز متاثر ميسازد. اين دو خصوصيت سعي و خطا و پاداش با تاخير مهمترين وجه تمايز روش يادگيري تقويتي با ساير روشها است.
همانطور که در شکل بالا نشان داده شده است، عامل در ابتدا اقدامی را در محیط اتخاذ میکند، سپس محیط تاثیر آن اقدام را در قالب پاداش و حالت بعدی سیستم به عامل برمیگرداند. این فرآیند تا آنجا ادامه پیدا میکند که سیاست بهینه استخراج شود. بنابراین سلسله اتفاقات در این سیستم به صورت زیر خواهد بود:
یادگیری تقویتی بر خلاف دو روش قبلی یادگیری ماشینی (یادگیری با نظارت و بدون نظارت) داده ورودی دریافت نمینماید. در این روش یک محیط در اختیار عامل یادگیرنده قرار میگیرد. عامل یادگیرنده با انجام اقدامات مختلف و دریافت پاداش حاصل از اقدامات، به سمت سیاست بهینه حرکت مینماید.
به عنوان مثال فرض کنید عامل یادگیرنده قرار است یک بازی آتاری به نام Atari Breakout را بازی نماید. عامل یادگیرنده با گرفتن امتیاز پاداش مثبت دریافت مینماید و درصورت عدم توانایی کنترل، پاداش منفی دریافت میکند. عامل میتواند اقدامات حرکت به جهت چپ و یا راست را اتخاذ کند.
نتایج فرآیند یادگیری عامل با استفاده از الگوریتم یادگیری تقویتی در شکل زیر نمایش داده شده است. همانطور که مشاهده میشود عامل در ابتدا کاملاً ناشیانه بازی مینماید. اما بعد از طی شدن فرآیند یادگیری کاملاً در جهت کسب حداکثر امتیاز حرکت میکند.
در ابتدای فرآیند یادگیری
در میانه فرآیند یادگیری
در انتهای فرآیند یادگیری
اجزاء یادگیری تقویتی
یادگیری تقویتی دارای عناصر اصلی زیر است که در توسعه هر الگوریتم میبایست به درستی تعریف شوند:
عامل (Agent): عامل در یادگیری تقویتی وظیفه یادگیری و استخراج سیاست بهینه را بر عهده دارد. عامل با محیط در تعامل است و اقدامات را اتخاذ میکند.
محیط (Environment): محیطی است که عامل در تعامل با آن و اتخاذ تصمیمات مختلف حالات را تغییر میدهد. محیط پس از اقدام عامل تغییر میکند و بازخورد آن را به عامل برمیگرداند.
اقدام (Action): حرکتی است که عامل پس از مشاهده وضعیت سیستم انتخاب میکند.
حالت (State): وضعیتی که محیط در حال حاضر در آن قرار دارد و عامل با مشاهده آن تصمیم به حرکت بعدی میگیرد.
پاداش (Reward): عامل پس از مشاهده حالت سیستم و انتخاب اقدام، پاداش مشخص آن اقدام را دریافت میکند. پاداش به عنوان سیگنال بازخورد اقدام تعریف میشود که عامل را به سمت سیاست بهینه هدایت میکند.
سیاست (Policy): نحوه رفتار عامل به عنوان سیاست شناخته میشود. بنابراین عامل بسته به سیاست در نظر گرفته شده، بعد از مشاهده حالت سیستم اقدام مشخصی را انتخاب میکند.
تابع ارزش (Value function): همانطور که ذکر شد “پاداش” بازخورد آنی از اقدام عامل است. ولی اگر بخواهیم بلندمدت نگاه کنیم، به این معنی که این اقدام عامل در بلند مدت چه تاثیری خواهد داشت، از آن به عنوان تابع ارزش نام برده میشود. بنابراین تابع ارزش، بازخورد بلندمدتی است که عامل با استفاده از سیاست مشخص و اقدام اتخاذ کرده در حالت مشخص سیستم دریافت میکند.
یادگیری تقویتی عمیق (Deep Reinforcement Learning)
همانطور که ذکر شد، عامل یادگیرنده در فرآیند یادگیری تقویتی نیاز دارد تا تابع ارزش را محاسبه و ذخیر نماید. اما در مواقعی که ابعاد مساله بزرگ باشد، ذخیره تمامی ارزشهای حالتهای مختلف سیستم عملاً غیرممکن خواهد بود. در اینگونه مواقع به سراغ روشهای تخمین تابع ارزش (Approximate value function) خواهیم رفت. روشهای تقریب مختلفی وجود دارد که برخی از آنها عبارتند از:
- تقریب زننده خطی (Linear Approximator)
- تقریب زننده غیرخطی (Non-linear approximator)
- شبکه عصبی (Neural Network)
- نزدیکترین همسایه (Nearest neighbor)
- و …
در صورتی که در روش یادگیری تقویتی، برای تخمین تابع ارزش از شبکه عصبی استفاده شود، شاخه جدیدی به نام یادگیری تقویتی عمیق (Deep Reinforcement Learning) شکل میگیرد که در سالهای اخیر کاربردهای یادگیری تقویتی در طیف وسیعی از حوزه ها آزمایش شده است.
یادگیری تقویتی عمیق موضوعی بسیار جذاب جهت انجام پروژه های تحقیقاتی و کاربردی است. عملکرد یادگیری تقویتی عمیق در سال 2015 در انجام بازیهای کامپیوتری نشان داده شد و بعد از آن الگوریتم های متعددی جهت بهتر شدن کارایی آن پیشنهاد شد.
فراگیری الگوریتم های یادگیری تقویتی
چنانچه تمایل دارید به یادگیری روش یادگیری تقویتی و الگوریتم های آن بپردازید، پیشنهاد می کنیم در دوره های آموزش یادگیری تقویتی شرکت شبیه پردازان شرکت کنید. در این دوره آموزشی به معرفی مبانی این رویکرد به همراه پیاده سازی الگوریتم های یادگیری تقویتی در زبان برنامه نویسی پایتون (python) پرداخته خواهد شد.