عکس از گروه خودروسازی هیوندای در Unsplash
عکس از گروه خودروسازی هیوندای در Unsplash

آشنایی با یادگیری تقویتی و سیستم‌های چندعاملی: راهنمای مبتدی برای MARL (بخش 1)

تصویرسازی از بوجان، 2011

وقتی از داده‌های برچسب‌گذاری‌شده یاد می‌گیریم، آن را یادگیری نظارت‌شده می‌نامیم. وقتی با گروه‌بندی موارد مشابه یاد می‌گیریم، آن را خوشه‌بندی می‌نامیم. وقتی با مشاهده پاداش‌ها یا سودها یاد می‌گیریم، آن را یادگیری تقویتی (Reinforcement Learning) می‌نامیم.

به بیان ساده، یادگیری تقویتی فرآیند یافتن بهترین اقدامات یا استراتژی‌ها بر اساس پاداش‌های مشاهده‌شده است. این نوع یادگیری به ویژه برای وظایفی با تعداد زیادی از اقدامات ممکن مفید است. برای مثال، تصور کنید که در حال انجام بازی مار و پله هستید - جایی که می‌توانید به چپ، راست، بالا یا پایین حرکت کنید. یک ترکیب خاص از حرکات، مانند بالا ← چپ ← بالا ← راست، ممکن است منجر به برنده شدن در بازی شود. یادگیری تقویتی به یک عامل (تصمیم‌گیرنده) کمک می‌کند تا ترکیبات مختلف حرکتی را بررسی کند و یاد بگیرد که کدام یک به طور مداوم منجر به پیروزی می‌شود. در برخی موارد، چندین عامل می‌توانند با هم یاد بگیرند و تعامل داشته باشند. یک مثال خوب خودروهای خودران هستند که در یک جاده مشترک حرکت می‌کنند. این به عنوان یادگیری تقویتی چندعاملی (Multi-Agent Reinforcement Learning - MARL) شناخته می‌شود.

کنترل خودکار (Autonomous Control - AC) چیست؟
اکنون که خودروهای خودران را معرفی کردم، به این موضوع می‌پردازم که کنترل خودکار چیست. AC به سیستم‌هایی اطلاق می‌شود که در آن تصمیمات غیرمتمرکز هستند. غیرمتمرکز در این مورد به این معنی است که اجزای منفرد مانند ربات‌ها یا وسایل نقلیه می‌توانند انتخاب‌های مستقلی را در محیط خود انجام دهند. MARL در اینجا به ویژه مفید است. به عنوان مثال، در لجستیک می‌توانیم یک عامل نرم‌افزاری هوشمند را به یک کانتینر، یک وسیله نقلیه و یک انبار متصل کنیم، این سیستم چندعاملی ما را ایجاد می‌کند که در آن کانتینر می‌تواند به طور مستقل بهترین انبار را به عنوان مقصد خود بررسی کند، همچنین می‌تواند یک ارائه‌دهنده حمل و نقل مناسب را برای انتقال آن به این مرکز شناسایی‌شده انتخاب کند که در مجموع کارایی را به حداکثر می‌رساند. در این تصویرسازی ساده، فقط یک کانتینر وجود دارد، اکنون تصور کنید اگر چندین کانتینر بتوانند به همین ترتیب گروه‌بندی و حمل شوند، چقدر کارآمد خواهد بود. به طور مشابه، ناوگانی از ربات‌های تحویل که وظیفه دارند بسته‌ها را تحویل دهند، باید برای اطمینان از کارایی و جلوگیری از تأخیر هماهنگ شوند. اینجاست که MARL بسیار مهم می‌شود، زیرا این نوع تصمیم‌گیری استراتژیک را ممکن می‌سازد.

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

یادگیری تقویتی تک‌عاملی در مقابل چندعاملی
اکنون که می‌دانیم کنترل خودکار چیست، می‌توانیم عمیق‌تر به RL بپردازیم و درک کنیم که چگونه ترکیب این دو منجر به سیستم‌های کارآمد می‌شود. اما ابتدا باید درک کنیم که یادگیری تقویتی برای یک عامل چگونه کار می‌کند. چند مفهوم کلیدی وجود دارد که باید هنگام ورود به RL درک کنید. اینها شامل «عامل‌ها» (agents) هستند که تصمیم‌گیرندگان در «محیط» (environment) هستند، محیط فضایی است که عامل در آن فعالیت می‌کند، با انجام «اقدامات» (actions) فعالیت می‌کند، اقدامات گزینه‌های انتخابی هستند که یک عامل می‌تواند انجام دهد که گاهی اوقات بر محیط در قالب یک حالت تأثیر می‌گذارد، «حالت‌ها» (States) وضعیت فعلی محیط هستند. در حالی که عامل همه اینها را هدایت می‌کند، بر اساس اقداماتی که در حالت‌های خاص انجام می‌شود، بازخوردی دریافت می‌کند و این به عنوان «پاداش» (rewards) شناخته می‌شود.

یک الگوریتم محبوب که برای آموزش یک عامل منفرد استفاده می‌شود، الگوریتم Q-learning است. این الگوریتم با کمک به عامل برای تخمین پاداش از انجام اقدامات مختلف در حالت‌های مختلف کار می‌کند. یک عمل در این مورد می‌تواند برداشتن یک قدم به جلو باشد، و حالت می‌تواند محیط فعلی جدید پس از انجام عمل باشد. عامل این حالت فعلی را مشاهده می‌کند و ممکن است پاداشی دریافت کند. پس از بررسی چندین اقدام و حالت و مشاهده پاداش‌ها، عامل هر زمان که پاداش‌های جدیدی را مشاهده می‌کند، دانش خود را به‌روزرسانی می‌کند و تخمین‌هایی از این که کدام ترکیب از حالت‌ها و اقدامات پاداش داده‌اند، انجام می‌دهد. اینها Q-values نامیده می‌شوند و گاهی اوقات همگرا می‌شوند و تصمیمات بهینه را به دست می‌دهند. برای مثال، حرکات بالا ← چپ ← بالا ← راست که قبلاً معرفی کردم، تصمیمات بهینه یعنی حالت‌ها و اقداماتی هستند که بالاترین Q-values را به دست داده‌اند.

در اینجا نحوه عملکرد گام به گام Q-learning آمده است:

جایی که حالت s است، و تخمین مقدار جفت عمل-حالت فعلی از a و s که با Qt (s, a) نشان داده می‌شود، t + 1 ثابت زمان را نشان می‌دهد، ? ضریب تخفیف است، r t + 1 پرداختی است که عامل هنگام انجام عمل a در حالت s دریافت می‌کند، و پارامتر a نرخ یادگیری است.

نحوه عملکرد یادگیری RL چندعاملی
وقتی صحبت از چندین عامل در یک محیط مشترک می‌شود، اوضاع پیچیده‌تر می‌شود. این به این دلیل است که عوامل بر تصمیمات یکدیگر تأثیر می‌گذارند و همگرایی الگوریتم‌هایی مانند Q-learning را سخت می‌کند، زیرا اقدامات عوامل با گذشت زمان متفاوت است. در این حالت، محیط دیگر ایستا نیست. فرض کنید عامل تحویل 1 یک مورد را برای تحویل در حالت K برداشته و توانسته است پاداشی دریافت کند، چه چیزی مانع از این می‌شود که عامل تحویل 2 آن مورد را در حالت دیگری در طول یک قسمت متفاوت بردارد؟ باعث می‌شود هر بار محیط تغییر کند.

علاوه بر این، تنظیمات متعددی وجود دارد که رویکردها متفاوت خواهند بود، برای مثال در یک تنظیم رقابتی، یک عامل ممکن است سعی کند با پیش‌بینی حرکات حریفان، آنها را فریب دهد، برخلاف یک تنظیم تعاونی، که در آن عوامل با هم کار می‌کنند تا یک پاداش مشترک را به حداکثر برسانند. این پیچیدگی به این معنی است که سیستم‌های چندعاملی در مقایسه با RL تک‌عاملی به استراتژی‌های پیشرفته‌تری نیاز دارند. این ما را به سوال بعدی می‌رساند: چگونه چندین عامل با هم یاد می‌گیرند؟

رویکردهای مختلفی برای یادگیری چندعاملی وجود دارد: می‌توانیم به یک عامل اجازه دهیم برای همه تصمیم بگیرد و این عامل نقش یک هماهنگ‌کننده را بر عهده می‌گیرد و وظایف را به سایر عوامل واگذار می‌کند، این به عنوان یادگیری متمرکز شناخته می‌شود. از طرف دیگر، می‌توانیم به هر عامل اجازه دهیم به طور مستقل یاد بگیرد و عمل کند و از مشاهده اقدامات یکدیگر یاد بگیرد و این به عنوان یادگیری غیرمتمرکز شناخته می‌شود، یا از آموزش متمرکز با اجرای غیرمتمرکز استفاده کنیم، رویکردی که در آن عوامل در طول آموزش اطلاعات جهانی دریافت می‌کنند اما هنگام استقرار به طور مستقل عمل می‌کنند.

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

بعدش چی؟

اکنون که اصول RL و سیستم‌های چندعاملی را به شما معرفی کردم، باید عمیق‌تر به این موضوع بپردازیم که الگوریتم‌های MARL چه هستند و چگونه با هم تفاوت دارند. در قسمت 2 این مجموعه وبلاگ، عناصر یادگیری Q مستقل برای MARL را در کنار رویکردهای مبتنی بر تیم بررسی خواهیم کرد. با ما همراه باشید!