Preia controlul când policy greșește, apoi antrenează exact acea corecție.
O policy antrenată prin behavior cloning cunoaște doar stările vizitate de demonstrațiile tale. DAgger închide acest decalaj cu date din stările pe care policy le atinge ea însăși. AY-Robots rulează întreaga buclă pe un SO-100: conduci un checkpoint, preiei controlul în timpul rulării, păstrezi episoadele corectate, compui amestecul și continui antrenarea din checkpointul tocmai condus.
- HG-DAgger, controlat de om
- SO-100 / SO-101
- ACT, SmolVLA, Pi0, GR00T N1.5 / N1.7
- Rata de intervenție pe rundă
De ce o policy antrenată face ceva ce nu a fost niciodată demonstrat
Behavior cloning tratează controlul ca pe o învățare supervizată obișnuită: observație la intrare, țintă articulară la ieșire, ajustată pe cadrele înregistrate de un om. Asta ține doar atât timp cât robotul rămâne pe stările vizitate de acel om, iar el nu rămâne. Un gripper care se închide cu patruzeci de milisecunde mai devreme împinge cubul cu doi milimetri în afara poziției demonstrate. Următoarea observație este una pe care setul de antrenament nu o conține, deci acțiunea de acolo este o extrapolare, iar starea de după se află și mai departe. Distribuția de antrenament și distribuția pe care policy învățată o produce efectiv sunt două lucruri diferite, iar a doua se îndepărtează de prima pe măsură ce episodul avansează.
Ross, Gordon și Bagnell au descris exact acest eșec de reducere în 2011 și au cuantificat paguba: un clasificator care greșește cu probabilitatea e sub distribuția expertului poate face, sub distribuția pe care o produce el însuși, în ordinul lui T la pătrat ori e greșeli pe un orizont de T pași, pentru că o singură greșeală produce observații pe care expertul nu le-a generat niciodată, iar erorile se acumulează. Soluția lor este algoritmul despre care vorbește această pagină: rulezi policy curentă, colectezi etichete de la expert pentru stările pe care aceasta le vizitează, le agregi cu tot ce a fost colectat până acum, reantrenezi, repeți. Mai multe demonstrații de același fel nu ajută, pentru că reeșantionează aceeași distribuție. Etichetele pe stările pe care policy le atinge, da. Varianta implementată aici este human-gated (HG-DAgger, Kelly et al.): policy păstrează controlul până când o persoană decide că lucrurile merg prost și preia, astfel încât corecțiile apar doar unde sunt necesare, iar brațul nu este niciodată trimis într-o stare pe care operatorul nu ar permite-o.
- Behavior cloning este valid doar pe distribuția de stări pe care a fost antrenat.
- Eșecul se auto-amplifică: o abatere mică produce o stare necunoscută, care produce o abatere și mai mare.
- Remediul nu sunt mai multe demonstrații, ci etichete pe stările pe care policy le atinge ea însăși.
- Human-gated înseamnă că operatorul decide când intervine, nu un scor de autonomie.
De ce eroarea se acumulează
Trage orizontul. Sub behavior cloning, costul suplimentar așteptat crește aproximativ cu pătratul numărului de pași, pentru că fiecare greșeală produce stări pe care demonstrațiile nu le-au acoperit niciodată; o buclă de agregare menține creșterea aproape liniară (Ross et al., 2011).
Curbe ilustrative derivate din limitele din Ross et al. (2011), nu măsurători de pe robotul tău. Contează forma, nu cifrele.
O rundă DAgger, șase pași
Așa rulează bucla efectiv pe platformă, nu ca schemă. Fiecare pas de mai jos corespunde unui control din cockpit.
Parcurge bucla
Aceiași șase pași, unul câte unul, cu ce se întâmplă la braț și în setul de date la fiecare dintre ei.
Rulează policy și înregistreaz-o
Pornești un run de inferență pe un checkpoint antrenat de tine. Rularea este înregistrată pe măsură ce se întâmplă, împreună cu textul sarcinii rulării înseși, astfel încât cadrele să poată fi folosite ulterior ca date de antrenament, nu doar ca un videoclip pe care îl poți privi.
Preia controlul și corectează
În momentul în care brațul face ceva greșit, apasă Preia. Runner-ul se oprește și brațul este al tău. Cu un braț leader, acesta se deplasează mai întâi la poza follower-ului și apoi predă controlul; cu intrare de la tastatură sau slidere, aleasă la începutul rulării, preluarea este imediat manuală. Corectezi mișcarea, apoi predai controlul înapoi policy-ei. Cadrele înregistrate în timpul preluării sunt marcate automat drept intervenții.
Sortează rularea
Decizi pentru fiecare rulare ce anume a fost: o arhivezi ca și corecție, o păstrezi ca rulare de evaluare sau o arunci. Cadrele înghețate din jurul predării rămân în directorul raw și nu ajung niciodată în setul de date.
Sincronizează setul de date cu corecții
Corecțiile se adună într-un set de date de corecții propriu fiecărei policy și ajung în bucket-ul tău prin sincronizarea automată în cloud. Nimic nu este contopit cu altceva în acest punct; corecțiile sunt pur și simplu un set de date de sine stătător.
Compune tu amestecul
Folosești Compune setul de date pentru a construi setul de antrenament al rundei următoare: setul de date original plus corecțiile, cu episoade alese explicit pe fiecare sursă. Rezultatul este un set de date obișnuit, care se sincronizează și se antrenează ca oricare altul. Nimic nu este amestecat pe ascuns, iar date de simulare nu se adaugă automat.
Continuă antrenarea din checkpoint
Antrenezi setul de date compus cu Continuă de la checkpoint în loc să pornești de la modelul de bază, astfel încât runda începe de la policy tocmai condusă. Să fim preciși în privința asta: inițializează ponderile din acel checkpoint, nu este o reluare a optimizer-ului.
Ce preia platforma în locul tău
Fiecare punct de aici este un pas al buclei pe care altfel l-ai construi și întreține singur.
Preluare fără braț leader
Alegi intrare de la tastatură sau slidere la începutul rulării și poți corecta doar cu un laptop. Impulsurile de tastatură sunt limitate pe server la două grade per articulație și patru grade la gripper; țintele sliderelor sunt absolute, iar serverul deplasează cel mult șase grade spre ele la fiecare apel. Limitele sunt impuse de server, nu de interfață, așa că o tastă blocată nu poate arunca brațul.
Documentația de teleoperareIntervenții marcate pe fiecare cadru
Fiecare cadru înregistrat cât timp controlezi brațul poartă un marcaj de intervenție, iar coloana action conține poza comandată completă. Nu întreții manual o coloană de marcaje și nu o aliniezi ulterior cu indicii cadrelor. (engleză)
Formatul de dataset LeRobotTriaj: corecție, evaluare sau eliminare
Fiecare rulare primește o singură decizie pe cardul de salvare. Rulările de corecție alimentează runda de antrenament următoare, rulările de evaluare rămân în afara antrenamentului ca să rămână o măsurătoare curată, iar rulările proaste dispar în loc să otrăvească pe ascuns amestecul.
Sesiuni și episoadeCompune explicit amestecul
Setul de antrenament pentru runda n este asamblat de tine: setul de date original plus corecțiile, cu episoade selectate pe fiecare sursă. Fără amestecare automată, fără date de simulare ascunse, iar rezultatul compus se comportă ca orice alt set de date.
Seturi de dateContinuă de la un checkpoint
Îndrepți o rulare de antrenament spre checkpointul tocmai condus, în loc de modelul de bază, astfel încât fiecare rundă începe de unde s-a terminat ultima. Se inițializează doar ponderile; starea optimizer-ului nu este restaurată, motiv pentru care runda unu merită tratată ca un test de fezabilitate.
AntrenamentGPU-uri închiriate pe rundă
ACT și SmolVLA pe o 4090, Pi0 și GR00T N1.5 sau N1.7 pe o A100 cu 80 GB. Pornești o rundă, pod-ul se ridică, checkpointurile ajung în bucket-ul tău, iar tu plătești orele pe care le-a durat runda.
Prețuri GPUPlanifică-ți rundele
Rata de intervenție este metrica de progres a buclei: cadre corectate împărțite la cadrele rulării. Setează de unde pornești și cât îți aduce fiecare rundă, apoi vezi câte runde îți trebuie ca să ajungi unde vrei.
| Runda | Rata de intervenție | Cadre corectate |
|---|---|---|
| 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 | |
Un model, nu o prognoză. Rundele reale sunt neregulate, iar o rundă care nu mișcă rata nu ți-a adus nimic; exact acesta este semnalul de urmărit.
Construiești bucla singur sau o rulezi aici
Nimic din toate astea nu este imposibil de făcut manual. E o întrebare despre câte seri se duc pe infrastructură în loc de runde, și există un rând în care varianta pe cont propriu este clar mai bună.
| Pasul buclei | Configurat manual | Pe AY-Robots |
|---|---|---|
| Preluarea în timpul rulării | Un braț leader sau propriul cod pe bus-ul servo. Preluarea de la tastatură și slidere, inclusiv limitele de siguranță, sunt ceva ce scrii și apoi depanezi pe hardware real. | Braț leader, tastatură sau slidere, alese la începutul rulării. Limitele unghiulare stau în server. |
| Marcarea intervențiilor | Adaugi coloana de marcaj, o menții aliniată cu indicele cadrului și o verifici din nou de fiecare dată când formatul de înregistrare se schimbă. | Fiecare cadru înregistrat în timpul unei preluări este marcat automat, cu poza comandată în coloana action. |
| Sortarea rulărilor | Convenții de directoare și scripturi shell. Cadrele înghețate din jurul predării trebuie să le găsești și să le filtrezi singur. | O decizie pe rulare, pe cardul de salvare. Cadrele de predare rămân în directorul raw. |
| Construirea setului de date mixt | Scripturi de merge pentru fiecare versiune de format. Partea plictisitoare este să faci indicii episoadelor, metadatele și referințele video consistente. | Compune din original plus corecții, cu selecție de episoade pe fiecare sursă; rezultatul este un set de date normal. |
| Pornirea rundei următoare de la ultima policy | Conectezi tu însuți checkpointul în trainer și poți restaura chiar și starea optimizer-ului dacă vrei o reluare reală. | Un singur câmp pentru checkpointul de bază. Doar ponderi: se inițializează din checkpoint, nu este o reluare a optimizer-ului. |
| Controlul asupra buclei de antrenament | Total. Propriul loss, propriul program, propriile ablații, propria instrumentare, nicio platformă în cale. Dacă întrebarea de cercetare este chiar bucla de antrenament, fă-o manual. | Un traseu fix cu o listă stabilită de policies și hiperparametrii pe care îi expune formularul, nu cod arbitrar. |
Lucrările pe care se bazează asta
Citește-le înainte să contrazici bucla. Fiecare link duce la pagina de abstract, nu în spatele unui 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)
Lucrarea originală DAgger: formulează problema erorii cumulative, dă limita de tip T la pătrat pentru abordarea pur supervizată și propune agregarea datelor din stările pe care lernerul le vizitează el însuși.
- HG-DAgger: Interactive Imitation Learning with Human Experts
Michael Kelly, Chelsea Sidrane, Katherine Driggs-Campbell, Mykel J. Kochenderfer · 2019 · arXiv:1810.02890, ICRA 2019
Varianta human-gated: expertul decide când preia controlul, în loc să fie interogat pe stările alese de policy; acesta este modul implementat de această platformă.
- EnsembleDAgger: A Bayesian Approach to Safe Imitation Learning
Kunal Menda, Katherine Driggs-Campbell, Mykel J. Kochenderfer · 2019 · arXiv:1807.08364, IROS 2019
Cealaltă modalitate de a controla intervențiile: dezacordul dintr-un ensemble ca semnal de încredere pentru momentul în care lernerul poate acționa singur. Un contrast util față de a lăsa un om să judece.
- 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
Tratează atenția umană ca resursă rară și cere ajutor doar în stări noi sau riscante, cadrul potrivit atunci când o singură persoană supraveghează brațul o după-amiază întreagă.
- DART: Noise Injection for Robust Imitation Learning
Michael Laskey, Jonathan Lee, Roy Fox, Anca Dragan, Ken Goldberg · 2017 · CoRL 2017
Alternativa onestă: în loc să corectezi policy online, perturbi demonstrațiile ca expertul să arate cum se revine. Bine de știut înainte să te angajezi la intervenții.
- 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
Harta domeniului: ce forme de feedback uman există, prin ce interfețe ajung și unde se situează intervenția de tip DAgger printre ele.
- Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware
Tony Z. Zhao, Vikash Kumar, Sergey Levine, Chelsea Finn · 2023 · arXiv:2304.13705
Lucrarea ACT. Action chunking este motivul pentru care un braț ieftin poate fi condus de o policy de imitație, iar ACT este policy cea mai rapidă cu care poți itera o rundă 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
Un VLA bazat pe flow matching, construit pe un model vision-language preantrenat, și unul dintre checkpointurile pe care le poți fine-tuna aici; lucrarea afirmă explicit că abilitățile noi vin din fine-tuning, nu doar din modelul de bază.
Întrebări puse cu adevărat
Am nevoie de un braț leader pentru DAgger?
Nu. Alegi intrare de la tastatură sau slidere la începutul rulării, iar preluarea este manuală din primul cadru, controlată din browser. Un braț leader este mai plăcut pentru mișcări fine și este modul în care brațul se aliniază singur înainte de predare, dar bucla funcționează și fără el.
De câte runde DAgger am nevoie?
Nu există un număr fix onest. Urmărește rata de intervenție: dacă nu scade de la o rundă la alta, runda respectivă nu ți-a adus nimic, iar problema este de obicei în configurarea sarcinii, în camere sau în setul de date original, nu în numărul de runde.
Este acesta DAgger real sau ceva mai relaxat?
Este HG-DAgger, varianta human-gated. DAgger clasic interoghează expertul pe stările alese de policy, inclusiv stări în care niciun operator rezonabil nu ar lăsa un braț real să ajungă. Aici o persoană decide când intervine, și doar acele segmente devin etichete.
Antrenez doar pe corecții?
Nu, și nici n-ar trebui. Antrenată doar pe corecții, obții o policy care știe doar să revină din greșeală. Setul de date compus este format din datele originale plus corecțiile, cu episoadele din fiecare sursă alese explicit.
Continuarea de la un checkpoint reia rularea de antrenament?
Inițializează ponderile din acel checkpoint. Starea optimizer-ului nu este restaurată, deci nu este o reluare în sensul strict. În practică, ponderile sunt cele care duc mai departe comportamentul învățat între runde, dar merită să știi care dintre cele două primești.
Cum se calculează rata de intervenție?
Cadre marcate ca intervenție împărțite la numărul total de cadre al rulării. Este afișată în starea de preluare și este singura cifră care merită notată per rundă, alături de checkpointul condus și amestecul antrenat.
Cu ce policies pot rula această buclă?
ACT, SmolVLA, Pi0 și GR00T N1.5 sau N1.7. Bucla în sine este agnostică față de policy, pentru că produce doar seturi de date și checkpointuri; diferența practică este cât durează o rundă și de ce GPU are nevoie.
Pot face asta fără să dețin un robot?
Poți înregistra și antrena fără robot, cumpărând seturi de date de pe marketplace sau angajând operatori, iar un SO-100 real poți conduce în browser pe pagina live. O rundă DAgger este altceva: are nevoie de un braț pe care să îl poți prelua în timpul rulării, deci pentru buclă în sine îți trebuie hardware pe propriul birou.
A real SO-100, live in the browser. No signup, no hardware needed.
Rulează prima ta rundă săptămâna asta
Instalezi clientul, conduci un checkpoint pe care îl ai deja și preiei controlul prima dată când brațul trece pe lângă cub. Această singură rulare este o rundă DAgger în miniatură: tot ce urmează este să compui amestecul și să plătești orele de GPU.