الگوریتم Q-Learning
- ابتدا مقدار Q(s, a) را به ازای تمام حالات و اعمال برابر صفر در نظر می گیریم.
- حالت فعلی سیستم (s) را به دست می آوریم.
- براساس الگوریتم ε-greedy، یک عمل (a) را انتخاب می کنیم.
- عمل a را روی محیط انجام می دهیم و منتظر امتیاز عمل خود (r) می شویم.
- حالت جدید سیستم را که پس انجام عمل سیستم به آن می رود (s’) به دست می آوریم.
- براساس رابطه ی زیر مقدار Q(s, a) را به روز می کنیم:
Q(s, a) = Q(s, a) + α [r + γ.Qmax(s’, a’) - Q(s, a)]
- α عددی بین صفر تا یک است که نرخ یادگیری (Learning Rate) نام دارد و سرعت یادگیری را تعیین می کند. بدیهی است که هرچه مقدار α بیش تر باشد، سرعت یادگیری هم بالا تر می رود ولی باید توجه داشت که مقادیر بزرگ α یادگیری را ناپایدار می کند. در اکثر کاربرد ها معمولا" مقدار 0.1 برای نرخ یادگیری پیشنهاد می شود.
- γ عددی بین صفر تا یک است که نرخ تنزیل (Discount Factor) نام دارد و مانع از واگرایی تابع کیفیت حین یادگیری می شود. مقدار γ را معمولا" برابر 0.9 در نظر می گیرند.
- Qmax(s’, a’) کیفیت بهینه ترین عمل در موقعیت جدید سیستم یعنی s’ است. به عبارتی این مقدار بیشینه ی کیفیت در موقعیت s’ به شمار می آید.
در آخر بررسی می کنیم که عامل به هدف خود (طبق مثال پیروز شدن ربات ما در بازی فوتبال) دست یافته است یا خیر. اگر پاسخ منفی بود، الگوریتم از مرحله ی سوم براساس موقعیت s’ دوباره تکرار می شود. در غیر این صورت الگوریتم خاتمه می یابد.
Bookmarks