Phase 09: Reinforcement Learning

RL چند عامل

یک عامل RL فرض می کند که محیط ثابت است. دو عامل یادگیری را در یک جهان قرار دهید و این فرضیه شکسته می شود: هر عامل بخشی از محیط دیگری است و هر دو در حال تغییر هستند. RL چند عامل مجموعه ای از ترفند ها برای تبدیل یادگیری به هم می باشد زمانی که فرضیه مارکوف دیگر برقرار نیست.

Type: Build

Languages: Python

Prerequisites: Phase 9 · 04 (Q-learning), Phase 9 · 06 (REINFORCE), Phase 9 · 07 (Actor-Critic)

Time: ~45 minutes

مشکل

یک ربات که می آموزد که در یک اتاق حرکت کند مشکل یک عامل RL است. یک تیم فوتبال نیست. مخالفان آلفا استار vs استار کرافت نیست. یک بازار از نمایندگان داوطلبی نیست. دو ماشین مذاکره یک توقف چهارراه نیست. بسیاری از مشکلات دنیای واقعی نیست.

در هر محیط چند عامل، از دیدگاه هر عامل، سایر عوامل * بخشی از محیط هستند. وقتی که آنها یاد می گیرند و رفتار خود را تغییر می دهند، محیط غیر ثابت می شود. ملک مارکوف "دولت بعدی فقط به وضعیت فعلی و عمل من بستگی دارد" نقض می شود زیرا دولت بعدی نیز به آنچه عوامل دیگر انتخاب کرده اند بستگی دارد و سیاست های آنها هدف های متحرک هستند.

این شکستن مدارک تراکنش جدول (ضمان Q-learning فرض می کند یک محیط ثابت است). این شکستن ساده عمیق RL: عوامل به دنبال یکدیگر در حلقه ها، هرگز به یک سیاست پایدار تراکنش. شما نیاز به تکنیک های چند عامل خاص: آموزش متمرکز / اجرای غیرمتمرکز، خط های اصلی معکوس، لیگ بازی، خود بازی.

برنامه های کاربردی 2026: سوره های ربات، مسیر ترافیک، ناوگان های اتوماتیک خودرو، شبیه سازهای بازار، سیستم های LLM چند عامل (فاز 16) و هر بازی با بیش از یک بازیکن هوشمند.

مفهوم

!Four MARL regimes: indep, centralized critic, self-play, league

Formalism: Markov Game.یک عمومی سازی از MDP: دولت ها S، یک اقدام مشترکa = (a_1, …, a_n)، انتقالP(s' | s, a)، و پاداش هر مامورR_i(s, a, s'). هر مامورiبه حداکثر رساندن بازده خودش در چارچوب سیاست خودشπ_iاگه پاداش ها همديگه باشه،fully cooperativeاگه صفر جمع بشه، اونمadversarialاگه مخلوط باشه، درست ميشهgeneral-sum. .

Core challenges:

  • Non-stationarity. P(s' | s, a_i)از مامورiنظر شما بستگی دارهπ_{-i}، که داره عوض ميشه
  • Credit assignment.با پاداش مشترک، کدام عامل باعثش شد؟
  • Exploration coordination.ماموران باید استراتژی های مکمل را کشف کنند نه به طور فرعی در مورد یک وضعیت مشابه.
  • Scalability.فضای عمل مشترک به طور نمایی در n. .
  • Partial observability.هر عامل فقط مشاهدات خودش رو می بیند؛ وضعیت جهانی پنهان شده

Four dominant regimes:

1. Independent Q-learning / independent PPO (IQL, IPPO).هر عامل Q یا سیاست خود را یاد می گیرد و دیگران را به عنوان بخشی از محیط می شناسد. ساده است، گاهی کار می کند (به ویژه با تکرار تجربه به عنوان یک ترفند مدل سازی عامل نرم کننده عمل می کند). کنورژن نظری: هیچ. در عمل: برای وظایف بسته بندی شل، خوب برای کارهای بسته بندی بد است.

2. Centralized training, decentralized execution (CTDE).رایج ترین پارادایم مدرن هر عامل دارای سیاست خودش استπ_iکه شرایط مشاهده محلیo_i اجرای استاندارد غیرمتمرکز در زمان استفاده. در طول تدريب یک منتقد متمرکز Q(s, a_1, …, a_n)شرایط وضعیت جهانی کامل و اقدامات مشترک.

  • MADDPG(لو و همکاران 2017): DDPG با یک منتقد متمرکز در هر نماینده.
  • COMA(Foerster et al. 2017): اصل اصل ضدفی بپرسید "اگر اقدام می کردم پاداش من چه خواهد بود a'در عوض؟" سهم من را جدا می کند.
  • MAPPO-IPPOبا منتقد مشترک (Yu et al. 2022): PPO با یک عملکرد ارزش متمرکز. در سال 2026 برای همکاری MARL غالب است.
  • QMIX(Rashid و همکاران 2018): تجزیه ارزش Q_tot(s, a) = f(Q_1(s, a_1), …, Q_n(s, a_n))با مخلوط کردن یکسره.

3. Self-play.دو نسخه از همان عامل با یکدیگر بازی می کنند. سیاست مخالف است سیاست من از یک عکس گذشته. الفاگو / الفا زرو / MuZero. OpenAI پنج. بهترین کار برای بازی های صفر جمع است؛ سیگنال آموزش همتقارن است.

4. League play.گسترش خود بازی به محیط های عمومی / خصومت: نگه داشتن جمعیت از سیاست های گذشته و فعلی، نمونه یک مخالف از لیگ، آموزش در برابر آنها. اضافه استفاده کنندگان (تخصص در شکست بهترین فعلی) و استحصال کنندگان اصلی (تخصص در شکست استحصال کنندگان). AlphaStar (StarCraft II). مورد نیاز زمانی که بازی اجازه می دهد چرخه استراتژی "روک کاغذ-کاسیور".

Communication.اجازه بدين که ماموران پيام هاي آموخته رو بفرستندm_iFoerster et al. (2016) نشان داد که ارتباطات بین عوامل قابل تفاوتی می تواند از پایان به آخر آموزش داده شود. سیستم های چند عامل مبتنی بر LLM امروز (فاز 16) اساسا به زبان طبیعی ارتباط برقرار می کنند.

آن را بسازید

این درس از یک 6 × 6 GridWorld با دو عامل همکاری استفاده می کند. آنها از گوشه های مخالف شروع می کنند و باید به یک هدف مشترک برسند. پاداش مشترک:-1در هر مرحله که هر دو مامور هنوز در حال حرکت هستند+10وقتي هر دو نفر به اينجا رسيدنcode/main.py. .

مرحله ی اول: محیط چند عامل

pythonclass CoopGridWorld:
    def __init__(self):
        self.size = 6
        self.goal = (5, 5)

    def reset(self):
        return ((0, 0), (5, 0))  # two agents

    def step(self, state, actions):
        a1, a2 = state
        new1 = move(a1, actions[0])
        new2 = move(a2, actions[1])
        done = (new1 == self.goal) and (new2 == self.goal)
        reward = 10.0 if done else -1.0
        return (new1, new2), reward, done

فضای عمل مشترک|A|² = 16دولت جهانی دو موقعیت است.

مرحله دوم: یادگیری مستقل Q

هر عامل جدول Q خود را با کلید مشترک اجرا می کند. در هر مرحله: هر دو عمل های حریصی را انتخاب می کنند، انتقال مشترک را جمع آوری می کنند، هر یک از آنها Q خود را با پاداش مشترک به روز می کنند.

pythondef independent_q(env, episodes, alpha, gamma, epsilon):
    Q1, Q2 = defaultdict(default_q), defaultdict(default_q)
    for _ in range(episodes):
        s = env.reset()
        while not done:
            a1 = epsilon_greedy(Q1, s, epsilon)
            a2 = epsilon_greedy(Q2, s, epsilon)
            s_next, r, done = env.step(s, (a1, a2))
            target1 = r + gamma * max(Q1[s_next].values())
            target2 = r + gamma * max(Q2[s_next].values())
            Q1[s][a1] += alpha * (target1 - Q1[s][a1])
            Q2[s][a2] += alpha * (target2 - Q2[s][a2])
            s = s_next

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

مرحله 3: Q متمرکز با بروزرسانی ارزش تجزیه شده

از یک Q در مقابل اقدامات مشترک استفاده کنید Q(s, a_1, a_2). از پاداش مشترک به روز رسانی کنید . در اجرای توسط کنار گذاشتن:π_i(s) = argmax_{a_i} max_{a_{-i}} Q(s, a_1, a_2). تجارت فضاهای مشترک اکشن برای یک دیدگاه جهانی صحيح

مرحله 4: بازی ساده (دو عامل مخالف)

همون مامور، دو نقش مامور قطار A با مامور BKقسمت ها، وزن هاي A رو به B نقل ميکنيم آموزش همتايي، پيشرفت ثابت

دام ها

  • Non-stationary replay.تجربه بازي با عوامل مستقل بدتر از واحد است چون انتقال های قدیمی توسط مخالفان قدیمی تولید شده است.
  • Credit assignment ambiguity.پاداش مشترک پس از یک قسمت طولانی؛ هیچ راهی روشن برای گفتن اینکه کدام عامل کمک کرده است.
  • Policy drift / chasing.بهترین پاسخ هر عامل با بروزرسانی هر دو تغییر می کند.
  • Reward hacking via coordination.ماموران تلاش می کنند که کار های هماهنگ ای که طراح پیش بینی نکرده است انجام دهند. ماموران مزاد به صفر پیشنهاد می کنند. درست کردن: طراحی دقیق پاداش، محدودیت های رفتاری.
  • Exploration redundancy.هر دو مامور هم به دنبال جفتي عمل ايستاده اند
  • League cycles.بازی خالص خود می تواند در چرخه تسلط گیر شود.
  • Sample explosion. nعوامل × فضای دولت × اقدامات مشترک. نزدیک با تقریب عملکرد؛ فضاهای عمل فاکتور شده (یک سر تولید سیاست در هر عامل).

ازش استفاده کن

نقشه برنامه های کاربردی MARL 2026:

DomainMethodNotes
Cooperative navigation / manipulationMAPPO / QMIXCTDE; shared critic + decentralized actors.
Two-player games (chess, Go, poker)Self-play with MCTS (AlphaZero)Zero-sum; symmetric training.
Complex multiplayer (Dota, StarCraft)League play + imitation pretrainingOpenAI Five, AlphaStar.
Autonomous-vehicle fleetsCTDE MAPPO / PPO with attentionPartial obs; variable team sizes.
Auction marketsGame-theoretic equilibrium + RLMean-field RL when n → ∞.
LLM multi-agent systems (Phase 16)Natural-language comm + role conditioningRL loop at the agent-planning layer.

در سال 2026، بزرگترین منطقه رشد MARL مبتنی بر LLM است: سوره های عامل مدل زبان مذاکره، بحث، ساخت نرم افزار. RL به عنوان بهینه سازی ترجیح در سطح مسیر محصولات، نه سطح توکن (فاز 16 · 03).

-باده

پس ازoutputs/skill-marl-architect.md:

markdown---
name: marl-architect
description: Pick the right multi-agent RL regime (IPPO, CTDE, self-play, league) for a given task.
version: 1.0.0
phase: 9
lesson: 10
tags: [rl, multi-agent, marl, self-play]
---

Given a task with `n` agents, output:

1. Regime classification. Cooperative / adversarial / general-sum. Justify.
2. Algorithm. IPPO / MAPPO / QMIX / self-play / league. Reason tied to coupling tightness and reward structure.
3. Information access. Centralized training (what global info goes to the critic)? Decentralized execution?
4. Credit assignment. Counterfactual baseline, value decomposition, or reward shaping.
5. Exploration plan. Per-agent entropy, population-based training, or league.

Refuse independent Q-learning on tightly-coupled cooperative tasks. Refuse to recommend self-play for general-sum with cycle risks. Flag any MARL pipeline without a fixed-opponent eval (cherry-picked self-play numbers are common).

تمرینات

  1. Easy.آموزش آموزش Q مستقل در همکاری 2 عامل GridWorld. چند قسمت تا متوسط بازگشت > 0؟ منحنی یادگیری مشترک را نقشه بزنید.
  2. Medium.یک کار "تنسانس" اضافه کنید: هدف تنها زمانی به دست می آید که هر دو عامل در یک نوبت بر روی آن قدم بزنند. آیا Q مستقل هنوز هم به هم نزدیک است؟ چه شکافی؟
  3. Hard.یک منتقد متمرکز برای آموزش سبک MAPPO را پیاده سازی کنید و سرعت تقلب را با PPO مستقل در کار هماهنگی مقایسه کنید.

اصطلاحات کلیدی

TermWhat people sayWhat it actually means
Markov game"Multi-agent MDP"(S, A_1, …, A_n, P, R_1, …, R_n); each agent has its own reward.
CTDE"Centralized training, decentralized execution"Joint critic at training time; each agent's policy uses only local obs.
IPPO"Independent PPO"Each agent runs PPO separately. Simple baseline; often underrated.
MAPPO"Multi-agent PPO"PPO with a centralized value function conditioned on global state.
QMIX"Monotonic value decomposition"Q_tot = f_monotone(Q_1, …, Q_n) allows decentralized argmax.
COMA"Counterfactual multi-agent"Advantage = my Q minus expected Q marginalizing over my action.
Self-play"Agent vs past self"Single agent, two roles; standard for zero-sum games.
League play"Population training"Cache past policies, sample opponents from the pool; handles strategy cycles.

خواندن بیشتر

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.