مقدمه

در یادگیری تقویتی (Reinforcement Learning)، عامل باید از طریق تعامل با محیط و دریافت پاداش، سیاست بهینه را یاد بگیرد. دو رویکرد کلاسیک وجود دارد: روش‌های بدون مدل (Model-Free) مثل Q-Learning که فقط از تجربه واقعی استفاده می‌کنند، و روش‌های مبتنی بر مدل (Model-Based) که ابتدا مدل محیط را می‌سازند و سپس روی آن برنامه‌ریزی می‌کنند. معماری داینا (Dyna) که توسط ریچارد ساتون در اوایل دهه ۱۹۹۰ معرفی شد، این دو رویکرد را به شکل هوشمندانه‌ای با هم ترکیب می‌کند.

داینا نه صرفاً یک الگوریتم، بلکه یک معماری کلی است که یادگیری مستقیم، ساخت مدل و برنامه‌ریزی را به‌صورت همزمان و پیوسته انجام می‌دهد. معروف‌ترین پیاده‌سازی آن Dyna-Q است که از Q-Learning به‌عنوان هسته یادگیری استفاده می‌کند.

ایده اصلی داینا چیست؟

هر بار که عامل در محیط واقعی اقدامی انجام می‌دهد و نتیجه را می‌بیند، سه کار همزمان انجام می‌شود:

  1. به‌روزرسانی مستقیم تابع ارزش (یا Q) بر اساس تجربه واقعی (مثل Q-Learning معمولی).
  2. به‌روزرسانی مدل محیط با همان تجربه (یادگیری اینکه «اگر در این حالت این اقدام را انجام دهم، چه پاداش و حالت بعدی خواهم دید»).
  3. انجام چندین گام برنامه‌ریزی (Planning): انتخاب تصادفی چند جفت حالت-اقدام قبلی، شبیه‌سازی نتیجه آن‌ها با مدل یادگرفته‌شده، و اعمال همان به‌روزرسانی ارزش روی تجربه‌های خیالی.

به این ترتیب، هر تجربه واقعی چندین بار «استفاده» می‌شود: یک بار مستقیم و چندین بار از طریق شبیه‌سازی. نتیجه این کار افزایش چشمگیر بهره‌وری نمونه (Sample Efficiency) است؛ یعنی با تعداد تعاملات واقعی کمتر، عامل به سیاست خوب نزدیک‌تر می‌شود.

الگوریتم Dyna-Q به‌صورت گام‌به‌گام

نسخه جدولی کلاسیک Dyna-Q (بر اساس کتاب Reinforcement Learning: An Introduction نوشته ساتون و بارتو) به‌صورت زیر کار می‌کند:

  1. مقداردهی اولیه جدول Q و مدل (Model) برای همه جفت‌های حالت-اقدام.
  2. در هر گام زمانی:
    • حالت فعلی را مشاهده کن.
    • اقدام را با سیاست اکتشافی (مثلاً ε-greedy) انتخاب کن.
    • اقدام را در محیط واقعی اجرا کن و پاداش و حالت بعدی را دریافت کن.
    • به‌روزرسانی مستقیم Q با قاعده Q-Learning انجام بده.
    • مدل را با تجربه واقعی به‌روز کن (در محیط قطعی معمولاً آخرین مشاهده ذخیره می‌شود).
    • n بار حلقه برنامه‌ریزی را اجرا کن: یک جفت حالت-اقدام تصادفی از تجربه‌های قبلی انتخاب کن، با مدل نتیجه را شبیه‌سازی کن، و همان به‌روزرسانی Q را روی آن تجربه خیالی اعمال کن.

پارامتر n (تعداد گام‌های برنامه‌ریزی به ازای هر تجربه واقعی) کنترل‌کننده تعادل بین محاسبات و سرعت یادگیری است. مقادیر رایج بین ۵ تا ۵۰ یا بیشتر هستند.

چرا داینا سریع‌تر یاد می‌گیرد؟

در روش‌های خالص Model-Free، اطلاعات یک تجربه فقط یک بار استفاده می‌شود. در داینا، مدل یادگرفته‌شده اجازه می‌دهد عامل «در ذهن خود» مسیرهای مختلف را بارها تمرین کند. این موضوع به‌خصوص در محیط‌هایی که تعامل واقعی پرهزینه یا کند است (مانند رباتیک واقعی یا شبیه‌سازی‌های سنگین) بسیار ارزشمند است.

در آزمایش‌های کلاسیک ساتون روی هزارتوهای شبکه‌ای، افزایش تعداد گام‌های برنامه‌ریزی باعث کاهش شدید تعداد گام‌های واقعی مورد نیاز برای رسیدن به سیاست بهینه می‌شد.

نسخه‌های مختلف و گسترش‌ها

  • Dyna-Q: نسخه پایه با Q-Learning.
  • Dyna-Q+: افزودن پاداش اکتشافی برای جفت‌هایی که مدت‌هاست در واقعیت امتحان نشده‌اند (مناسب محیط‌های در حال تغییر).
  • نسخه‌های با تقریب تابع (Linear Function Approximation) و Prioritized Sweeping.
  • نسخه‌های چندگامی و مبتنی بر مدل‌های عمیق‌تر در سال‌های اخیر.

داینا پایه بسیاری از ایده‌های مدرن Model-Based RL و Imagination-based Learning (مانند Dreamer) محسوب می‌شود.

مثال کاربردی: بازی عامل یادگیرنده در پردآوا

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

این نوع محیط (Grid World / Maze) دقیقاً همان سناریویی است که معماری داینا برای آن طراحی شده و در مقالات اصلی ساتون بارها آزمایش شده است. عامل با ترکیب تجربه واقعی حرکت در هزارتو و شبیه‌سازی‌های ذهنی از مدل یادگرفته‌شده، خیلی سریع‌تر از یک عامل صرفاً Q-Learning خالص مسیر را یاد می‌گیرد. مشاهده رفتار عامل در این بازی، درک شهودی خوبی از قدرت ترکیب یادگیری مستقیم و برنامه‌ریزی مبتنی بر مدل به ما می‌دهد.

نکات عملی برای پیاده‌سازی

  • در محیط‌های قطعی، مدل می‌تواند به‌سادگی آخرین مشاهده را ذخیره کند.
  • در محیط‌های تصادفی، باید آمار انتقال و پاداش را نگه داشت (یا از مدل‌های احتمالی استفاده کرد).
  • انتخاب حالت-اقدام برای برنامه‌ریزی می‌تواند تصادفی ساده یا اولویت‌دار (Prioritized Sweeping) باشد.
  • در مسائل بزرگ با فضای حالت پیوسته، از تقریب تابع یا مدل‌های عصبی استفاده می‌شود.
  • تعادل بین تعداد گام‌های واقعی و برنامه‌ریزی باید بر اساس هزینه محاسباتی و هزینه تعامل تنظیم شود.

نتیجه‌گیری

داینا نشان می‌دهد که یادگیری و برنامه‌ریزی لزوماً دو فرآیند جدا نیستند. با یادگیری همزمان یک مدل ساده از محیط و استفاده مکرر از آن برای شبیه‌سازی، می‌توان بهره‌وری داده را به‌طور قابل توجهی افزایش داد. این ایده ساده اما قدرتمند، هنوز هم پایه بسیاری از سیستم‌های مدرن یادگیری تقویتی مبتنی بر مدل است و در محیط‌های آموزشی مانند بازی عامل یادگیرنده پردآوا به‌خوبی قابل مشاهده و تجربه است.