چیت‌شیت

یادگیری تقویتی چندایجنت و انتقال از شبیه‌ساز به واقعیت (Sim-to-Real)

Multi-Agent RL and Sim-to-Real

‏CTDE، تجزیه‌ی مقدار، خودبازی، تصادفی‌سازی دامنه و قالب‌های اکشن VLA. فرمول‌ها، ارقام و راه‌حل‌ها.

  • ۱۳ بخش
  • ۴ درس مرتبط
  • کد و دستورها عیناً از دوره‌ی اصلی
فهرست مطالب
  1. ایده‌های اصلی و فرمول‌ها
  2. مقایسه‌ی MADDPG، QMIX و MAPPO
  3. ‏CTDE: آموزش متمرکز، اجرای نامتمرکز
  4. دستورالعمل Sim-to-Real (ربات چهارپا)
  5. ‏Q مستقل در برابر Q مشترک
  6. تصادفی‌سازی دامنه در کد
  7. مقایسه‌ی چهار مدل VLA در کنار هم
  8. وظایف پیاده‌سازی‌شده در کد
  9. پیش‌فرض‌های کد درس
  10. عیب‌یابی
  11. مخفف‌ها
  12. قواعد سرانگشتی
  13. پرسش‌ها

ایده‌های اصلی و فرمول‌ها

مفهوم‌ها
بازی مارکوف
$(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

مقایسه
عاملMADDPGQMIXMAPPO
سال201720182022
ایدهناقد هر ایجنت تمام مشاهدات و اکشن‌ها را می‌بیندترکیب یکنوای Qهای هر ایجنتالگوریتم PPO با تابع ارزش متمرکز
محیط کاربریمشارکتی، رقابتی، مختلطفقط مشارکتیمشارکتی
بستر آزمونParticle WorldSMACمحیط‌های Particle-world، SMAC، Football، Hanabi و MPE
یادگیریبرون‌سیاست، DDPGتجزیه‌ی مقدارهم‌سیاست، PPO
ویژگی کلیدیرشد ناقد با N، مناسب تا حدود 10 ایجنتقید یکنوایی سخت‌گیرانه استپایدار، با کمترین نیاز به تنظیم هایپرپارامتر
وضعیت فعلیبنیان‌گذار رویکرد CTDEدسته‌ی برتر در SMACخط مبنای پیش‌فرض در سناریوهای مشارکتی

‏CTDE: آموزش متمرکز، اجرای نامتمرکز

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

دستورالعمل Sim-to-Real (ربات چهارپا)

گام‌به‌گام
  1. شبیه‌سازیشبیه‌سازی فوق‌موازی با تصادفی‌سازی گرانش، اصطکاک، گین‌های موتور و بار مفید.
  2. معلمآموزش با اطلاعات ممتاز، نقشه‌ی ناهمواری و سرعت واقعی بدنه.
  3. دانش‌آموزتقطیر از مدل معلم تنها با اتکا به حس عمقی.
  4. انطباقانطباق اختیاری مشاهدات با خودکدگذار روی داده‌های IMU واقعی.
  5. استقراراجرای زیروشات روی بیش از 10 محیط مختلف.
  6. طرح پشتیبانچند دقیقه فاین‌تیونینگ روی ربات واقعی با 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-2OpenVLAπ0GR00T N1
قالب اکشنتوکن‌های متنی، 256 بازهتوکن‌های 256 بازه‌ایاکشن‌اکسپرت تطبیق جریانهد اکشن سیستم 1
بک‌بونمدل چندحالته‌ی PaLM-Xمدل Llama 7B، همراه با DINOv2 و SigLIPترکیب VLM به همراه یک ترنسفورمر اکشن کوچکمدل بزرگ VLM به همراه یک هد اکشن کوچک
سرعت3-5 Hz4-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)
بنچمارک یک الگوی CTDEbench(label, run_mappo_style)
اجرای دموی الگوی MARLpython3 code/main.py
تبدیل اکشن به 256 بازهdiscretize(action, bins=256)
فشرده‌سازی به شیوه‌ی FASTfast_compress(trajectory, keep_coeff=4)

پیش‌فرض‌های کد درس

پیش‌فرض‌ها
تنظیمپیش‌فرضیادداشت
alpha0.1کدهای نمونه‌ی MARL و DR
gamma0.95کدهای نمونه‌ی MARL و DR
`epsilon`, `eps`0.15اکتشاف ε-greedy
MARL `episodes`1500مقدار 3000 در کد نمونه‌ی DR
DR slip rangeUniform[0.0, 0.3]سیاست B
max_steps50دموی الگوی CTDE، تعداد 500 آزمایش
bins256عرض هر بازه 2/255
keep_coeff4مؤلفه‌های 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 چیست؟
برنامه‌ریزی کند نباید مانع از کنترل پرسرعت شود.