En robothånd løser Rubiks terning

Foto: Eric Haines
Vi har trænet et par neurale netværk til at løse Rubiks terning med en menneskelignende robothånd. De neurale netværk er udelukkende trænet i simulation ved hjælp af den samme forstærkende læringskode som OpenAI Five – kombineret med en ny metode kaldet automatisk domænerandomisering (ADR). Systemet kan håndtere situationer, det aldrig er blevet udsat for under træningen, som f.eks. at blive puffet til af en tøjdyrsgiraf. Det viser, at forstærkningslæring ikke kun er anvendeligt til virtuelle opgaver, men også kan løse fysiske problemer, der kræver en hidtil uset grad af fingerfærdighed.
Vores menneskehænder gør os i stand til at løse et væld af forskellige opgaver. I de seneste 60 år har man inden for robotteknologi været nødt til at designe en specialbygget robot til hver enkelt opgave(åbner i et nyt vindue), som mennesker ellers klarer med det samme sæt hænder. Som alternativ har man i årtier forsøgt sig med robothardware bygget til generelle formål(åbner i et nyt vindue), men med begrænset succes på grund af deres høje grad af frihed. Den hardware, vi anvender her, er ikke ny – den robothånd, vi bruger, har eksisteret i de sidste 15 år – men softwaren er anderledes.
Siden maj 2017 har vi arbejdet på at træne en menneskelignende robothånd til at løse Rubiks terning(åbner i et nyt vindue). Det er et mål, vi har sat, da vi mener, at evnen til at udføre komplekse, manuelle opgaver med en robothånd er et afgørende skridt på vejen mod robotter med bredere anvendelsesmuligheder. I juli 2017 lykkedes det os at løse Rubiks terning i simulation. Men i juli 2018 var det stadig kun muligt at få robotten til at manipulere med en klods. Nu har vi nået vores oprindelige mål.
Rubiks terning løses helt. Denne video afspilles i realtid og er ikke redigeret på nogen måde.
At løse en Rubiks terning med én hånd er en udfordrende opgave selv for mennesker, og det tager børn flere år at opnå den fingerfærdighed, det kræver. Vores robot har endnu ikke perfektioneret sin teknik. Den løser Rubiks terning 60 % af tiden (og kun i 20 % af tiden, når den står over for en maksimalt svær(åbner i et nyt vindue) blanding).
Vi træner neurale netværk til at løse Rubiks terning i simulation(åbner i et nyt vindue) ved hjælp af forstærkningslæring og Kociembas algoritme(åbner i et nyt vindue) til at vælge løsningstrinene.A Domæne(åbner i et nyt vindue)randomisering(åbner i et nyt vindue) gør det muligt at overføre netværk, der udelukkende er trænet i simulation, til en fysisk robot.

Den største udfordring for os var at skabe simulerede miljøer, der var tilstrækkeligt varierede til at afspejle den fysiske virkelighed. Faktorer som friktion, elasticitet og dynamik er utroligt vanskelige at måle og modellere, når det gælder komplekse objekter som Rubiks terninger og robothænder – og vi fandt ud af, at almindelig domænerandomisering ikke er nok.
For at løse det problem udviklede vi en ny metode kaldet automatisk domænerandomisering (ADR), som uendeligt genererer simulerede miljøer, der gradvist bliver mere udfordrende.B Det betyder, at vi ikke behøver en præcis model af den virkelige verden og alligevel kan overføre de neurale netværk, vi træner i simulation, til fysiske robotter.
ADR starter med et enkelt, ikke-tilfældigt miljø, hvor et neuralt netværk lærer at løse Rubiks terning. Efterhånden som det neurale netværk bliver bedre og når en bestemt præstationsgrænse, øges graden af domænerandomisering automatisk. Det gør opgaven sværere, fordi det neurale netværk nu skal lære at generalisere til mere varierede og uforudsigelige miljøer. Netværket fortsætter med at lære, indtil det igen overskrider præstationstærsklen, hvor mere randomisering sætter ind, og processen gentages.
Et af de parametre, vi randomiserer, er størrelsen på Rubiks terning (ovenfor). ADR starter med en fast størrelse og udvider gradvist randomiseringsspændet af variationer, efterhånden som træningen skrider frem. Den samme metode anvender vi på alle andre parametre – for eksempel terningens masse, friktionen i robothåndens fingre og de visuelle overfladematerialer på hånden. Det betyder, at det neurale netværk skal lære at løse Rubiks terning under stadigt mere udfordrende og varierende forhold.
Ved manuel domænerandomisering skulle vi selv fastsætte spændet for, hvor meget de enkelte parametre skulle variere – en vanskelig balance, fordi for stor variation gør det svært at lære, mens for lidt variation forhindrer overførsel til den fysiske robot. ADR løser dette ved automatisk at udvide randomiseringsgrænserne over tid – helt uden menneskelig indgriben. ADR fjerner behovet for ekspertviden om domænet og gør det lettere at anvende vores metode på nye opgaver. I modsætning til manuel domænerandomisering sørger ADR desuden for, at opgaven hele tiden forbliver udfordrende, og at træningen aldrig stagnerer.
Vi sammenlignede ADR med manuel domænerandomisering i en opgave, hvor en robot skal vende en klods – en opgave, hvor vi i forvejen havde en stærk baseline. I begyndelsen præsterede ADR dårligere målt i antallet af succesfulde forsøg på den fysiske robot. Men efterhånden som ADR øger entropien – et mål for miljøets kompleksitet – fordobles den praktiske overførselseffekt i forhold til baseline, uden menneskelig finjustering.
Med ADR kan vi træne neurale netværk i simulation, som derefter er i stand til at løse Rubiks terning med den fysiske robothånd. Det skyldes, at ADR udsætter netværket for en uendelig variation af randomiserede simuleringer. Det er netop denne kompleksitet i træningen, der forbereder netværket på at kunne overføres til den virkelige verden – fordi det tvinges til hurtigt at genkende og tilpasse sig enhver fysisk situation, det møder.
For at teste vores metodes begrænsninger udsætter vi robothånden for forskellige forstyrrelser, mens den forsøger at løse Rubiks terning. Det tester ikke kun robustheden i vores styringsnetværk, men også vores synsnetværk, som vi her bruger til at estimere terningens position og orientering.
Vi erfarede, at systemet, der er trænet med ADR, er overraskende robust over for disse forstyrrelser – selvom vi aldrig eksplicit trænede med dem: Robothånden kan gennemføre de fleste vendinger og rotationer af terningens sider under alle testede forstyrrelser, om end ikke med optimal præcision.
Vi mener, at meta-læring(åbner i et nyt vindue) – altså evnen til at lære at lære – er en vigtig forudsætning for at kunne udvikle systemer med generel anvendelighed, fordi det gør dem i stand til hurtigt at tilpasse sig ændringer i deres omgivelser. Hypotesen bag ADR er, at et neuralt netværk med hukommelse, kombineret med et tilstrækkeligt randomiseret miljø, fører til emergent meta-læring, hvor netværket udvikler sin egen læringsstrategi, som gør det i stand til hurtigt at tilpasse sin adfærd til det miljø, det placeres i.C
For at teste det systematisk måler vi, hvor lang tid netværket er om at lykkes med hver terningevending (dvs. at dreje terningen, så en ny farve vender opad) under forskellige typer forstyrrelser – f.eks. ved at nulstille netværkets hukommelse, nulstille dynamikken eller deaktivere et led i robothånden. Disse eksperimenter udfører vi i simulation, så vi kan måle gennemsnitspræstationen over 10.000 forsøg under kontrollerede forhold.
I begyndelsen, efterhånden som det neurale netværk lykkes med flere vendinger, bliver det hurtigere til at løse opgaven, fordi netværket lærer at tilpasse sig. Når vi introducerer forstyrrelser (markeret med lodrette grå linjer i grafen ovenfor), stiger tiden det tager at gennemføre en vending markant. Det skyldes, at den strategi, netværket anvender, ikke fungerer i det ændrede miljø. Derefter genlærer netværket om det nye miljø, og vi ser igen, at udførelsen bliver hurtigere – indtil det når tilbage til sin tidligere baseline.
Vi måler også sandsynligheden for at mislykkes og udfører de samme eksperimenter for fladerotationer (roterer den øverste flade 90 grader med eller mod uret) og finder det samme tilpasningsmønster.D
Ved at visualisere vores netværk får vi indsigt i, hvad de gemmer i hukommelsen. Det bliver stadig vigtigere, efterhånden som netværkene vokser i kompleksitet.
Vores neurale netværks hukommelse er visualiseret ovenfor. Vi bruger en byggesten fra fortolkningsværktøjskassen(åbner i et nyt vindue), non-negative matrix factorization, til at sammenfatte denne højdimensionelle vektor i seks grupper og tildele hver gruppe en unik farve. For hvert tidstrin viser vi så farven for den gruppe, der i øjeblikket dominerer hukommelsen.
Vi ser, at hver af disse hukommelsesgrupper er forbundet med en meningsfuld adfærd. For eksempel kan vi – blot ved at se på, hvilken gruppe der dominerer netværkets hukommelse – forudsige, om det er ved at dreje terningen eller rotere toppen med uret, allerede før det sker.
At løse Rubiks terning med en robothånd er stadig ikke nogen nem opgave. Vores metode løser i øjeblikket Rubiks terning i 20 % af tilfældene, når vi bruger en maksimalt vanskelig blanding(åbner i et nyt vindue), som kræver 26 rotationer af fladerne. Ved enklere blandinger, der kun kræver 15 rotationer, ligger succesraten på 60 %. Hvis terningen tabes eller tiden løber ud, betragtes forsøget som mislykket. Dog er vores netværk i stand til at løse Rubiks terning fra et hvilken som helst udgangspunkt. Så hvis terningen bliver tabt, kan man blot lægge den tilbage i hånden og fortsætte opgaven.
Vi ser generelt, at det neurale netværk oftest fejler under de første par flade-rotationer og vendinger. Det skyldes, at netværket i denne fase skal balancere mellem to ting – at løse selve terningen og samtidig tilpasse sig den fysiske verdens uforudsigelighed.
For at benchmarke vores fremskridt, og gøre problemet håndterbart, byggede og designede vi tilpassede versioner af terninger som springbræt til i sidste ende at kunne løse en almindelig Rubiks terning.E

Prototyper af Rubiks terning, fra venstre mod højre: Låst terning, fladeterning, fuld terning, Giiker(åbner i et nyt vindue)-terning, almindelig Rubiks terning.
Prototype | Position + orientering | Interne grader af frihed (sensor) |
Låst terning | Vision | 0 (Ingen sensor) |
Fladeterning | PhaseSpace | 2 (PhaseSpace) |
Fuld terning | PhaseSpace | 6 (PhaseSpace) |
Giiker-terning | Vision | 6 (indbyggede sensorer) |
Almindelig Rubiks terning | Vision | 6 (Vision) |
Vi mener, at menneskelig fingerfærdighed er et vigtigt skridt på vejen mod at skabe robotter med generel anvendelighed, og vi glæder os til at fortsætte arbejdet i den retning.
Hvis du vil være med til at udvikle AI-systemer med stadig større generel anvendelighed, både robotter og virtuelle, så søger vi nye lige nu nye medarbejdere!
Fodnoter
- A
Vi fokuserer på de problemer, der i øjeblikket er vanskelige for maskiner at mestre: perception og fingerfærdighed. Vi træner derfor vores neurale netværk til at opnå de nødvendige fladerotationer og terningvendinger, som genereres af Kociembas algoritme.
- B
Vores arbejde er stærkt relateret til POET(åbner i et nyt vindue), som automatisk genererer 2D-miljøer. Vores arbejde lærer derimod en samlet strategi for alle miljøer, som kan overføres til ethvert nyt genereret miljø.
- C
Mere konkret antager vi, at et neuralt netværk med begrænset kapacitet, der trænes på miljøer med ubegrænset kompleksitet, tvinger netværket til at lære en specialiseret læringsalgoritme, fordi det ikke kan huske løsninger for hvert enkelt miljø, og der findes ikke én enkelt robust strategi, der fungerer under alle former for randomisering.
- D
Se vores artikel(åbner i et nyt vindue) for alle resultaterne.
- E
Den eneste ændring, vi lavede, var at klippe et lille stykke af hver midterternings farverige klistermærke. Dette var nødvendigt for at bryde rotationssymmetrien(åbner i et nyt vindue).
Skrevet af
Tak til
Tak til følgende for feedback på udkastet til dette indlæg og artikel: Josh Achiam, Greg Brockman, Nick Cammarata, Jack Clark, Jeff Clune, Ruben D’Sa, Harri Edwards, David Farhi, Ken Goldberg, Leslie P. Kaelbling, Hyeonwoo Noh, Lerrel Pinto, John Schulman, Ilya Sutskever & Tao Xu.
Video: Peter Jordan (instruktør), Yvette Solis (producer), Brooke Chan (producer)
Klipper: Ashley Pilipiszyn
Design: Justin Jay Wang & Ben Barry
Fotografering: Eric Haines


