CoCalc Public FilesFinalNoteBook.ipynbOpen with one click!
Author: Hossain Gerami Tehrani
Views : 138
Compute Environment: Ubuntu 18.04 (Deprecated)

یادگیری تقویت شده

یادگیری تقویت شده بخشی از یادگیری ماشینی است که از روانشناسی رفتاری تاثیر گرفته و بیان میدارد که چگونه یک [ایجنت نرم افزاری](https://en.wikipedia.org/wiki/Software_agent) باید[ اعمالی](https://en.wikipedia.org/wiki/Action_selection) را در یک محیط انجام دهد تا میزان پاداش انباشته را به حداکثر برساند. در یادگیری ماشینی ، محیط معمولا بصورت [فرایندهای تصمیم‌گیری مارکوف](https://en.wikipedia.org/wiki/Markov_decision_process) فرموله میشود، درست همانند همه ی الگوریتم های یادگیری تقویت شده برای این مطلب از [برنامه‌نویسی پویا](https://en.wikipedia.org/wiki/Dynamic_programming) استفاده شده است.

در برخی مسائل یادگیری ماشینی ، ما بصورت مستقیم دسترسی فوری به لیبل ها(نشان ها) نداریم. بنابر این ما به تکنیک های یادگیری نظارت شده نمیتوانیم تکیه کنیم.اگر، چنانچه چیزی وجود داشته باشد که ما بتوانیم با آن تعامل کنیم به وسیله آن مقداری فیدبک بگیریم، که حرکت قبلی ما خوب یا بد بوده، میتوانی یادگیری تقویت شده را بکار گیریم تا یادبگیریم چگونه رفتارمان را بهبود ببخشیم.

برخلاف یادگیری نظارت شده ، در یادگیری تقویتی، جفت های ورودی و خروجی نشان دار به هیچ عنوان وجود ندارد و عمل های پر اشتباه هیچوقت بصورت مستقیم درست نمیشوند. این بسیاری از پاردایم های یادگیری همزمان را شکل میدهد که درگیر یافتن یک بالانس بین ماجراجویی(شرایطی که قبلا مشاهد و یا یادگیری نشده) و سر سپردگی(شرایطی که اَعمال با استفاده از تجربیات گذشته انجام میشود) هستند.

**بیان مسئله**
ما از شبیه ساز [سومو](http://sumo.dlr.de/wiki/Simulation_of_Urban_MObility_-_Wiki) استفاده کردیم که تمامی نکات چهارراه مورد مطالعه در آن پیاده سازی شده . این نکات شامل موارد زیر میباشد :
  • اجرای دقیق و مو به موی لوجستیک چهارراه
  • اجرای دقیق ترافیک ورودی به چهارراه
  • اضافه کردن عنصر پویای چهارراه (چراغ راهنمایی و رانندگی)
In [1]:
%%html <!-- TODO --> <div id="15110421761413674"><script type="text/JavaScript" src="https://www.aparat.com/embed/4psO7?data[rnddiv]=15110421761413674&data[responsive]=yes"></script></div>
که بوسیله آن ما به چراغ راهنمایی یاد میدهیم که بهترین زمانبندی را برگزیند.درایور پیاده سازی شده(env.py) برای تبدیل به شمای مارکوف ، رابط بین محیط شبیه ساز سومو و ایجنت ما میباشد . بدین صورت که عمل (action) مورد نظر را گرفته، آنرا در محیط چهارراه اِعمال کرده و فید بک را بصورت یک لیست از (state) ها و یک سیگنال(مقدار) پاداش (reward) بر میگرداند.
In [4]:
%%html <!-- TODO --> <div id="15111046243326414"><script type="text/JavaScript" src="https://www.aparat.com/embed/hSnr1?data[rnddiv]=15111046243326414&data[responsive]=yes"></script></div>
نحوه پیاده سازی ای عناصر زنجیره مارکوف به صورت زیر میباشد:
Element Implementation
State Dictionary [Queue(all edges), Number of Vehicle(a.e.), Waiting Time(a.e.)]
Action The index of choosen seconds for Traffic light in the list of possible seconds for example : actionsForLeftPhase = [3, 4, 5, 6, 7, 8, 9, 10]
Reward (1 * queueTracker[edge]) ** 1.75 + (2 * waitingTracker[edge]) **1.75

**هدف**
ما در این پروژه قصد داریم که با استفاد از عملگرها(actions) میزان معطلی خودروها(reward) را به حداقل رسانده و به مدلی از تصمیم گیری برسیم که قابلیت جامعیت داشته باشد.
اما چگونه؟
*Deep Q-Network*
DQNs در سال 2015 به شهرت رسید زمانیکه نتایج موفقی از بکارگیری آنها در یادگیری بازی های آتاری بدست آمد. در این تحقیقات، ایجنت ،عمل یادگیری را فقط از راه دیدن پیکسل های صفحه انجام میدهد. ما یک شبکه عصبی را تعلیم خواهیم داد تا مقدار Q(s,a) را بفهمیم. بوسیله این مقادیر Q ما بهترین عمل را برمیگزینیم.
*Policy gradient*
این متد مستقیماً راهکار(مجموعه ای از اکشن ها)را تخمین میزند. نتیجه یک دسته از اکشن های مرتب شده است که ما را به حداکثری کردن سیگنال پاداش هدایت میکند چنانچه یک زیر دسته را برگزینیم.در این پروژه ما بوسیله [گرادیان کاهشی](https://en.wikipedia.org/wiki/Gradient_descent) به عمل های بهینه میرسیم .
در این پروژه ، تمرکز ما بر روی چگونگی پیاده سازی یادگیری تقویتی است بوسیله CNTK.
In [ ]: