یکی از تفاوتهای بین برنامهنویسی سنتی و الگوریتمهای یادگیری تقویتی اینه که توی برنامهنویسی، ما به سیستم میگیم چطور تصمیم بگیره اما توی RL، فقط نتیجهی تصمیمها رو بهش نشون میدیم و خودش یاد میگیره بهترین تصمیم چیه.
همین تفاوت توی پارادایم یادگیری، RL رو از خیلی از روشهای رایج Machine Learning متمایز میکنه. یکی از اولین الگوریتمهایی که این مفهوم رو به شکل عملی نشون میده، Q-Learning هست. چیزی که Q-Learning رو جالب میکنه، سادگی ایدهشه.
میشه گفت که Agent هیچ درکی از محیط نداره، مدل محیط رو هم نمیشناسه و حتی نمیدونه رسیدن به هدف چه مراحلی داره. فقط با آزمون و خطا، دریافت Reward و ذخیرهی تجربهها، کمکم یاد میگیره که در هر State، کدوم Action در بلندمدت بیشترین ارزش رو داره.
نکتهی جالب اینجاست که Q-Learning هیچ آیندهای رو پیشبینی نمیکنه؛ بلکه تخمینی از ارزش تصمیمها میسازه. به همین دلیل هم اسمش از Q-Value (Quality Value) گرفته شده؛ عددی که کیفیت هر Action رو در یک State مشخص میکنه.
البته این الگوریتم هم محدودیتهای خودش رو داره. با بزرگ شدن فضای Stateها، نگهداشتن Q-Table عملاً غیرممکن میشه و دقیقاً از همین نقطهست که روشهایی مثل Deep Q-Network (DQN) وارد بازی میشن و به جای جدول، از شبکههای عصبی برای تقریب Q-Value استفاده میکنن.
برای اینکه این مفاهیم رو بهتر درک کنم، حدود یک سال پیش، یه پروژه مسیریابی ساده با Q-Learning پیادهسازی کردم. اگر دوست داشتید، میتونید پروژه رو اینجا ببینید:
GitHub:
https://github.com/naseridev/notch
@DevTwitter | <Nima Naseri/>
Post #12603
5.9K
- 🔥 25
- ❤ 4
- 🍌 3