Hopp til hovedinnhold
OpenAI
Outstretched robot arm solving a Rubik's cube in its palm in front of a cloudy purple background

Foto: Eric Haines

Laster inn …

Vi har lært opp et par nevrale nettverk til å løse Rubiks kube med en menneskelignende robothånd. De nevrale nettverkene er helt opplært i simulering, med samme kode for forsterkende læring som OpenAI Five, samt en ny teknikk kalt Automatic Domain Randomization (ADR). Systemet kan håndtere situasjoner det aldri så under opplæring, for eksempel å bli vekket av en utstoppet sjiraff. Dette viser at forsterkende læring ikke bare er et verktøy for virtuelle oppgaver, men kan løse problemer i den fysiske verden som krever enestående fingernemhet.

Hendene våre lar oss løse en rekke oppgaver. I løpet av de siste 60 årene med robotikk har vanskelige oppgaver som mennesker har utført med hendene, krevd design av en tilpasset robot for hver oppgave(åpnes i et nytt vindu). Som et alternativ har man i tiår prøvd seg frem med robotmaskinvare bygget til generelle formål(åpnes i et nytt vindu), men med begrenset suksess på grunn av den høye frihetsgraden. Maskinvaren vi bruker er ikke ny. Robothånden vi bruker har eksistert de siste 15 årene, men programvaretilnærmingen er ny.

Siden mai 2017 har vi prøvd å lære opp en menneskelignende robothånd til å løse Rubiks kube(åpnes i et nytt vindu). Vi valgte dette målet fordi vi mener at vellykket opplæring av en slik robothånd til å gjøre komplekse manipuleringsoppgaver danner grunnlaget for roboter med generelt formål. Vi løste Rubiks kube i simulering i juli 2017. I juli 2018 kunne vi imidlertid bare manipulere en blokk på roboten. Nå har vi nådd det første målet vårt.

Rubiks kube løses helt. Denne videoen spilles av i sanntid og er ikke redigert.

Å løse en Rubiks kube med én hånd er en utfordrende oppgave selv for mennesker, og det tar barn flere år å oppnå fingernemheten som kreves for å mestre det. Roboten vår har fremdeles ikke perfeksjonert teknikken, da den løser Rubiks kube 60 % av tiden (og bare 20 % av tiden når den møter en blanding med maksimal vanskelighetsgrad(åpnes i et nytt vindu)).

Tilnærmelsen vår

Vi lærer opp nevrale nettverk til å løse Rubiks kube i simulering(åpnes i et nytt vindu) med forsterkende læring og Kociembas algoritme(åpnes i et nytt vindu) for å velge løsningstrinnene.A Med(åpnes i et nytt vindu) randomisering(åpnes i et nytt vindu) av domene, kan nettverk som bare læres opp i simulering, overføres til en fysisk robot.

A colorful collage of robotic arms

Den største utfordringen vi hadde, var å skape miljøer i simuleringer som var allsidige nok til å fange opp fysikken i den virkelige verden. Faktorer som friksjon, elastisitet og dynamikk er utrolig vanskelige å måle og modellere for gjenstander som er så komplekse som Rubiks kuber eller robothender, og vi oppdaget at bare randomisering av domene ikke er nok.

For å løse dette, utviklet vi en ny metode som kalles Automatic Domain Randomization (ADR), som uendelig genererer progressivt mer vanskelige miljøer i simulering.B Dette gjør at vi ikke trenger å ha en nøyaktig modell av den virkelige verden, og muliggjør overføring av nevrale nettverk som er opplært i simulering, til bruk i den virkelige verden.

ADR starter med et enkelt, ikke-randomisert miljø der et nevralt nettverk lærer å løse Rubiks kube. Når det nevrale nettverket blir bedre til oppgaven og når en ytelsesterskel, blir mengden randomisering av domene økt automatisk. Dette gjør oppgaven vanskeligere, siden det nevrale nettverket nå må lære å generalisere etter mer randomiserte miljøer. Nettverket fortsetter å lære til det igjen overgår ytelsesterskelen, da mer randomisering starter og prosessen gjentas.

Laster inn …

Én av parametrene vi randomiserer, er størrelsen til Rubiks kube (over). ADR starter med en fast størrelse av Rubiks kube og øker randomiseringsspekteret gradvis i løpet av opplæringen. Vi bruker samme teknikk for alle parametre, for eksempel massen til kuben, friksjonen til robotfingrene og de visuelle overflatematerialene til hånden. Det nevrale nettverket har dermed lært å løse Rubiks kube under alle disse stadig vanskeligere forholdene.

Laster inn …

Randomisering av domene krevde manuell spesifisering av randomiseringsspekter, som er vanskelig fordi for mye randomisering gjør læring vanskelig, men for lite randomisering hindrer overføring til den fysiske roboten. ADR løser dette ved å utvide randomiseringsspekter automatisk over tid, uten menneskelig innblanding. ADR fjerner behovet for domenekunnskap og gjør det enklere å bruke metodene våre for nye oppgaver. I motsetning til manuell randomisering av domene, sørger ADR også for at oppgaven hele tiden er utfordrende, og at opplæringen aldri stagnerer.

Vi sammenlignet ADR til manuell randomisering av domene for oppgaven med å flippe en blokk, der vi allerede hadde en sterk grunnlinje. I begynnelsen presterte ADR dårligere målt i antall vellykkede forsøk på den fysiske roboten. Men da ADS økte entropien, som er en måling av kompleksiteten til miljøet, ble den overførte ytelsen til slutt det dobbelte av grunnlinjen, uten menneskelig finjustering.

Analyse

Testing for robusthet

Ved å bruke ADR kan vi lære opp nevrale nettverk i simulering som kan løse Rubiks kube på den fysiske robothånden. Dette er fordi ADR eksponerer nettverket for en uendelig variasjon av randomiserte simuleringer. Det er denne eksponeringen for kompleksitet under opplæring som forbereder nettverket til å overføre fra simulering til den ekte verden, siden den må lære å raskt identifisere og justere seg etter den fysiske verdenen den konfronteres med.

Laster inn …

For å teste grensene til metoden vår, eksperimenterer vi med en rekke forstyrrelser mens hånden løser Rubiks kube. Ikke bare tester dette robustheten til kontrollnettverket, men det tester også synsnettverket, som vi bruker til å anslå kubens posisjon og retning.

Vi har oppdaget at systemet vårt opplært med ADR er overraskende robust mot forstyrrelser, selv om de ikke var en del av opplæringen: Roboten kan utføre de fleste flippinger og forsiderotasjoner under alle testede forstyrrelser, men ikke med optimal ytelse.

Fremvoksende metalæring

Vi mener at metalæring(åpnes i et nytt vindu), eller å lære å lære, er en viktig forutsetning for å bygge systemer med generelt formål, siden det gjør dem i stand til å raskt tilpasse seg etter endrede forhold i miljøene. Hypotesen bak ADR er at et nevralt nettverkt med hukommelse kombinert med et tilstrekkelig randomisert miljø fører til fremvoksende metalæring, der nettverket implementer en læringsalgoritme som gjør den i stand til å tilpasse atferden sin rakst etter miljøet det implementeres i.C

For å teste dette systematisk, måler vi tiden for å lykkes med hver kubeflipping (rotering av kuben slik at en annen farge er vendt opp) for det nevrale nettverket under forskjellige forstyrrelser, for eksempel tilbakestilling av nettverkets minne, tilbakestilling av dynamikken eller ødeleggelse av et ledd. Vi utfører disse eksperimentene i simulering, slik at vi kan måle gjennomsnittlig ytelse over 10 000 prøver under kontrollerte forhold.

Laster inn …

I begynnelsen, etter at det nevrale nettverket klarer flere flippinger, løser den oppgavenraskere fordi nettverket lærer å tilpasse seg. Når forstyrrelser tas i bruk (markert med vertikale grå linjer i diagrammet ovenfor), øker tiden det tar å gjennomføre en flipping. Dette er fordi strategien nettverket benytter, ikke fungerer i det endrede miljøet. Deretter lærer nettverket på nytt om det nye miljøet, og vi ser igjen at tid for suksess reduseres til den tidligere grunnlinjen.

Vi måler også feilsannsynligheten og utfører samme eksperimenter for forsiderotasjoner (rotering av toppsiden 90 grader med eller mot klokken) og ser de samme mønstrene for tilpasning.D

Å forstå de nevrale nettverkene våre

Visualisering av nettverkene våre lar oss forstå hva de lagrer i minnet. Dette blir stadig viktigere når nettverket blir mer komplekst.

Laster inn …

Minnet til det nevrale nettverket vårt visualiseres ovenfor. Vi bruker en byggeblokk fra fortolkningsverktøykassen(åpnes i et nytt vindu), nemlig ikke-negativ matrisefaktorisering, for å kondensere denne høydimensjonale vektoren til seks grupper og tilordne hver en unik farge. Deretter viser vi fargen til den gjeldende dominante gruppen for hvert tidstrinn.

Vi har oppdaget at hver minnegruppe har en semantisk betydningsfull atferd knyttet til den. Vi kan for eksempel fastslå ved å bare se på den dominante gruppen av nettverkets minne, hvorvidt den er i ferd med å spinne kuben eller rotere toppen med klokken før det skjer.

Utfordringer

Det er fremdeles ikke enkelt å løse Rubiks kube med en robothånd. Metoden vår løser nå Rubiks kube 20 % av tiden når den møter en blanding med maksimal vanskelighetsgrad(åpnes i et nytt vindu), som krever 26 rotasjoner av forsiden. For enklere blandinger som krever 15 rotasjoner, er suksessraten 60 %. Når Rubiks kube slippes eller ved tidsavbrudd, anser vi forsøket som mislykket. Nettverket vårt er imidlertid i stand til å løse Rubiks kube fra hvilken som helst opprinnelige tilstand. Så hvis kuben slippes, er det mulig å legge den tilbake i hånden og forsette oppgaven.

Vi ser generelt at det er mye mer sannsynlig at det nevrale nettverket vårt mislykkes i løpet av de første forsiderotasjonene og kubeflippingene. Dette er tilfelle fordi det nevrale nettverket må balansere løsing av Rubiks kube med tilpasning til den fysiske verden under disse tidligere rotasjonene og flippingene.

Bak kulissene: Prototyper for Rubiks kube

For å referansemåle fremdriften og gjøre problemet sporbart, bygde og designet vi egendefinerte versjoner av kuber som grunnlag for å til slutt løse en vanlig Rubiks kube.E

Openai Robotics Rubiks Prototypes

Prototyper av Rubiks kube, fra venstre til høyre: Låst kube, ansiktskube, full kube, Giiker(åpnes i et nytt vindu)-kube, vanlig Rubiks kube.

Prototype

Posisjon + orientering

Intern frihetsgrad (sensor)

Låst kube

Vision

0 (ingen sensor)

Ansiktskube

PhaseSpace

2 (PhaseSpace)

Full kube

PhaseSpace

6 (PhaseSpace)

Giiker-kube

Vision

6 (innebygde sensorer)

Vanlig Rubiks kube

Vision

6 (syn)

Neste trinn

Vi mener at fingernemhet på menneskenivå er et viktig skritt på veien mot å bygge roboter med generell anvendelighet, og vi gleder oss til å jobbe videre i denne retningen.

Hvis du vil bidra til å lage AI-systemer med stadig større generell anvendelighet, enten roboter eller virtuelle, ansetter vi nå nye medarbeidere!

Fotnoter

  1. A

    Vi fokuserer på problemer som for tiden er vanskelige for maskiner å mestre: persepsjon og fingernemhet. Derfor lærer vi opp de nevrale nettverkene våre til å oppnå de nødvendige forsiderotasjonene og kubeflippingene som genereres av Kociembas algoritme.

  2. B

    Arbeidet vårt er sterkt knyttet til POET(åpnes i et nytt vindu), som genererer 2D-miljøer automatisk. Arbeidet vårt lærer imidlertid en samlet strategi for alle miljøer, som overføres til hvilket som helst nylig generert miljø.

  3. C

    Mer konkret er hypotesen vår at et nevralt nettverk med begrenset kapasitet opplært i miljøer med ubundet kompleksitet tvinger nettverket til å lære en læringsalgoritme med et spesielt formål, siden den ikke kan huske løsninger for hver enkelt miljø, og det ikke finnes én enkelt robust strategi som fungerer for alle randomiseringer.

  4. D

    Se artikkelen(åpnes i et nytt vindu) vår for alle resultatene.

  5. E

    Den eneste endringen vi gjorde, var å klippe bort en liten del av det fargerike klistremerket til hver midtre kube. Dette var nødvendig for å bryte rotasjonssymmetrien(åpnes i et nytt vindu).

Forfattere

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 og Lei Zhang

Anerkjennelse

Takk til følgende for tilbakemelding på utkastet av dette innlegget og artikkelen: 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 og Tao Xu.

Video: Peter Jordan (direktør), Yvette Solis (produsent), Brooke Chan (produsent)

Redaktør: Ashley Pilipiszyn

Design: Justin Jay Wang og Ben Barry

Fotografi: Eric Haines