وقتی policy اشتباه میکند کنترل را در دست بگیرید، سپس همان اصلاح را به آن آموزش دهید.
policyای که فقط با Behavior Cloning آموزش دیده، تنها حالتهایی را میشناسد که در دموهای شما دیده شدهاند. DAgger این شکاف را با دادهای از حالتهایی پر میکند که خودِ policy به آنها میرسد. AY-Robots کل این حلقه را روی یک SO-100 اجرا میکند: یک checkpoint را برانید، در میانهٔ اجرا کنترل را در دست بگیرید، اپیزودهای اصلاحشده را نگه دارید، ترکیب را خودتان بچینید و آموزش را از همان checkpointای که راندهاید ادامه دهید.
- HG-DAgger، انسانمحور
- SO-100 / SO-101
- ACT, SmolVLA, Pi0, GR00T N1.5 / N1.7
- نرخ مداخله در هر دور
چرا policyای آموزشدیده کاری میکند که هرگز دموی آن داده نشده است
Behavior Cloning کنترل را مثل یک یادگیری باناظر معمولی میبیند: مشاهده وارد میشود، هدف مفصل (joint) بیرون میآید، و این تابع روی فریمهایی برازش شده که یک انسان ضبط کرده است. این رویکرد فقط تا وقتی درست است که ربات در همان حالتهایی بماند که آن انسان از آنها عبور کرده، و ربات در آنها نمیماند. گریپری که چهل میلیثانیه زودتر بسته شود، مکعب را دو میلیمتر از موقعیت نشاندادهشده جابهجا میکند. مشاهدهٔ بعدی چیزی است که در مجموعهٔ آموزشی وجود ندارد، پس اکشن در آن نقطه یک برونیابی است، و حالت بعد از آن حتی دورتر میافتد. توزیع آموزشی و توزیعی که policy یادگرفتهشده واقعاً تولید میکند دو چیز متفاوتاند، و دومی هرچه اپیزود جلوتر میرود بیشتر از اولی فاصله میگیرد.
Ross، Gordon و Bagnell دقیقاً همین شکست کاهش (reduction) را در سال ۲۰۱۱ توصیف و اندازهگیری کردند: یک طبقهبند که زیر توزیع خبره با احتمال e اشتباه میکند، میتواند روی یک افق T گامی، زیر توزیعی که خودش تولید میکند، در حدود T به توان دو ضربدر e اشتباه مرتکب شود، چون یک اشتباه مشاهدههایی میسازد که خبره هرگز تولید نکرده و خطاها روی هم انباشته میشوند. راهحل آنها همین الگوریتمی است که موضوع این صفحه است: policy فعلی را اجرا کنید، برای حالتهایی که سر میزند برچسبهای خبره جمع کنید، آنها را با هر چه تا کنون جمع شده تجمیع کنید، دوباره آموزش دهید، تکرار کنید. دموی بیشتر از همان نوع کمکی نمیکند، چون دوباره از همان توزیع نمونهبرداری میشود. برچسب روی حالتهایی که policy به آنها میرسد کمک میکند. نسخهای که اینجا پیاده شده انسانمحور است (HG-DAgger، Kelly و همکاران): policy کنترل را نگه میدارد تا وقتی یک انسان تشخیص دهد که کار اشتباه پیش میرود و کنترل را در دست بگیرد؛ به این ترتیب اصلاحها فقط جایی تولید میشوند که لازم است، و از بازو هرگز خواسته نمیشود به حالتی برود که اپراتور اجازه نمیدهد.
- Behavior Cloning فقط روی توزیع حالتهایی معتبر است که با آنها آموزش دیده است.
- این شکست خودتقویتشونده است: یک انحراف کوچک یک حالت ناآشنا میسازد، و آن حالت انحرافی بزرگتر میسازد.
- درمان آن دموی بیشتر نیست، بلکه برچسب روی حالتهایی است که خود policy به آنها میرسد.
- انسانمحور یعنی اپراتور تصمیم میگیرد چه زمانی مداخله کند، نه یک امتیاز خودمختاری.
چرا خطا انباشته میشود
افق را بکشید. زیر Behavior Cloning، هزینهٔ اضافی مورد انتظار تقریباً با مجذور تعداد گامها رشد میکند، چون هر اشتباه حالتهایی میسازد که دموها هرگز پوشش ندادهاند؛ یک حلقهٔ تجمیع این رشد را نزدیک به خطی نگه میدارد (Ross et al.، ۲۰۱۱).
منحنیهای نمایشی برگرفته از کرانهای Ross et al. (۲۰۱۱)، نه اندازهگیری از ربات شما. نکتهٔ اصلی شکل منحنی است، نه عددها.
یک دور DAgger، شش گام
این همان حلقهای است که پلتفرم واقعاً اجرا میکند، نه یک نمودار شماتیک. هر گام زیر به یک کنترل در کاکپیت مربوط میشود.
قدم به قدم در حلقه
همان شش گام، یکییکی، همراه با آنچه در هر کدام روی بازو و در مجموعه داده اتفاق میافتد.
اجرای policy و ضبط آن
یک اجرای inference را روی یک checkpoint که خودتان آموزش دادهاید شروع کنید. این اجرا همان لحظه که در جریان است ضبط میشود، همراه با متن وظیفهٔ همان اجرا، تا فریمها بعداً بهعنوان داده آموزشی قابل استفاده باشند، نه فقط یک ویدیو که فقط میشود آن را تماشا کرد.
در دست گرفتن کنترل و اصلاح
همین که بازو کار اشتباهی انجام داد، دکمهٔ در دست گرفتن (Take over) را بزنید. runner متوقف میشود و بازو در اختیار شماست. با بازوی leader، ابتدا به وضعیت follower میرود و بعد کنترل را تحویل میدهد؛ با ورودی صفحهکلید یا اسلایدر، که در ابتدای اجرا انتخاب میشود، در دستگیری از همان لحظه دستی است. حرکت را اصلاح کنید، سپس کنترل را به policy برگردانید. فریمهای ضبطشده در طول در دستگیری بهطور خودکار بهعنوان مداخله علامت میخورند.
تریاژ اجرا
برای هر اجرا تصمیم بگیرید که چه بوده است: آن را بهعنوان اصلاح ثبت کنید، بهعنوان اجرای ارزیابی نگه دارید، یا کنار بگذارید. فریمهای ثابت اطراف جابهجایی کنترل در پوشهٔ raw میمانند و هرگز وارد مجموعه داده نمیشوند.
همگامسازی مجموعه دادهٔ اصلاحات
اصلاحات در یک مجموعه دادهٔ اصلاحی جداگانه برای هر policy جمع میشوند و از طریق همگامسازی خودکار ابری به bucket شما میروند. در این مرحله چیزی با چیز دیگری ادغام نمیشود؛ اصلاحات فقط یک مجموعه دادهٔ مستقل برای خودشان هستند.
ترکیب را خودتان بچینید
از ترکیب مجموعه داده (Compose dataset) برای ساختن مجموعهٔ آموزشی دور بعد استفاده کنید: مجموعه دادهٔ اصلی بهعلاوهٔ اصلاحات، با انتخاب صریح اپیزودها از هر منبع. نتیجه یک مجموعه دادهٔ معمولی است که مثل هر مجموعهٔ دیگر همگامسازی و آموزش داده میشود. چیزی پشت پرده با آن مخلوط نمیشود، و هیچ دادهٔ شبیهسازیای بهطور خودکار اضافه نمیشود.
ادامهٔ آموزش از checkpoint
مجموعه دادهٔ ترکیبشده را با ادامه از checkpoint آموزش دهید، نه با شروع از مدل پایه، تا دور جدید از همان policyای شروع شود که تازه راندهاید. دقیق بگوییم این دقیقاً چیست: فقط وزنها از آن checkpoint مقداردهی اولیه میشوند، این یک resume برای optimizer نیست.
چه چیزهایی را پلتفرم از دوش شما برمیدارد
هر مورد اینجا گامی از حلقه است که در غیر این صورت باید خودتان میساختید و نگه میداشتید.
در دستگیری بدون بازوی leader
در ابتدای اجرا ورودی صفحهکلید یا اسلایدر را انتخاب کنید تا بتوانید فقط با یک لپتاپ اصلاح کنید. حرکتهای کوچک صفحهکلید در سمت سرور به دو درجه در هر مفصل و چهار درجه در گریپر محدود میشوند؛ هدفهای اسلایدر مطلقاند و سرور در هر فراخوانی حداکثر شش درجه به سمت آنها حرکت میکند. این محدودیتها در سرور اعمال میشوند، نه در رابط کاربری، پس گیر کردن یک کلید نمیتواند بازو را پرت کند.
مستندات teleoperationمداخلهها بهازای هر فریم علامتگذاری میشوند
هر فریمی که وقتی بازو در دست شماست ضبط میشود، پرچم مداخله را با خود دارد، و ستون action وضعیت کامل فرماندادهشده را دربردارد. شما نیازی به نگهداشتن دستیِ یک ستون پرچم یا همترازی آن با اندیس فریمها ندارید.
قالب مجموعه دادهٔ LeRobotتریاژ: اصلاح، ارزیابی یا حذف
هر اجرا روی کارت ذخیره یک تصمیم میگیرد. اجراهای اصلاحی وارد دور بعدی آموزش میشوند، اجراهای ارزیابی بیرون از آموزش میمانند تا یک سنجش تمیز باقی بمانند، و اجراهای خراب بهجای اینکه بیسروصدا ترکیب را خراب کنند، کنار گذاشته میشوند.
Sessionها و اپیزودهاترکیب را صریح بچینید
مجموعهٔ آموزشی دور n را خودتان میچینید: مجموعه دادهٔ اصلی بهعلاوهٔ اصلاحات، با اپیزودهای انتخابشده از هر منبع. هیچ ترکیب خودکاری، هیچ دادهٔ شبیهسازی پنهانی، و نتیجهٔ ترکیبشده مثل هر مجموعه دادهٔ دیگر رفتار میکند.
مجموعههای دادهادامه از یک checkpoint
یک اجرای آموزش را بهجای مدل پایه به سمت checkpointی هدایت کنید که تازه راندهاید، تا هر دور از همانجا شروع شود که دور قبل تمام شده است. فقط وزنها مقداردهی اولیه میشوند؛ وضعیت optimizer بازیابی نمیشود، به همین دلیل بهتر است دور اول را یک آزمون امکانسنجی در نظر بگیرید.
آموزشاجارهٔ GPU به ازای هر دور
ACT و SmolVLA روی یک 4090، و Pi0 و GR00T N1.5 یا N1.7 روی یک A100 با ۸۰ گیگابایت. یک دور را شروع میکنید، pod بالا میآید، checkpointها در bucket شما فرود میآیند، و فقط بابت ساعتهایی که آن دور طول کشیده پرداخت میکنید.
قیمتگذاری GPUدورها را برنامهریزی کنید
نرخ مداخله معیار پیشرفت این حلقه است: فریمهای اصلاحشده تقسیم بر فریمهای اجرا. نقطهٔ شروع و میزان بهبود هر دور را تنظیم کنید و ببینید رسیدن به هدفتان چند دور طول میکشد.
| دور | نرخ مداخله | فریمهای اصلاحشده |
|---|---|---|
| 1 | 30.0 % | 900 |
| 2 | 22.5 % | 675 |
| 3 | 16.9 % | 506 |
| 4 | 12.7 % | 380 |
| 5 | 9.5 % | 285 |
| 6 | 7.1 % | 214 |
| Σ | 2 960 | |
این یک مدل است، نه یک پیشبینی. دورهای واقعی نامنظم پیش میروند، و دوری که نرخ را جابهجا نکند چیزی به شما نداده است؛ دقیقاً همین سیگنالی است که ارزش دیدن دارد.
ساختن حلقه بهدست خودتان در برابر اجرای آن اینجا
هیچکدام از اینها با دست غیرممکن نیست. سؤال این است چند شب به لولهکشی زیرساخت میرود بهجای اینکه صرف دورها شود، و یک ردیف هست که در آن انجامدادنش بهدست خودتان آشکارا پاسخ بهتر است.
| گام حلقه | راهاندازی با دست | روی AY-Robots |
|---|---|---|
| در دست گرفتن کنترل در میانهٔ اجرا | یک بازوی leader، یا کد خودتان روی باس سروو. در دستگیری با صفحهکلید و اسلایدر، از جمله محدودیتهای ایمن، چیزی است که خودتان مینویسید و بعد روی سختافزار واقعی دیباگ میکنید. | بازوی leader، صفحهکلید یا اسلایدر، که در شروع اجرا انتخاب میشود. محدودیتهای زاویه در سرور جای دارند. |
| علامتگذاری مداخلهها | شما ستون پرچم را اضافه میکنید، آن را با اندیس فریم همتراز نگه میدارید و هر بار قالب ضبط تغییر کرد دوباره بررسیاش میکنید. | هر فریمی که در طول یک در دستگیری ضبط میشود بهطور خودکار علامت میخورد، همراه با وضعیت فرماندادهشده در ستون action. |
| دستهبندی اجراها | قراردادهای پوشهای و اسکریپتهای shell. پیدا کردن و کنار گذاشتن فریمهای ثابت اطراف جابهجایی کنترل با خودتان است. | یک تصمیم برای هر اجرا روی کارت ذخیره. فریمهای جابهجایی کنترل در پوشهٔ raw میمانند. |
| ساختن مجموعه دادهٔ ترکیبی | اسکریپتهای merge برای هر نسخهٔ قالب. هماهنگ نگهداشتن اندیس اپیزودها، متادیتا و ارجاعهای ویدیو بخش خستهکنندهاش است. | ترکیب از دادههای اصلی بهعلاوهٔ اصلاحات، با انتخاب اپیزود از هر منبع؛ نتیجه یک مجموعه دادهٔ معمولی است. |
| شروع دور بعدی از آخرین policy | خودتان checkpoint را به trainer وصل میکنید، و اگر یک resume واقعی بخواهید میتوانید وضعیت optimizer را هم بازیابی کنید. | یک فیلد برای checkpoint پایه. فقط وزنها: از روی checkpoint مقداردهی اولیه میشود، یک resume برای optimizer نیست. |
| کنترل روی حلقهٔ آموزش | کامل. loss خودتان، زمانبندی خودتان، ablationهای خودتان، ابزارسازی خودتان، بدون هیچ پلتفرمی در میانه. اگر سؤال پژوهشی خودِ حلقهٔ آموزش است، آن را با دست انجام دهید. | یک مسیر ثابت با فهرستی معین از policyها و hyperparameterهایی که فرم در اختیار میگذارد، نه کد دلخواه. |
مقالههایی که این کار بر پایهٔ آنهاست
پیش از هر بحثی دربارهٔ این حلقه، اینها را بخوانید. هر لینک به صفحهٔ چکیده میرود، نه پشت یک paywall.
- A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning
Stephane Ross, Geoffrey J. Gordon, J. Andrew Bagnell · 2011 · AISTATS 2011 (PMLR 15)
مقالهٔ اصلی DAgger: مسئلهٔ خطای تراکمی را بیان میکند، کران T-به-توان-دو را برای رویکرد صرفاً باناظر میدهد، و پیشنهاد میکند داده از حالتهایی که خودِ یادگیرنده سر میزند تجمیع شود.
- HG-DAgger: Interactive Imitation Learning with Human Experts
Michael Kelly, Chelsea Sidrane, Katherine Driggs-Campbell, Mykel J. Kochenderfer · 2019 · arXiv:1810.02890, ICRA 2019
نسخهٔ انسانمحور: خبره تصمیم میگیرد چه زمانی کنترل را به دست بگیرد، بهجای اینکه دربارهٔ حالتهایی که policy انتخاب کرده از او پرسیده شود؛ همین حالتی است که این پلتفرم پیاده کرده است.
- EnsembleDAgger: A Bayesian Approach to Safe Imitation Learning
Kunal Menda, Katherine Driggs-Campbell, Mykel J. Kochenderfer · 2019 · arXiv:1807.08364, IROS 2019
راه دیگر برای کنترل مداخلهها: عدم توافق میان اعضای ensemble بهعنوان سیگنال اطمینان برای اینکه چه زمانی یادگیرنده میتواند تنها عمل کند. مقایسهٔ مفیدی در برابر واگذاشتن تصمیم به یک انسان.
- ThriftyDAgger: Budget-Aware Novelty and Risk Gating for Interactive Imitation Learning
Ryan Hoque, Ashwin Balakrishna, Ellen Novoseller, Albert Wilcox, Daniel S. Brown, Ken Goldberg · 2021 · CoRL 2021
توجه انسان را بهعنوان منبعی کمیاب در نظر میگیرد و فقط در حالتهای تازه یا پرریسک درخواست کمک میکند؛ چارچوب درستی برای وقتی که یک نفر تمام بعدازظهر ناظر بازو است.
- DART: Noise Injection for Robust Imitation Learning
Michael Laskey, Jonathan Lee, Roy Fox, Anca Dragan, Ken Goldberg · 2017 · CoRL 2017
جایگزین صادقانه: بهجای اصلاح policy در حین اجرا، دموها را با اغتشاش همراه میکند تا خبره نحوهٔ بازگشت را نشان دهد. پیش از متعهد شدن به مداخلهها ارزش دانستن دارد.
- Interactive Imitation Learning in Robotics: A Survey
Carlos Celemin, Rodrigo Perez-Dattari, Eugenio Chisari, Giovanni Franzese, Leandro de Souza Rosa, Ravi Prakash, Zlatan Ajanovic, Marta Ferraz, Abhinav Valada, Jens Kober · 2022 · arXiv:2211.00600
نقشهٔ این حوزه: چه شکلهایی از بازخورد انسانی وجود دارد، چه رابطهایی آنها را منتقل میکنند، و مداخلهٔ بهسبک DAgger کجای این نقشه قرار میگیرد.
- Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware
Tony Z. Zhao, Vikash Kumar, Sergey Levine, Chelsea Finn · 2023 · arXiv:2304.13705
مقالهٔ ACT. action chunking دلیل اصلی این است که اساساً یک بازوی ارزان میتواند با یک policy تقلیدی رانده شود، و ACT سریعترین policy برای تکرار یک دور DAgger است.
- π0: A Vision-Language-Action Flow Model for General Robot Control
Kevin Black, Noah Brown, Danny Driess, Adnan Esmail, Michael Equi, Chelsea Finn et al. · 2024 · arXiv:2410.24164
یک VLA مبتنی بر flow matching که روی یک مدل vision-language از پیش آموزشدیده ساخته شده، و یکی از checkpointهایی است که اینجا میتوانید فاینتیون کنید؛ مقاله صریحاً میگوید مهارتهای تازه از فاینتیون میآیند، نه فقط از مدل پایه.
سؤالهایی که واقعاً پرسیده میشوند
آیا برای DAgger به بازوی leader نیاز دارم؟
نه. در شروع اجرا ورودی صفحهکلید یا اسلایدر را انتخاب کنید تا در دستگیری از همان فریم اول دستی باشد و از مرورگر هدایت شود. بازوی leader برای حرکتهای ظریف دلنشینتر است، و تنها حالتی است که بازو پیش از تحویل کنترل خودش را همتراز میکند؛ اما حلقه بدون آن هم اجرا میشود.
به چند دور DAgger نیاز دارم؟
عدد ثابت صادقانهای وجود ندارد. نرخ مداخله را زیر نظر بگیرید: اگر از دوری به دور بعد پایین نیاید، آن دور چیزی برایتان نداشته، و مشکل معمولاً در چیدمان وظیفه، دوربینها یا مجموعه دادهٔ اصلی است، نه در تعداد دورها.
این DAgger واقعی است یا چیزی سستتر؟
این HG-DAgger است، نسخهٔ انسانمحور. DAgger کلاسیک از خبره دربارهٔ حالتهایی میپرسد که policy انتخاب کرده، از جمله حالتهایی که هیچ اپراتور عاقلی اجازه نمیدهد یک بازوی واقعی به آنها برسد. اینجا یک انسان تصمیم میگیرد چه زمانی مداخله کند، و فقط همان بخشها به برچسب تبدیل میشوند.
آیا فقط روی اصلاحات آموزش میدهم؟
نه، و نباید هم این کار را بکنید. آموزش فقط روی اصلاحات، policyای میسازد که فقط بلد است چطور برگردد. مجموعه دادهٔ ترکیبشده دادههای اصلی بهعلاوهٔ اصلاحات است، با اپیزودهای انتخابشدهٔ صریح از هر منبع.
آیا ادامه از checkpoint همان اجرای آموزش را resume میکند؟
فقط وزنها را از آن checkpoint مقداردهی اولیه میکند. وضعیت optimizer بازیابی نمیشود، پس در معنای دقیق کلمه یک resume نیست. در عمل این وزنها هستند که رفتار یادگرفتهشده را از یک دور به دور دیگر منتقل میکنند، اما بهتر است بدانید کدامیک از این دو را دارید.
نرخ مداخله چطور محاسبه میشود؟
فریمهای علامتخورده بهعنوان مداخله تقسیم بر کل فریمهای اجرا. این عدد در وضعیت در دستگیری نشان داده میشود، و همان یک عددی است که ارزش دارد بهازای هر دور، کنار checkpoint راندهشده و ترکیب آموزشدیده یادداشت شود.
با کدام policyها میتوانم این حلقه را اجرا کنم؟
ACT، SmolVLA، Pi0 و GR00T N1.5 یا N1.7. خودِ حلقه نسبت به نوع policy بیتفاوت است چون فقط مجموعه داده و checkpoint تولید میکند؛ تفاوت عملی در این است که یک دور چقدر طول میکشد و به کدام GPU نیاز دارد.
آیا میتوانم این کار را بدون داشتن ربات انجام دهم؟
میتوانید بدون ربات ضبط و آموزش دهید، با خرید مجموعه داده از marketplace یا سفارش کار به اپراتورها، و میتوانید یک SO-100 واقعی را در صفحهٔ live از مرورگر هدایت کنید. یک دور DAgger فرق دارد: به بازویی نیاز دارد که بتوانید در میانهٔ اجرا کنترلش را در دست بگیرید، پس برای خودِ حلقه به سختافزار روی میز خودتان نیاز دارید.
A real SO-100, live in the browser. No signup, no hardware needed.
همین هفته اولین دور خود را اجرا کنید
کلاینت را نصب کنید، یک checkpoint که از قبل دارید را اجرا کنید، و اولین باری که بازو از کنار مکعب رد شد کنترل را در دست بگیرید. همین یک اجرا یک دور DAgger در ابعاد کوچک است: هر چه بعد از آن میآید فقط چیدن ترکیب و پرداخت ساعتهای GPU است.