Ta över när policyn gör fel, och träna sedan på just den korrigeringen.
En policy tränad med behavior cloning känner bara till de tillstånd dina demonstrationer besökte. DAgger tätar det gapet med data från de tillstånd policyn själv når. AY-Robots kör hela loopen på en SO-100: kör en checkpoint, ta över mitt i körningen, behåll de korrigerade episoderna, sätt ihop mixen och fortsätt träna från den checkpoint du precis körde.
- HG-DAgger, human-gated
- SO-100 / SO-101
- ACT, SmolVLA, Pi0, GR00T N1.5 / N1.7
- Interventionsfrekvens per runda
Varför en tränad policy gör något som aldrig demonstrerades
Behavior cloning behandlar reglering som vanlig övervakad inlärning: observation in, ledmål ut, anpassat till de bildrutor en människa spelat in. Det håller bara så länge roboten stannar på de tillstånd människan besökte, och det gör den inte. Ett gripdon som stänger fyrtio millisekunder för tidigt knuffar kuben två millimeter från sin demonstrerade position. Nästa observation finns inte i träningsdatan, så åtgärden där blir en extrapolering, och tillståndet efter det ligger ännu längre ut. Träningsfördelningen och den fördelning den inlärda policyn faktiskt skapar är två olika saker, och den andra driver bort från den första allteftersom episoden fortgår.
Ross, Gordon och Bagnell beskrev exakt detta reduktionsproblem 2011 och satte siffror på skadan: en klassificerare som felar med sannolikhet e under expertfördelningen kan under sin egen inducerade fördelning göra i storleksordningen T i kvadrat gånger e fel över en horisont på T steg, eftersom ett enda fel skapar observationer som experten aldrig genererat och felen därför förstärker varandra. Deras lösning är algoritmen den här sidan handlar om: kör den aktuella policyn, samla in expertetiketter för de tillstånd den besöker, slå ihop dem med allt som samlats in hittills, träna om, upprepa. Fler demonstrationer av samma slag hjälper inte, eftersom de bara samplar om samma fördelning. Etiketter på de tillstånd policyn faktiskt når gör det. Varianten som är implementerad här är human-gated (HG-DAgger, Kelly et al.): policyn behåller kontrollen tills en person avgör att det går fel och tar över, så korrigeringar skapas bara där de behövs, och armen tvingas aldrig in i ett tillstånd som operatören inte skulle tillåta.
- Behavior cloning gäller bara för den tillståndsfördelning den tränades på.
- Felet förstärker sig självt: en liten avvikelse skapar ett obekant tillstånd, som skapar en större avvikelse.
- Botemedlet är inte fler demonstrationer, utan etiketter på de tillstånd policyn själv når.
- Human-gated betyder att det är operatören som avgör när ett ingripande sker, inte ett autonomivärde.
Varför felet ackumuleras
Dra i horisonten. Under behavior cloning växer den förväntade extrakostnaden med ungefär kvadraten på antalet steg, eftersom varje misstag skapar tillstånd som demonstrationerna aldrig täckte; en aggregeringsloop håller tillväxten nära linjär (Ross et al., 2011).
Illustrativa kurvor utifrån gränserna i Ross et al. (2011), inte mätningar från din robot. Poängen är formen, inte siffrorna.
En DAgger-runda, sex steg
Så här körs loopen faktiskt på plattformen, inte som ett schema. Varje steg nedan motsvarar en kontroll i cockpiten.
Gå igenom loopen steg för steg
Samma sex steg, ett i taget, med vad som händer på armen och i datasetet vid vart och ett av dem.
Kör policyn och spela in den
Starta en inferenskörning mot en checkpoint du har tränat. Körningen spelas in medan den pågår, tillsammans med uppgiftstexten för själva körningen, så att bildrutorna går att använda som träningsdata efteråt i stället för att bara vara en video du kan titta på.
Ta över och korrigera
I samma ögonblick armen gör fel: tryck på Ta över. Körningen pausas och armen är din. Med en leader-arm kör den först till follower-posen och lämnar sedan över kontrollen; med tangentbord eller reglage som indata, valt vid start av körningen, är övertagandet manuellt direkt. Korrigera rörelsen och lämna sedan tillbaka kontrollen till policyn. Bildrutor som spelas in under övertagandet flaggas automatiskt som interventioner.
Sortera körningen
Bestäm per körning vad den var: arkivera den som en korrigering, behåll den som en utvärderingskörning, eller kasta den. Stillbilderna runt en överlämning stannar kvar i raw-katalogen och hamnar aldrig i datasetet.
Synka korrigeringsdatasetet
Korrigeringar samlas i ett eget korrigeringsdataset per policy och går till din bucket via den automatiska molnsynkroniseringen. Inget slås ihop med något i det här steget; korrigeringarna är helt enkelt ett eget dataset.
Sätt ihop mixen själv
Använd Sätt ihop dataset för att bygga träningsmängden för nästa runda: originaldatasetet plus korrigeringarna, med episoder valda explicit per källa. Resultatet är ett vanligt dataset som synkas och tränas som vilket annat som helst. Inget blandas in bakom din rygg, och ingen simuleringsdata läggs till automatiskt.
Fortsätt träna från checkpointen
Träna det sammansatta datasetet med Fortsätt från checkpoint i stället för att starta från basmodellen, så att rundan börjar vid den policy du just körde. Var precis om vad det här faktiskt är: det initierar vikterna från den checkpointen, det är ingen optimerar-återupptagning.
Det plattformen tar hand om åt dig
Varje punkt här är ett steg i loopen som du annars skulle behöva bygga och underhålla själv.
Övertagande utan leader-arm
Välj tangentbord eller reglage som indata vid start av körningen, så räcker en bärbar dator för att korrigera. Tangentbordsimpulser begränsas serversidan till två grader per led och fyra grader på gripdonet; reglagemål är absoluta, och servern flyttar högst sex grader mot dem per anrop. Begränsningarna sitter i servern, inte i gränssnittet, så en fastnad tangent kan inte kasta iväg armen.
Teleoperation i dokumentationenInterventioner markerade per bildruta
Varje bildruta som spelas in medan du håller i armen bär en interventionsflagga, och action-kolumnen innehåller hela den beordrade posen. Du underhåller ingen flaggkolumn för hand och riktar inte in den mot bildruteindex i efterhand.
LeRobot-datasetformatetSortering: korrigering, utvärdering eller papperskorg
Varje körning får ett beslut på sparakortet. Korrigeringskörningar matar nästa träningsrunda, utvärderingskörningar hålls utanför träningen så att de förblir en ren mätning, och misslyckade körningar försvinner i stället för att tyst förgifta mixen.
Sessioner och episoderSätt ihop mixen explicit
Träningsmängden för runda n sätter du ihop själv: originaldataset plus korrigeringar, episoder valda per källa. Ingen automatisk inblandning, ingen dold simuleringsdata, och det sammansatta resultatet beter sig som vilket annat dataset som helst.
DatasetFortsätt från en checkpoint
Rikta en träningskörning mot checkpointen du just körde i stället för basmodellen, så att varje runda börjar där den förra slutade. Bara vikterna initieras; optimerarens tillstånd återställs inte, vilket är varför runda ett är värd att behandla som ett genomförbarhetstest.
TräningGPU:er hyrda per runda
ACT och SmolVLA på en 4090, Pi0 och GR00T N1.5 eller N1.7 på en A100 med 80 GB. Du startar en runda, poden startar upp, checkpoints hamnar i din bucket, och du betalar för de timmar rundan tog.
GPU-priserPlanera dina rundor
Interventionsfrekvensen är loopens framstegsmått: korrigerade bildrutor delat med bildrutor i körningen. Ställ in var du börjar och hur mycket varje runda ger dig, och se hur många rundor det tar att nå dit du vill.
| Runda | Interventionsfrekvens | Korrigerade bildrutor |
|---|---|---|
| 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 | |
En modell, ingen prognos. Verkliga rundor är ojämna, och en runda som inte rör frekvensen har inte gett dig något; det är precis den signalen som är värd att bevaka.
Bygga loopen själv eller köra den här
Inget av det här är omöjligt att göra för hand. Det handlar om hur många kvällar som går åt till rörledningsarbete i stället för till rundor, och det finns en rad där att göra det själv helt enkelt är det bättre svaret.
| Steg i loopen | Byggt för hand | På AY-Robots |
|---|---|---|
| Överta mitt i körningen | En leader-arm, eller egen kod på servobussen. Övertagande via tangentbord och reglage, inklusive säkra gränser, är något du skriver och sedan felsöker på riktig hårdvara. | Leader-arm, tangentbord eller reglage, valt när körningen startar. Vinkelbegränsningarna sitter i servern. |
| Markera interventioner | Du lägger till flaggkolumnen, håller den i linje med bildruteindex och kontrollerar den på nytt varje gång inspelningsformatet ändras. | Varje bildruta som spelas in under ett övertagande flaggas automatiskt, med den beordrade posen i action-kolumnen. |
| Sortera körningarna | Katalogkonventioner och shell-skript. Stillbilderna runt en överlämning måste du själv hitta och sortera bort. | Ett beslut per körning på sparakortet. Överlämningsbilderna stannar kvar i raw-katalogen. |
| Bygga det blandade datasetet | Merge-skript per formatversion. Att få episodindex, metadata och videoreferenser konsekventa är det mödosamma arbetet. | Sätt ihop från original plus korrigeringar med episodval per källa; resultatet är ett vanligt dataset. |
| Starta nästa runda från den senaste policyn | Du kopplar in checkpointen i tränaren själv, och du kan även återställa optimerarens tillstånd om du vill ha en äkta återupptagning. | Ett fält för basscheckpointen. Bara vikter: den initierar från checkpointen, det är ingen optimerar-återupptagning. |
| Kontroll över träningsloopen | Total. Din loss, ditt schema, dina ablationer, din instrumentering, ingen plattform i vägen. Om forskningsfrågan är själva träningsloopen, gör det för hand. | En fast väg med en bestämd lista av policyer och de hyperparametrar formuläret exponerar, ingen godtycklig kod. |
Artiklarna det här bygger på
Läs dessa innan du ifrågasätter loopen. Varje länk går till abstract-sidan, inte bakom en betalvägg.
- 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)
Den ursprungliga DAgger-artikeln: den beskriver problemet med ackumulerande fel, ger T-i-kvadrat-gränsen för det renodlat övervakade angreppssättet och föreslår att aggregera data från de tillstånd inläraren själv besöker.
- HG-DAgger: Interactive Imitation Learning with Human Experts
Michael Kelly, Chelsea Sidrane, Katherine Driggs-Campbell, Mykel J. Kochenderfer · 2019 · arXiv:1810.02890, ICRA 2019
Den human-gated varianten: experten avgör själv när hen tar över kontrollen, i stället för att tillfrågas om tillstånd policyn valt, vilket är det läge den här plattformen implementerar.
- EnsembleDAgger: A Bayesian Approach to Safe Imitation Learning
Kunal Menda, Katherine Driggs-Campbell, Mykel J. Kochenderfer · 2019 · arXiv:1807.08364, IROS 2019
Det andra sättet att styra interventioner: oenighet i ett ensemble som förtroendesignal för när inläraren får agera själv. Ett nyttigt kontrastfall till att låta en person avgöra det.
- 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
Behandlar mänsklig uppmärksamhet som den knappa resursen och ber om hjälp bara vid nya eller riskfyllda tillstånd, vilket är rätt ramverk när en person övervakar armen en hel eftermiddag.
- DART: Noise Injection for Robust Imitation Learning
Michael Laskey, Jonathan Lee, Roy Fox, Anca Dragan, Ken Goldberg · 2017 · CoRL 2017
Det ärliga alternativet: i stället för att korrigera policyn online störs demonstrationerna så att experten visar återhämtning. Bra att känna till innan du binder dig till interventioner.
- 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
Kartan över fältet: vilka former av mänsklig återkoppling som finns, vilka gränssnitt som förmedlar dem, och var DAgger-liknande intervention hör hemma bland dem.
- Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware
Tony Z. Zhao, Vikash Kumar, Sergey Levine, Chelsea Finn · 2023 · arXiv:2304.13705
ACT-artikeln. Action chunking är anledningen till att en billig arm över huvud taget kan styras av en imitationspolicy, och ACT är den policy det går snabbast att iterera en DAgger-runda med.
- π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
En flow-matching-VLA byggd på en förtränad vision-språk-modell, och en av de checkpoints du kan finjustera här; artikeln är tydlig med att nya färdigheter kommer från finjustering, inte från basmodellen ensam.
Frågor folk faktiskt ställer
Behöver jag en leader-arm för DAgger?
Nej. Välj tangentbord eller reglage som indata när du startar körningen, så är övertagandet manuellt från första bildrutan och styrs från webbläsaren. En leader-arm är behagligare för fin rörelse, och det är det läge där armen riktar in sig själv innan överlämningen, men loopen fungerar utan en sådan.
Hur många DAgger-rundor behöver jag?
Det finns inget ärligt fast tal. Bevaka interventionsfrekvensen: sjunker den inte från en runda till nästa har den rundan inte gett dig något, och problemet ligger oftast i uppgiftsuppställningen, kamerorna eller originaldatasetet snarare än i antalet rundor.
Är det här riktig DAgger eller något löslare?
Det är HG-DAgger, den human-gated varianten. Klassisk DAgger frågar experten om tillstånd policyn själv valt, inklusive tillstånd ingen förnuftig operatör skulle låta en riktig arm nå. Här avgör en person när ett ingripande sker, och bara de segmenten blir till etiketter.
Tränar jag bara på korrigeringarna?
Nej, och det bör du inte heller göra. Att träna enbart på korrigeringar ger dig en policy som bara kan återhämtning. Det sammansatta datasetet är originaldatan plus korrigeringarna, med episoderna från varje källa valda explicit.
Återupptar Fortsätt från checkpoint träningskörningen?
Det initierar vikterna från den checkpointen. Optimerarens tillstånd återställs inte, så i strikt mening är det ingen återupptagning. I praktiken är det vikterna som bär det inlärda beteendet vidare över en runda, men det är värt att veta vilket av de två man faktiskt får.
Hur beräknas interventionsfrekvensen?
Bildrutor flaggade som intervention delat med det totala antalet bildrutor i körningen. Den visas i övertagandestatusen, och det är det enda talet värt att skriva ner per runda tillsammans med checkpointen du körde och mixen du tränade.
Vilka policyer kan jag köra loopen med?
ACT, SmolVLA, Pi0, samt GR00T N1.5 eller N1.7. Loopen själv är policyagnostisk eftersom den bara skapar dataset och checkpoints; den praktiska skillnaden ligger i hur lång tid en runda tar och vilken GPU den behöver.
Går det här att göra utan att äga en robot?
Du kan spela in och träna utan en robot genom att köpa dataset på marknadsplatsen eller anlita operatörer, och du kan styra en riktig SO-100 i webbläsaren på live-sidan. En DAgger-runda är något annat: den kräver en arm du kan ta över mitt i körningen, så för själva loopen vill du ha hårdvara på ditt eget skrivbord.
A real SO-100, live in the browser. No signup, no hardware needed.
Kör din första runda den här veckan
Installera klienten, kör en checkpoint du redan har, och ta över första gången armen sträcker sig förbi kuben. Den enda körningen är en DAgger-runda i miniatyr: allt efter det handlar bara om att sätta ihop mixen och betala för GPU-timmarna.