Gå direkt till huvudinnehåll
OpenAI
Laddar …

Vi har tränat ett par neurala nätverk i att lösa Rubiks kub med en människoliknande robothand. De neurala nätverken tränas helt genom simulering med hjälp av samma kod för förstärkningsinlärning som OpenAI Five i kombination med en ny teknik som kallas ADR (Automatic Domain Randomization – automatisk domänrandomisering). Systemet kan hantera situationer som det inte upplevt under träningen, som att bli petat på med en leksaksgiraff. Detta visar att förstärkningsinlärning inte bara är ett verktyg för virtuella uppgifter, utan också kan lösa problem i den fysiska världen som kräver oerhört stor fingerfärdighet.

Vi människor kan lösa en rad olika uppgifter med våra händer. Robottekniken har utvecklats under de senaste 60 åren, men för att hantera svåra uppgifter som människor klarar att lösa med sina händer, har det krävs att man designar en robot som är byggd speciellt för varje enskild uppgift(öppnas i ett nytt fönster). Som en alternativ lösning har man under flera decennier försökt använda robotmaskinvara för allmänna ändamål(öppnas i ett nytt fönster), men med begränsad framgång då de har en hög frihetsgrad. Den maskinvara vi använder här är inte ny – robothanden har funnits i 15 år – men sättet att arbeta med programvaran är nytt.

Sedan maj 2017 har vi försökt träna en människoliknande robothand i att lösa Rubiks kub(öppnas i ett nytt fönster). Vi har satt upp det här målet för att vi tror att om man framgångsrikt kan träna en sådan robothand att genomföra komplexa uppgifter lägger vi grunden för robotar för allmänna ändamål. Vi löste Rubiks kub i simulering i juli 2017. Men i juli 2018 kunde vi bara flytta ett block med roboten. Nu har vi uppnått vårt ursprungliga mål.

Hela Rubiks kub löst. Den här videofilmen visar hur kuben löses i realtid och har inte redigerats på något sätt.

Att lösa Rubiks kub med en hand är en utmanande uppgift även för oss människor. För barn tar det flera år innan de har den fingerfärdighet som krävs för att bemästra kuben. Vår robot har fortfarande inte bemästrat tekniken då den löser Rubiks kub vid 60 procent av alla försök (och endast 20 procent av alla försök vid en maximalt svår(öppnas i ett nytt fönster) startposition).

Vårt tillvägagångssätt

Vi tränar neurala nätverk att lösa Rubiks kub i simulering(öppnas i ett nytt fönster) med hjälp av förstärkningsinlärning och Kociembas algoritm(öppnas i ett nytt fönster) för att välja lösningsstegen.A Med(öppnas i ett nytt fönster) domänrandomisering(öppnas i ett nytt fönster) kan nätverk som endast tränats i simulering överföras till en verklig robot.

Ett färgstarkt collage av robotarmar

Den största utmaning vi ställdes inför var att skapa miljöer i simulering med tillräckligt stor mångfald för att återspegla de fysiska förutsättningarna i verkligheten. Faktorer som friktion, elasticitet och dynamik är oerhört svåra att mäta och modellera för så komplexa objekt som Rubiks kub eller för robothänder, och vi konstaterade att domänrandomisering i sig inte räcker.

För att hantera detta utvecklade vi en ny metod som kallas ADR (Automatic Domain Randomization – automatisk domänrandomisering), som oupphörligt genererar allt mer komplicerade miljöer i simulering.B Det gör att vi inte behöver ha en korrekt modell av verkligheten och det möjliggör överföring av de neurala nätverk som lärts in i simulering för tillämpning i verkligheten.

ADR utgår från en enda, icke-randomiserad miljö där ett neuralt nätverk lär sig att lösa Rubiks kub. När det neurala nätverket blir bättre på uppgiften och når en prestandatröskel ökas mängden domänrandomisering automatiskt. Det gör uppgiften svårare, eftersom det neurala nätverket nu måste lära sig att generalisera till mer randomiserade miljöer. Nätverket fortsätter att lära sig tills det på nytt överskrider prestandatröskeln, när mer randomisering tar vid och processen upprepas.

Laddar …

En av de parametrar vi randomiserar är storleken på Rubiks kub (ovan). ADR börjar med en fast storlek på Rubiks kub och ökar gradvis randomiseringsintervallet när träningen fortskrider. Vi tillämpar samma teknik på alla övriga parametrar, som kubens massa, robotfingrarnas friktion och handens visuella ytmaterial. På det här sättet lär sig de neurala nätverken att lösa Rubiks kub under dessa allt svårare förhållanden.

Laddar …

Domänrandomiseringen gjorde att vi behövde ange randomiseringsintervall, vilket är svårt eftersom för mycket randomisering gör inlärningen komplicerad, men för lite randomisering utgör ett hinder vid överföringen till den verkliga roboten. ADR löser problemet genom att automatiskt utöka randomiseringsintervallen efter hand utan mänskligt ingripande. Med ADR krävs ingen domänkunskap och det blir enklare att tillämpa våra metoder på nya uppgifter. I motsats till manuell domänrandomisering ser ADR till att uppgiften alltid är utmanande och träningen når aldrig konvergens.

Vi jämförde ADR med manuell domänrandomisering på uppgiften att vända en kub, där vi redan hade en stark baslinje. I början presterar ADR sämre mätt som antal lyckade försök på den verkliga roboten. Men när ADR ökar entropin, vilket är ett mått på miljöns komplexitet, fördubblas överföringsprestanda så småningom jämfört med baslinjen – utan någon mänsklig finjustering.

Analys

Test av stabilitet

Med hjälp av ADR kan vi träna neurala nätverk i simulering så att de kan lösa Rubiks kub med robothanden i verkligheten. Det beror på att ADR exponerar nätverket för en oändlig variation av randomiserade simuleringar. Det är den här exponeringen för komplexitet under träningen som förbereder nätverket för överföring från simuleringen till den verkliga världen, eftersom det måste lära sig att snabbt identifiera och anpassa sig till den fysiska värld det möter.

Laddar …

För att testa gränserna för vår metod experimenterar vi med olika störningar när handen löser Rubiks kub. Detta är inte bara ett test av hur stabilt vårt kontrollnätverk är, utan också av vårt synnätverk, som vi i det här fallet använder för att beräkna kubens position och riktning.

Vi konstaterar att vårt system som tränats med ADR är överraskande stabilt när det gäller störningar även om vi aldrig tränat med dem: Roboten klarar av att utföra de flesta vridningar och lagerrotationer under alla testade störningsmoment, om än inte med högsta prestanda.

Emergent metainlärning

Vi anser att metainlärning(öppnas i ett nytt fönster), eller inlärning i att lära sig, är en viktig förutsättning för att bygga system för allmänna ändamål, eftersom det gör att de snabbt kan anpassa sig till föränderliga situationer i olika miljöer. Hypotesen bakom ADR är att ett minnesförstärkt nätverk i kombination med en tillräckligt randomiserad miljö leder till emergent metainlärning, där nätverket implementerar en inlärningsalgoritm som gör att det snabbt kan anpassa sitt beteende till den miljö där det används.C

För att testa detta systematiskt mäter vi tiden till lösning per kubvridning (rotera kuben så att en annan färg vänds uppåt) för vårt neurala nätverk vid olika störningar, som att återställa nätverkets minne eller bryta en led. Vi utför de här experimenten i simulering, vilket gör att vi kan beräkna genomsnittsprestanda för 10 000 försök i en kontrollerad miljö.

Laddar …

I början, när det neurala nätverket lyckas klara fler vridningar, blir tiden till lösning kortare vid varje försök eftersom nätverket lär sig att anpassa sig. När störningar tillämpas (vertikala grå linjer i grafiken ovan) ser vi att tiden till lösning ökar kraftigt. Det beror på att den strategi nätverket använder inte fungerar i den förändrade miljön. Nätverket lär sig sedan den nya miljön och vi ser än en gång att tiden till lösning blir kortare och närmar sig den tidigare baslinjen.

Vi mäter också sannolikheten för misslyckande och utförde samma experiment för rotation av lager (att rotera det övre lagret 90 grader medurs eller moturs) och noterar samma anpassningsmönster.D

Så förstår vi våra neurala nätverk

Genom att visualisera våra nätverk kan vi förstå vad de lagrar i minnet. Detta blir allt viktigare när nätverkens komplexitet ökar.

Laddar …

Vårt neurala nätverks minne visualiseras ovan. Vi använder en byggkloss från verktygslådan för tolkning(öppnas i ett nytt fönster), närmare bestämt icke-negativ matrisfaktorisering, för att komprimera denna högdimensionella vektor till sex grupper och tilldela var och en sin egen unika färg. Vi visar sedan färgen för den för närvarande dominanta gruppen för varje tidssteg.

Vi konstaterar att varje minnesgrupp förknippas med ett semantiskt meningsfullt beteende. Genom att enbart titta på den dominanta gruppen i nätverkets minne kan vi exempelvis säga om det kommer att vrida kuben eller rotera det översta lagret medurs innan det sker.

Utmaningar

Det är fortfarande inte enkelt att lösa Rubiks kub med en robothand. Vår metod löser för närvarande Rubiks kub vid 20 procent av tillfällena när en maximalt svår startposition(öppnas i ett nytt fönster), som kräver 26 lagerrotationer, tillämpas. För enklare startpositioner som det krävs 15 rotationer för att lösa är lyckas handen vid 60 procent av tillfällena. När handen tappar kuben eller når en tidsgräns betraktar vi försöket som misslyckat. Vårt nätverk klarar dock att lösa Rubiks kub från alla starttillstånd. Så om handen tappar kuben kan man placera den i handen igen och fortsätta arbetet med att lösa den.

Generellt märker vi att det är betydligt mer sannolikt att vårt neurala nätverk misslyckas under de första lagerrotationerna och vridningarna. Anledningen till detta är att det neurala nätverket måste hitta en balans mellan att lösa Rubiks kub och att anpassa sig till den fysiska världen under de första rotationerna och vridningarna.

Bakom kulisserna: Prototyper av Rubiks kub

För att kunna mäta våra framsteg och göra problemet lätthanterligt byggde och designade vi anpassade versioner av kuber som olika steg mot att i slutändan lösa en vanlig Rubiks kub.E

Openai Robotics Rubiks Prototypes

Prototyper av Rubiks kub, från vänster till höger: Låst kub, kub med enhetliga sidor, full kub, Giiker(öppnas i ett nytt fönster)-kub, vanlig Rubiks kub.

Prototyp

Position + riktning

Interna frihetsgrader (sensor)

Låst kub

Vision

0 (Ingen sensor)

Kub med enhetliga sidor

PhaseSpace

2 (PhaseSpace)

Full kub

PhaseSpace

6 (PhaseSpace)

Giiker-kub

Vision

6 (Inbyggda sensorer)

Vanlig Rubiks kub

Vision

6 (Vision)

Nästa steg

Vi menar att robotar för allmänna ändamål är på god väg att uppnå fingerfärdighet på mänsklig nivå och vi ser fram emot att kunna driva på utvecklingen i den riktningen.

Om du vill bidra i arbetet med att utveckla allt mer generella AI-system – som kan vara robotbaserade eller virtuella – så söker vi medarbetare!

Fotnoter

  1. A

    Vi fokuserar på de problem som för närvarande är för svåra för maskiner att bemästra: perception och fingerfärdighet. Därför tränar vi våra neurala nätverk i att kunna uppnå det antal lagerrotationer och kubvridningar som genereras av Kociembas algoritm.

  2. B

    Vårt arbete är starkt kopplat till POET(öppnas i ett nytt fönster), som automatiskt genererar 2D-miljöer. I vårt arbete lärs dock en gemensam policy för alla miljöer in, som överförs till nya genererade miljöer.

  3. C

    Mer konkret är vår hypotes att ett neuralt nätverk med begränsad kapacitet som är tränad på miljöer med obegränsad komplexitet tvingar nätverket att lära sig en specialiserad algoritm eftersom det inte kan memorera lösningar för varje enskild miljö och det finns ingen enskild stabil policy som fungerar för alla randomiseringar.

  4. D

    Se vår rapport(öppnas i ett nytt fönster) för de fullständiga resultaten.

  5. E

    Den enda ändring som gjordes var att klippa ut en liten del av färgklisterlappen på varje mittbit på kuben. Detta var nödvändigt för att bryta rotationssymmetrin(öppnas i ett nytt fönster).

Författare

OpenAI, Ilge Akkaya, Marcin Andrychowicz, Maciek Chociej, Mateusz Litwin, Bob McGrew, Arthur Petron, Alex Paino, Matthias Plappert, Glenn Powell, Raphael Ribas, Jonas Schneider, Nikolas Tezak, Jerry Tworek, Peter Welinder, Lilian Weng, Qiming Yuan, Wojciech Zaremba, Lei Zhang

Erkännanden

Tack till följande personer för synpunkter på utkast av det här inlägget och rapporten: 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 och Tao Xu.

Video: Peter Jordan (regissör), Yvette Solis (producent), Brooke Chan (producent)

Redigerare: Ashley Pilipiszyn

Design: Justin Jay Wang och Ben Barry

Foto: Eric Haines