Rubikin kuution ratkaiseminen robottikädellä

Valokuva: Eric Haines
Olemme kouluttaneet kaksi neuroverkkoa ratkaisemaan Rubikin kuution ihmisen käden kaltaisella robottikädellä. Neuroverkot koulutetaan kokonaan simulaatiossa käyttäen samaa vahvistusoppimiskoodia kuin OpenAI Five yhdistettynä uuteen tekniikkaan nimeltä automaattinen toimialueen satunnaistaminen (Automatic Domain Randomization, ADR). Järjestelmä pystyy käsittelemään tilanteita, joita se ei ole koskaan ennen nähnyt koulutuksen aikana, kuten esimerkiksi kun sitä tönäistään täytetyllä kirahvilla. Se osoittaa, että vahvistusoppiminen ei ole vain virtuaalisten tehtävien työkalu, vaan sillä voidaan ratkaista fyysisen maailman ongelmia, jotka vaativat ennennäkemätöntä kätevyyttä.
Ihmisille kädet antavat meille mahdollisuuden ratkaista monenlaisia tehtäviä. Viimeisten 60 vuoden aikana ihmisten kiinteillä käsillään suorittamat vaikeat tehtävät ovat robotiikassa edellyttäneet räätälöidyn robotin suunnittelua kutakin tehtävää(avautuu uudessa ikkunassa) varten. Vaihtoehtoisesti ihmiset ovat vuosikymmeniä yrittäneet käyttää yleiskäyttöistä robottilaitteistoa(avautuu uudessa ikkunassa), mutta rajoitetulla menestyksellä vaadittavan korkean vapausasteen vuoksi. Erityisesti käyttämämme laitteisto ei ole uutta, koska robottikäsi on ollut olemassa jo viimeiset 15 vuotta, mutta ohjelmistopohjainen lähestymistapamme on.
Olemme yrittäneet kouluttaa ihmisen käden kaltaista robottikättä ratkaisemaan Rubikin kuution(avautuu uudessa ikkunassa) toukokuusta 2017 lähtien. Asetimme tämän tavoitteen, koska uskomme, että onnistuessaan tällaisen robottikäden kouluttaminen monimutkaisiin manipulointitehtäviin luo perustan yleiskäyttöisille roboteille. Ratkaisimme Rubikin kuution simulaatiossa heinäkuussa 2017. Heinäkuussa 2018 pystyimme kuitenkin käsittelemään robotilla vain lohkoa. Nyt olemme saavuttaneet alkuperäisen tavoitteemme.
Rubikin kuution täydellinen ratkaisu. Tämä video toistetaan reaaliajassa eikä sitä ole editoitu millään tavalla.
Rubikin kuution ratkaiseminen yhdellä kädellä on haastava tehtävä jopa ihmisille, ja lapsilla kestää useita vuosia oppia tarvittava kätevyys sen hallitsemiseksi. Robottimme ei kuitenkaan ole vielä hionut tekniikkaansa täydelliseksi, sillä se ratkaisee Rubikin kuution 60 % ajasta (ja vain 20 % ajasta maksimaalisen vaikeissa(avautuu uudessa ikkunassa) sekoitustehtävissä).
Koulutamme neuroverkkoja ratkaisemaan Rubikin kuution simulaatiossa(avautuu uudessa ikkunassa) käyttämällä vahvistusoppimista ja Kociemban algoritmia(avautuu uudessa ikkunassa) ratkaisuvaiheiden valitsemiseen.A Toimialueen(avautuu uudessa ikkunassa) satunnaistaminen(avautuu uudessa ikkunassa) mahdollistaa pelkästään simulaatiossa koulutettujen verkkojen siirtämisen oikealle robotille.

Suurin haasteemme oli luoda simulaatioympäristöjä, jotka olisivat riittävän monipuolisia tallentamaan todellisen maailman fysiikkaa. Kitkan, elastisuuden ja dynamiikan kaltaisten tekijöiden mittaaminen ja mallintaminen on uskomattoman vaikeaa Rubikin kuutioiden tai robottikäsien kaltaisille monimutkaisille kappaleille, ja havaitsimme, että pelkkä toimialueiden satunnaistaminen ei riitä.
Sen ratkaisemiseksi kehitimme uuden menetelmän nimeltä automaattinen toimialueen satunnaistaminen (Automatic Domain Randomization, ADR), joka luo simulaatiossa loputtomasti yhä vaikeampia ympäristöjä.B Se vapauttaa meidät tarkasta todellisen maailman mallista ja mahdollistaa simulaatiossa opittujen neuroverkkojen siirtämisen todelliseen maailmaan.
ADR alkaa yhdellä, satunnaistamattomalla ympäristöllä, jossa neuroverkko oppii ratkaisemaan Rubikin kuution. Kun neuroverkko paranee tehtävässä ja saavuttaa suorituskykykynnyksen, toimialueen satunnaistamisen määrä kasvaa automaattisesti. Se tekee tehtävästä vaikeamman, koska neuroverkon on nyt opittava yleistämään satunnaisempiin ympäristöihin. Verkko jatkaa oppimista, kunnes se ylittää jälleen suorituskykykynnyksen, jolloin satunnaistamista lisätään ja prosessi toistetaan.
Yksi satunnaistettavista parametreista on Rubikin kuution koko (yllä). ADR alkaa kiinteällä Rubikin kuution koolla ja satunnaisuusalue kasvaa vähitellen harjoittelun edetessä. Käytämme samaa tekniikkaa kaikkiin muihin parametreihin, kuten kuution massaan, robotin sormien kitkaan ja käden visuaalisiin pintamateriaaleihin. Neuroverkon on siis opittava ratkaisemaan Rubikin kuutio kaikissa näissä yhä vaikeammissa olosuhteissa.
Toimialueiden satunnaistaminen edellytti satunnaistamisalueiden manuaalista määrittämistä, mikä on vaikeaa, koska liika satunnaistaminen vaikeuttaa oppimista, mutta liian vähäinen satunnaistaminen estää siirtoa oikeaan robottiin. ADR ratkaisee asian laajentamalla satunnaistamisalueita automaattisesti ajan kuluessa ilman ihmisen puuttumista asiaan. ADR poistaa toimialatietämyksen tarpeen ja yksinkertaistaa menetelmiemme soveltamista uusiin tehtäviin. Manuaalisesta toimialueen satunnaistamisesta poiketen ADR pitää tehtävän aina haastavana, koska koulutus ei koskaan kehity kohti tiettyä lopputulosta.
Vertasimme ADR:ää manuaaliseen toimialueiden satunnaistamiseen lohkojen kääntötehtävässä, jossa meillä oli jo vahva lähtötaso. Alussa ADR suoriutuu huonommin onnistumisten määrässä oikealla robotilla. Mutta kun ADR lisää entropiaa, joka on ympäristön monimutkaisuuden mitta, siirtosuorituskyky lopulta kaksinkertaistuu perustasoon verrattuna, mutta ilman ihmisen tekemää säätöä.
ADR:n avulla voimme kouluttaa simulaatiossa neuroverkkoja, jotka pystyvät ratkaisemaan Rubikin kuution oikealla robotin kädellä. Se johtuu siitä, että ADR altistaa verkon loputtomalle määrälle satunnaistettuja simulaatioita. Juuri tämä altistuminen monimutkaisuudelle koulutuksen aikana valmistaa verkkoa siirtymään simulaatiosta todelliseen maailmaan, koska sen on opittava tunnistamaan ja sopeutumaan nopeasti mihin tahansa fyysisessä maailmassa, jonka kanssa se kohtaa.
Menetelmämme rajojen testaamiseksi kokeilemme erilaisia häiriöitä käden ratkaistessa Rubikin kuutiota. Se ei ainoastaan testaa ohjausverkkomme kestävyyttä vaan myös näköverkkoamme, jota käytämme tässä kuution sijainnin ja suunnan arvioimiseen.
Havaitsimme, että ADR:llä koulutettu järjestelmämme on yllättävän häiriösietoinen, vaikka emme koskaan harjoitelleet niillä: Robotti pystyy suorittamaan useimmat käännöt ja pinnan kiertoliikkeet onnistuneesti kaikilla testatuilla häiriöillä, vaikkakaan ei huipputeholla.
Uskomme, että metaoppiminen(avautuu uudessa ikkunassa) eli oppimaan oppiminen on tärkeä edellytys yleiskäyttöisten järjestelmien rakentamiselle, koska se mahdollistaa niiden nopean sopeutumisen muuttuviin ympäristöolosuhteisiin. ADR:n taustalla oleva hypoteesi on, että muistilla täydennetty verkko yhdistettynä riittävän satunnaistettuun ympäristöön johtaa nousevaan metaoppimiseen, jossa verkko toteuttaa oppimisalgoritmin. Sen avulla se pystyy nopeasti mukauttamaan toimintaansa ympäristöön, jossa se on käytössä.C
Tämän systemaattiseksi testaamiseksi mittaamme neuroverkon onnistumisajan kuution kääntämistä kohden (kuution kääntäminen siten, että eri väri on ylöspäin) erilaisten häiriötekijöiden alaisena, kuten verkon muistin nollaamisen, dynamiikan nollaamisen tai nivelen rikkoutumisen yhteydessä. Suoritamme näitä kokeita simulaatiossa, minkä ansiosta voimme saavuttaa keskimääräisen suorituskyvyn yli 10 000 kokeella kontrolloidussa ympäristössä.
Alussa, kun neuroverkko onnistuu suorittamaan enemmän kääntöjä, jokainen peräkkäinen onnistumisaika lyhenee, koska verkko oppii sopeutumaan. Kun käytetään häiriötekijöitä (pystysuuntaiset harmaat viivat yllä olevassa kaaviossa), onnistumiseen kuluva aika pidentyy. Se johtuu siitä, että verkon käyttämä strategia ei toimi muuttuneessa ympäristössä. Verkko oppii sitten uudelleen uudesta ympäristöstä ja näemme jälleen onnistumisajan lyhenevän edelliseen lähtötasoon.
Mittasimme myös vikaantumisen todennäköisyyttä ja suoritimme samat kokeet pintojen kierroille (yläpinnan kiertäminen 90 astetta myötä- tai vastapäivään) ja havaitsimme saman mukautumismallin.D
Verkkojemme visualisointi auttaa meitä ymmärtämään, mitä ne tallentavat muistiinsa. Tästä tulee yhä tärkeämpää verkkojen monimutkaistuessa.
Neuroverkkomme muisti on visualisoitu yllä. Käytämme tulkittavuustyökalupakin rakennusosaa(avautuu uudessa ikkunassa), nimittäin ei-negatiivista matriisifaktorointia, tiivistääksemme tämän moniulotteisen vektorin kuuteen ryhmään ja antaaksemme kullekin oman värin. Sitten näytämme kulloinkin hallitsevan ryhmän värin jokaiselle aika-askeleelle.
Havaitsemme, että jokaisella muistiryhmällä on siihen liittyvä semanttisesti merkityksellinen käyttäytyminen. Voimme esimerkiksi selvittää tarkastelemalla vain verkon muistin hallitsevaa ryhmää, aikooko se pyörittää kuutiota tai kiertää sen yläosaa myötäpäivään ennen kuin se tapahtuu.
Rubikin kuution ratkaiseminen robottikädellä ei ole vieläkään helppoa. Menetelmämme ratkaisee Rubikin kuution tällä hetkellä 20 % ajasta, kun käytetään maksimaalista vaikeutta vaativaa sekoitustehtävää(avautuu uudessa ikkunassa), joka vaatii 26 pintakiertoa. Yksinkertaisemmissa sekoitusliikkeissä, joissa peruuttamiseen tarvitaan 15 kierrosta, onnistumisprosentti on 60 %. Katsomme yrityksen epäonnistuneeksi, kun Rubikin kuutio pudotetaan tai aikalisä täyttyy. Verkkomme pystyy kuitenkin ratkaisemaan Rubikin kuution mistä tahansa alkutilasta. Joten jos kuutio putoaa, sen voi laittaa takaisin käteen ja jatkaa ratkaisemista.
Yleensä huomaamme, että neuroverkkomme vikaantuu paljon todennäköisemmin muutamien ensimmäisten pintakiertojen ja kääntöjen aikana. Se johtuu siitä, että neuroverkon on tasapainotettava Rubikin kuution ratkaisemista ja sopeutumista fyysiseen maailmaan näiden varhaisten kiertojen ja kääntöjen aikana.
Jotta voisimme vertailla edistymistämme ja tehdä ongelmasta helpommin ratkaistavan, rakensimme ja suunnittelimme räätälöityjä versioita kuutioista välivaiheena kohti tavallisen Rubikin kuution ratkaisemista.E

Rubikin kuution prototyypit vasemmalta oikealle: Lukittu kuutio, pintakuutio, kokokuutio, Giiker(avautuu uudessa ikkunassa)-kuutio, tavallinen Rubikin kuutio.
Prototyyppi | Asento + suunta | Sisäiset vapausasteet (anturi) |
Lukittu kuutio | Näkymä | 0 (ei anturia) |
Pintakuutio | PhaseSpace | 2 (PhaseSpace) |
Kokokuutio | PhaseSpace | 6 (PhaseSpace) |
Giiker-kuutio | Näkymä | 6 (sisäänrakennetut anturit) |
Tavallinen Rubikin kuutio | Näkymä | 6 (Näkymä) |
Uskomme, että ihmistä vastaava kätevyystaso vie kohti yleiskäyttöisten robottien rakentamista, ja olemme innoissamme voidessamme viedä sitä siihen suuntaan.
Jos haluat auttaa tekemään yhä yleisempiä tekoälyjärjestelmiä, olivatpa ne sitten robotti- tai virtuaalipohjaisia, haemme uusia työntekijöitä!
Alaviitteet
- A
Keskitymme ongelmiin, joita koneiden on tällä hetkellä vaikea hallita: havaintokykyyn ja taitavaan manipulointiin. Siksi koulutamme neuroverkkojamme saavuttamaan Kociemban algoritmin luomat vaaditut pintakierrot ja kuutioiden käännöt.
- B
Työmme liittyy vahvasti POET(avautuu uudessa ikkunassa)-ohjelmaan, joka luo automaattisesti 2D-ympäristöjä. Työmme oppii kuitenkin yhteisen käytännön kaikissa ympäristöissä, joka siirtyy kaikkiin uusiin ympäristöihin.
- C
Konkreettisemmin sanottuna oletamme, että rajallisen kapasiteetin omaava neuroverkko, jota koulutetaan rajattoman monimutkaisissa ympäristöissä, pakottaa verkon oppimaan erityistarkoituksen mukaisen oppimisalgoritmin, koska se ei pysty muistamaan ratkaisuja jokaiselle yksittäiselle ympäristölle eikä ole olemassa yhtä vankkaa käytäntöä, joka toimisi kaikissa satunnaistamistilanteissa.
- D
Täydelliset tulokset ovat saatavana julkaisustamme(avautuu uudessa ikkunassa).
- E
Ainoa tekemämme muutos oli pienen palan leikkaaminen pois jokaisen keskimmäisen kuution värikkäästä tarrasta. Se oli välttämätöntä rotaatiosymmetrian(avautuu uudessa ikkunassa) rikkomiseksi.
Tekijät
Kiitokset
Kiitos seuraaville palautteesta tämän kirjoituksen ja artikkelin luonnoksista: 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 ja Tao Xu.
Video: Peter Jordan (ohjaaja), Yvette Solis (tuottaja), Brooke Chan (tuottaja)
Editori: Ashley Pilipiszyn
Suunnittelu: Justin Jay Wang ja Ben Barry
Valokuvaus: Eric Haines


