Rubik’s Cube oplossen met een robothand

Foto: Eric Haines
We hebben een paar neurale netwerken getraind om de Rubik’s Cube op te lossen met een robothand, zoals een mens zou doen. De neurale netwerken worden helemaal getraind in simulaties, met dezelfde code voor versterkend leren als OpenAI Five, samen met een nieuwe techniek die Automatic Domain Randomization (ADR) heet. Het systeem kan omgaan met situaties die het tijdens de training nooit heeft gezien, zoals geprikt worden door een opgezette giraffe. Dit laat zien dat versterkend leren niet alleen een hulpmiddel is voor virtuele taken, maar ook problemen in de fysieke wereld kan oplossen die een ongekende behendigheid vereisen.
Met mensenhanden kunnen we een grote verscheidenheid aan taken uitvoeren. In de afgelopen 60 jaar van de robotica was het voor moeilijke taken die mensen met hun vaste paar handen uitvoerden nodig om voor elke taak(opent in een nieuw venster) een robot op maat te ontwerpen. Als alternatief hebben mensen vele tientallen jaren geprobeerd om robotica voor algemene doeleinden te gebruiken(opent in een nieuw venster), maar met beperkt succes vanwege de hoge mate van vrijheid. De hardware die we hier gebruiken is niet nieuw - de robothand die we gebruiken bestaat al 15 jaar - maar de softwarebenadering is dat wel.
Sinds mei 2017 proberen we een mensachtige robothand te trainen om de Rubik's Cube(opent in een nieuw venster)op te lossen. We stellen dit doel omdat we geloven dat het succesvol trainen van zo'n robothand om complexe manipulatietaken uit te voeren de basis legt voor robots voor algemeen gebruik. We hebben de Rubik's Cube in juli 2017 in simulatie opgelost. Maar vanaf juli 2018 konden we alleen een blok manipuleren op de robot. Nu hebben we ons oorspronkelijke doel bereikt.
De Rubik’s Cube helemaal opgelost. Deze video wordt in realtime afgespeeld en is op geen enkele manier bewerkt.
Het met één hand oplossen van een Rubik’s Cube is zelfs voor mensen een uitdagende taak en het kost kinderen meerdere jaren om de handigheid te leren die nodig is om het onder de knie te krijgen. Onze robot heeft zijn techniek echter nog niet helemaal onder de knie, want hij lost de Rubik’s Cube in 60% van de gevallen op (en in slechts 20% van de gevallen bij een maximale moeilijkheidsgraad(opent in een nieuw venster)).
We trainen neurale netwerken om de Rubik’s Cube op te lossen in een simulatie(opent in een nieuw venster) met behulp van versterkend leren en het algoritme van Kociemba(opent in een nieuw venster) voor het kiezen van de oplossingsstappen. A Domeinrandomisatie(opent in een nieuw venster) (opent in een nieuw venster)maakt het mogelijk om netwerken die alleen in simulatie zijn getraind, over te zetten naar een echte robot.

De grootste uitdaging waar we voor stonden was het creëren van omgevingen in simulaties die divers genoeg waren om de fysica van de echte wereld weer te geven. Factoren zoals wrijving, elasticiteit en dynamiek zijn ongelooflijk moeilijk te meten en te modelleren voor objecten die zo complex zijn als Rubik’s Cubesen of robothanden en we ontdekten dat domeinrandomisatie alleen niet genoeg is.
Om dit op te lossen, hebben we een nieuwe methode ontwikkeld, genaamd Automatic Domain Randomization (ADR), waarbij in simulaties steeds moeilijkere structuren worden gegenereerd. Hierdoor hebben we geen nauwkeurig praktijkmodel nodig en kunnen we de neurale netwerken die we in simulaties hebben ontdekt, toepassen in de praktijk.
ADR begint met een enkele, niet-willekeurige omgeving, waarin een neuraal netwerk leert om de Rubik’s Cube op te lossen. Naarmate het neurale netwerk beter wordt in de taak en een prestatiedrempel bereikt, wordt de mate van domeinrandomisatie automatisch verhoogd. Dit maakt de taak moeilijker, omdat het neurale netwerk nu moet leren om te generaliseren naar meer gerandomiseerde omgevingen. Het netwerk blijft leren totdat de prestatiedrempel opnieuw wordt overschreden, waarna meer randomisatie optreedt en het proces wordt herhaald.
Een van de parameters die we randomiseren is de grootte van de Rubik’s Cube (hierboven). ADR begint met een vaste grootte van de Rubik’s Cube en verhoogt geleidelijk het randomisatiebereik naarmate de training vordert. We passen dezelfde techniek toe op alle andere parameters, zoals de massa van de kubus, de wrijving van de robotvingers en de visuele oppervlaktematerialen van de hand. Het neurale netwerk moet dus leren om de Rubik’s Cube onder al die steeds moeilijkere omstandigheden op te lossen.
Voor domeinrandomisatie moesten we handmatig randomisatiebereiken specificeren, wat moeilijk is omdat te veel randomisatie het leren bemoeilijkt, maar te weinig randomisatie de transfer naar de echte robot belemmert. ADR lost dit op door de randomisatiebereiken in de loop van de tijd automatisch uit te breiden zonder menselijke tussenkomst. ADR maakt domeinkennis overbodig en maakt het eenvoudiger om onze methoden toe te passen op nieuwe taken. In tegenstelling tot handmatige domeinrandomisatie, houdt ADR de taak ook altijd uitdagend met training die nooit convergeert.
We vergeleken ADR met handmatige domeinrandomisatie op de block flipping taak, waar we al een sterke basislijnhadden. In het begin presteert ADR slechter wat betreft het aantal successen op de echte robot. Maar als ADR de entropie verhoogt, wat een maat is voor de complexiteit van de omgeving, verdubbelt de overdrachtsprestatie uiteindelijk ten opzichte van de basislijn - zonder menselijke afstemming.
Met behulp van ADR zijn we in staat om neurale netwerken te trainen in simulatie die de Rubik’s Cube kunnen oplossen met de echte robothand. Dit komt doordat ADR het netwerk blootstelt aan een eindeloze variëteit van gerandomiseerde simulaties. Het is deze blootstelling aan complexiteit tijdens de training die het netwerk voorbereidt op de overgang van simulatie naar de echte wereld, aangezien het moet leren om snel te identificeren en zich aan te passen aan de fysieke wereld waarmee het wordt geconfronteerd.
Om de grenzen van onze methode te testen, experimenteren we met verschillende verstoringen terwijl de hand de Rubik’s Cube oplost. Dit test niet alleen de robuustheid van ons besturingsnetwerk, maar ook ons visuele netwerk, dat we hier gebruiken om de positie en oriëntatie van de kubus te schatten.
We vinden dat ons systeem getraind met ADR verrassend robuust is m.b.t. verstoringen, ook al hebben we er nooit mee getraind: De robot kan de meeste salto's en gezichtsrotaties met succes uitvoeren onder alle geteste verstoringen, maar niet op topprestaties.
Wij geloven dat meta-leren(opent in een nieuw venster), of leren om te leren, een belangrijke voorwaarde is voor het bouwen van systemen voor algemene doeleinden, omdat het ze in staat stelt om zich snel aan te passen aan veranderende omstandigheden in hun omgeving. De hypothese achter ADR is dat een netwerk met een verhoogd geheugen in combinatie met een voldoende gerandomiseerde omgeving leidt tot opkomend meta-leren, waarbij het netwerk een leeralgoritme implementeert dat zichzelf in staat stelt om zijn gedrag snel aan te passen aan de omgeving waarin het wordt ingezet.C
Om dit systematisch te testen, meten we de tijd tot succes per kubusomwenteling (de kubus zo draaien dat een andere kleur naar boven wijst) voor ons neurale netwerk onder verschillende verstoringen, zoals het resetten van het geheugen van het netwerk, het resetten van de dynamica of het verbreken van een verbinding. We voeren deze experimenten uit in simulatie, waardoor we de gemiddelde prestaties over 10.000 proeven kunnen berekenen in een gecontroleerde omgeving.
In het begin, als het neurale netwerk met succes meer omwentelingen maakt, neemt elke opeenvolgende tijd tot het succes af omdat het netwerk leert zich aan te passen. Wanneer verstoringen worden toegepast (verticale grijze lijnen in de bovenstaande grafiek), zien we een piek in de tijd tot succes. Dit komt omdat de strategie die het netwerk gebruikt niet werkt in de veranderde omgeving. Het netwerk leert dan opnieuw de nieuwe omgeving kennen en we zien opnieuw dat de tijd tot succes afneemt tot de vorige basislijn.
We meten ook de faalkans en hebben dezelfde experimenten uitgevoerd voor gezichtsrotaties (het bovenste gezicht 90 graden met de klok mee of tegen de klok in draaien) en vinden hetzelfde patroon van aanpassing.D
Door onze netwerken te visualiseren, kunnen we begrijpen wat ze in het geheugen opslaan. Dit wordt steeds belangrijker naarmate de netwerken complexer worden.
Het geheugen van ons neurale netwerk wordt hierboven gevisualiseerd. We gebruiken een bouwsteen uit de interpreteerbaarheids-toolbox(opent in een nieuw venster), namelijk niet-negatieve matrixfactorisatie, om deze meerdimensionale vector in 6 groepen op te delen en aan elke groep een unieke kleur toe te kennen. Vervolgens tonen we de kleur van de momenteel dominante groep voor elke tijdstap.
We vinden dat elke geheugengroep een semantisch betekenisvol gedrag heeft. We kunnen bijvoorbeeld zien door alleen naar de dominante groep van het geheugen van het netwerk te kijken of het op het punt staat de kubus te draaien of de top met de klok mee te draaien voordat dit gebeurt.
De Rubik’s Cube oplossen met een robothand is nog steeds niet eenvoudig. Onze methode lost momenteel 20% van de tijd de Rubik's Cube op wanneer een maximaal moeilijke uitgangssituatie(opent in een nieuw venster) wordt toegepast die 26 gezichtsrotaties vereist. Voor eenvoudigere uitgangssituaties die 15 rotaties nodig hebben om ongedaan te maken, is het slagingspercentage 60%. Als de Rubik’s Cube valt of een time-out bereikt, beschouwen we de poging als mislukt. Ons netwerk is echter in staat om de Rubik’s Cube op te lossen vanuit elke beginconditie. Dus als de kubus valt, is het mogelijk om hem terug in de hand te leggen en verder te gaan met oplossen.
Over het algemeen vinden we dat ons neurale netwerk veel vaker faalt tijdens de eerste paar gezichtsrotaties en -omwentelingen. Dit is het geval omdat het neurale netwerk een evenwicht moet vinden tussen het oplossen van de Rubik’s Cube en het aanpassen aan de fysieke wereld tijdens die eerste rotaties en omwentelingen.
Om onze vooruitgang te meten en het probleem handelbaar te maken, hebben we aangepaste versies van kubussen gebouwd en ontworpen als opstapje naar het uiteindelijk oplossen van een gewone Rubik’s Cube.E.

Prototypes van Rubik’s Cube van links naar rechts: Gesloten kubus, Gezichtskubus, Volledige kubus, Giiker-(opent in een nieuw venster)kubus, gewone Rubik’s Cube.
Prototype | Positie + oriëntatie | Interne vrijheidsgraden (sensor) |
Vergrendelde kubus | Visie | 0 (geen sensor) |
Gezichtskubus | PhaseSpace | 2 (PhaseSpace) |
Volledige kubus | PhaseSpace | 6 (PhaseSpace) |
Giiker-kubus | Visie | 6 (ingebouwde sensoren) |
Gewone Rubik’s Cube | Visie | 6 (Visie) |
Wij geloven dat beweeglijkheid op menselijk niveau de weg is naar het bouwen van robots voor algemeen gebruik en we zijn enthousiast om in deze richting verder te gaan.
Als je wilt helpen bij het maken van steeds algemenere AI-systemen, zowel robotisch als virtueel, dan zijn wij op zoek naar jou!
Voetnoten
- A
We richten ons op de problemen die op dit moment moeilijk te beheersen zijn voor machines: perceptie en behendige manipulatie. Daarom trainen we onze neurale netwerken om de vereiste gezichtsrotaties en kubusomwentelingen te bereiken zoals gegenereerd door het algoritme van Kociemba.
- B
Ons werk is sterk verwant aan POET(opent in een nieuw venster) dat automatisch 2D-omgevingen genereert. Ons werk leert echter een gezamenlijk beleid over alle omgevingen, dat wordt overgedragen naar elke nieuw gegenereerde omgeving.
- C
Meer concreet stellen we dat een neuraal netwerk met eindige capaciteit dat getraind wordt op omgevingen met een onbegrensde complexiteit, het netwerk dwingt om een speciaal leeralgoritme te leren omdat het niet voor elke individuele omgeving oplossingen kan onthouden en er geen enkel robuust beleid bestaat dat onder alle randomisaties werkt.
- D
Raadpleeg ons artikel(opent in een nieuw venster) voor de volledige resultaten.
- E
De enige aanpassing die we hebben gemaakt, is dat we een klein stukje van de kleurrijke sticker van elk middelste blokje hebben uitgeknipt. Dit was nodig om de rotatiesymmetrie(opent in een nieuw venster)te doorbreken.
Auteurs
Dankbetuigingen
Met dank aan de volgende personen voor feedback op concepten van deze post en paper: 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 en Tao Xu.
Video: Peter Jordan (Director), Yvette Solis (Producer), Brooke Chan (producent)
Uitgever: Ashley Pilipiszyn
Ontwerp: Justin Jay Wang en Ben Barry
Fotografie: Eric Haines


