چیتشیت
یادگیری تقویتی چندایجنت و انتقال از شبیهساز به واقعیت (Sim-to-Real)
Multi-Agent RL and Sim-to-Real
CTDE، تجزیهی مقدار، خودبازی، تصادفیسازی دامنه و قالبهای اکشن VLA. فرمولها، ارقام و راهحلها.
فهرست مطالب
ایدههای اصلی و فرمولها
مفهومها- بازی مارکوف
- $(S, A_1, \ldots, A_n, P, R_1, \ldots, R_n)$. هر ایجنت پاداش اختصاصی خود را دارد.
- انواع پاداش
- یکسان یعنی مشارکتی، مجموعصفر یعنی رقابتی، مختلط یعنی مجموععمومی.
- نامانایی
- $P(s' \mid s, a_i)$ به $\pi_{-i}$ وابسته است، و $\pi_{-i}$ تغییر میکند.
- CTDE
- ناقد $Q(s, a_1, \ldots, a_n)$ هنگام آموزش. سیاست $\pi_i$ فقط $o_i$ را میخواند.
- QMIX
- $Q_{\text{tot}} = f(Q_1, \ldots, Q_n)$ با شرط $\partial f / \partial Q_i \ge 0$.
- COMA
- مزیت برابر است با Q من منهای امید ریاضی Q روی اکشنهای خودم.
- شکاف واقعیت
- تغییر توزیع فیزیکی یا حسی میان شبیهساز و دنیای واقعی.
- بودجهی کنترل
- یک حلقهی 30 Hz برای هر اکشن 33ms زمان میدهد.
مقایسهی MADDPG، QMIX و MAPPO
مقایسه| عامل | MADDPG | QMIX | MAPPO |
|---|---|---|---|
| سال | 2017 | 2018 | 2022 |
| ایده | ناقد هر ایجنت تمام مشاهدات و اکشنها را میبیند | ترکیب یکنوای Qهای هر ایجنت | الگوریتم PPO با تابع ارزش متمرکز |
| محیط کاربری | مشارکتی، رقابتی، مختلط | فقط مشارکتی | مشارکتی |
| بستر آزمون | Particle World | SMAC | محیطهای Particle-world، SMAC، Football، Hanabi و MPE |
| یادگیری | برونسیاست، DDPG | تجزیهی مقدار | همسیاست، PPO |
| ویژگی کلیدی | رشد ناقد با N، مناسب تا حدود 10 ایجنت | قید یکنوایی سختگیرانه است | پایدار، با کمترین نیاز به تنظیم هایپرپارامتر |
| وضعیت فعلی | بنیانگذار رویکرد CTDE | دستهی برتر در SMAC | خط مبنای پیشفرض در سناریوهای مشارکتی |
CTDE: آموزش متمرکز، اجرای نامتمرکز
معماریدستورالعمل Sim-to-Real (ربات چهارپا)
گامبهگام- شبیهسازیشبیهسازی فوقموازی با تصادفیسازی گرانش، اصطکاک، گینهای موتور و بار مفید.
- معلمآموزش با اطلاعات ممتاز، نقشهی ناهمواری و سرعت واقعی بدنه.
- دانشآموزتقطیر از مدل معلم تنها با اتکا به حس عمقی.
- انطباقانطباق اختیاری مشاهدات با خودکدگذار روی دادههای IMU واقعی.
- استقراراجرای زیروشات روی بیش از 10 محیط مختلف.
- طرح پشتیبانچند دقیقه فاینتیونینگ روی ربات واقعی با PPO مقید به ایمنی.
Q مستقل در برابر Q مشترک
کدpython
a1 = epsilon_greedy(Q1, s, rng, epsilon) # انتخاب مستقل توسط هر ایجنت
a2 = epsilon_greedy(Q2, s, rng, epsilon)
s_next, r, done = step(s, (a1, a2)) # گام مشترک، پاداش اشتراکی
target1 = r + gamma * max(Q1[s_next].values())
Q1[s][a1] += alpha * (target1 - Q1[s][a1]) # جدول Q اختصاصی
reward = 10.0 if done else -1.0 # +10 در صورت رسیدن هر دو
joint_actions = [(a, b) for a in ACTIONS for b in ACTIONS] # 16 جفت
ja = max(joint_actions, key=lambda a: Q[s][a]) # one greedy joint pick
تصادفیسازی دامنه در کد
کدpython
slip_ep = rng.uniform(slip_low, slip_high) # شبیهساز جدید در هر اپیزود
s_next, r, done = step(s, a, slip_ep, rng) # لغزش در جهت عمود جابهجا میکند
Q_fixed = train_fixed(0.0, rng=rng) # سیاست A، بدون DR
Q_dr = train_dr(0.0, 0.3, rng=rng) # سیاست B، همراه با DR
for slip in (0.0, 0.1, 0.2, 0.3, 0.5, 0.7): # مقادیر 0.5 و 0.7 خارج از توزیع (OOD) هستند
r_fixed = evaluate(Q_fixed, slip)
r_dr = evaluate(Q_dr, slip)
مقایسهی چهار مدل VLA در کنار هم
مقایسه| عامل | RT-2 | OpenVLA | π0 | GR00T N1 |
|---|---|---|---|---|
| قالب اکشن | توکنهای متنی، 256 بازه | توکنهای 256 بازهای | اکشناکسپرت تطبیق جریان | هد اکشن سیستم 1 |
| بکبون | مدل چندحالتهی PaLM-X | مدل Llama 7B، همراه با DINOv2 و SigLIP | ترکیب VLM به همراه یک ترنسفورمر اکشن کوچک | مدل بزرگ VLM به همراه یک هد اکشن کوچک |
| سرعت | 3-5 Hz | 4-5 Hz روی یک A100 | حدود 5 گام حذف نویز، تقریباً 50 Hz | سیستم 1 در 50-100 Hz، سیستم 2 حدود 1 Hz |
| جزئیات | 10 توکن در هر گام برای 10 درجه آزادی | فاینتیونینگ با LoRA برای رباتهای جدید | توالی اکشن 50 گامی | فرمانهای مفصلی، بیش از 30 درجه آزادی |
| داده | وب بههمراه رباتیک، نسبت تقریباً 1:1 | مجموعه دادهی Open X-Embodiment، نسبت وب به رباتیک حدود 0.5:1 | مجموعه دادهی Open X-Embodiment، با نسبت مشابه | دادههای انتقال از شبیهساز به واقعیت برگرفته از Omniverse |
وظایف پیادهسازیشده در کد
کار و کد| وظیفه | کد |
|---|---|
| Q مستقل برای دو ایجنت | independent_q(episodes=1500) |
| یک تابع Q روی 16 اکشن مشترک | joint_q_learning(episodes=1500) |
| آموزش با تصادفیسازی دامنه (DR) | train_dr(0.0, 0.3, rng=rng) |
| ارزیابی زیروشات در یک سطح لغزش | evaluate(Q_dr, slip) |
| بنچمارک یک الگوی CTDE | bench(label, run_mappo_style) |
| اجرای دموی الگوی MARL | python3 code/main.py |
| تبدیل اکشن به 256 بازه | discretize(action, bins=256) |
| فشردهسازی به شیوهی FAST | fast_compress(trajectory, keep_coeff=4) |
پیشفرضهای کد درس
پیشفرضها| تنظیم | پیشفرض | یادداشت |
|---|---|---|
alpha | 0.1 | کدهای نمونهی MARL و DR |
gamma | 0.95 | کدهای نمونهی MARL و DR |
`epsilon`, `eps` | 0.15 | اکتشاف ε-greedy |
MARL `episodes` | 1500 | مقدار 3000 در کد نمونهی DR |
DR slip range | Uniform[0.0, 0.3] | سیاست B |
max_steps | 50 | دموی الگوی CTDE، تعداد 500 آزمایش |
bins | 256 | عرض هر بازه 2/255 |
keep_coeff | 4 | مؤلفههای DCT فرکانسپایین در هر بُعد |
عیبیابی
عیبیابیایجنتها مدام در تعقیب هم هستند
- علت
- پاسخ بهینهی هر کدام تغییر میکند
- راهحل
- ناقد متمرکز، نرخ یادگیری پایین، فریز کردن یکی از مدلها
بازپخش اوضاع را بدتر میکند
- علت
- وجود حریفهای منسوخ در دادههای قدیمی
- راهحل
- برچسبگذاری مجدد، یا وزندهی بر اساس تازگی
سهم پاداش اشتراکی مشخص نیست
- علت
- تخصیص اعتبار
- راهحل
- خط مبنای COMA یا شکلدهی پاداش برای هر ایجنت
خودبازی در یک چرخه گیر کرده است
- علت
- چرخهی تسلط متقابل
- راهحل
- بازی لیگ همراه با حریفهای متنوع
سیاست DR بیش از حد محتاط است
- علت
- تصادفیسازی بیش از اندازه
- راهحل
- انطباق با توزیع واقعی مورد انتظار
تصادفیسازی دامنه کمکی نمیکند
- علت
- پارامتر نامناسبی تصادفیسازی شده است
- راهحل
- ابتدا رفتارسنجی دقیق ربات واقعی
دانشآموز به سطح معلم نمیرسد
- علت
- نشت دادهی اطلاعات ممتاز
- راهحل
- حفظ امکان بازتولید عملکرد معلم از روی مشاهدات
سیاست باعث آسیب به سختافزار میشود
- علت
- نبود محدودهی ایمنی مشخص
- راهحل
- اعمال محدودیتهای نرخ تغییر، گشتاور و مفاصل در لایهی بیرونی
مخففها
اصطلاحها- CTDE
- آموزش متمرکز، اجرای نامتمرکز.
- IPPO
- الگوریتم PPO مستقل؛ هر ایجنت PPO را بهتنهایی اجرا میکند.
- COMA
- چندایجنت واقعگریز؛ سهم اختصاصی من را جدا میکند.
- DR
- تصادفیسازی دامنه؛ پارامترهای تصادفی شبیهساز هنگام آموزش.
- SI
- شناسایی سیستم؛ سنجش ربات واقعی و انطباق شبیهساز با آن.
- ADR
- تصادفیسازی خودکار دامنه؛ گسترش دامنهی DR همگام با بهبود سیاست.
- VLA
- مدلهای بینایی-زبان-اکشن؛ ورودی تصویر و دستور، خروجی اکشنها.
- FAST
- توکنایزر توالی اکشن در حوزهی فرکانس؛ تبدیل DCT و سپس کوانتایز.
قواعد سرانگشتی
نکتهها- برای MARL مشارکتی، کار را با MAPPO شروع کن.
- از Q مستقل فقط برای وظایف با اتصال سست استفاده کن.
- برای بازیهای مجموعصفر از خودبازی، و برای چرخههای استراتژیک از بازی لیگ استفاده کن.
- جریان مشاهدات و اکشنهای تمام ایجنتها را لاگ کن.
- پیش از استقرار، مدل را روی نسخهی شبیهسازی نگهداشتهشده آزمایش کن.
- دامنهی DR با بیش از 3 برابر نوسانات واقعی اندازهگیریشده را مشکوک تلقی کن.
- شکاف دامنهی VLA را با استفاده از LoRA روی 100 تا 1000 دمو از وظیفه برطرف کن.
پرسشها
پرسش و پاسخ- Q مستقل کجا شکست میخورد؟
- در وظایف با اتصال محکم، جایی که یک ایجنت باید منتظر بماند.
- چرا QMIX اجازهی تعیین argmax محلی را میدهد؟
- چون میکسر نسبت به Q هر ایجنت یکنواست.
- پیامد آموزش با دامنهی محدود چیست؟
- سطح لغزش 0.0 تنها بهمحض افزایش لغزش واقعی بالاتر از 0 بهشدت افت میکند.
- چرا یک مدل VLA را فاینتیونینگ مشترک میکنیم؟
- مدلهای منحصر به رباتیک در دستورهای جدید ناموفق ظاهر میشوند.
- دلیل تفکیک معماری در GR00T چیست؟
- برنامهریزی کند نباید مانع از کنترل پرسرعت شود.