Przejdź do treści głównej
OpenAI

15 października 2019

Znaczny krok

Układanie kostki Rubika przy użyciu ręki robota

Wyciągnięta ręka robota układająca kostkę Rubika w dłoni na tle zachmurzonego fioletowego tła

Zdjęcie: Eric Haines

Ładowanie…

Wytrenowaliśmy parę sieci neuronowych, aby nauczyły się układać kostkę Rubika przy użyciu ręki robota podobnej do ludzkiej. Sieci neuronowe zostały wytrenowane w całości w symulacji przy użyciu tego samego kodu uczenia przez wzmacnianie, co w przypadku modelu OpenAI Five⁠, oraz nowej techniki o nazwie automatyczna randomizacji domeny (Automatic Domain Randomization, ADR). System potrafi radzić sobie w sytuacjach, których nie napotkał podczas treningu, takimi jak trącenie przez pluszową żyrafę⁠. Pokazuje to, że uczenie przez wzmacnianie jest nie tylko narzędziem do zadań wirtualnych, ale pozwala też rozwiązywać problemy w świecie fizycznym wymagające niespotykanej zręczności.

Ręce pozwalają ludziom wykonywać wiele różnych zadań. Przez ostatnie 60 lat robotyki trudne zadania wykonywane przez ludzi przy użyciu rąk wymagały tworzenia oddzielnych specjalnych robotów dla każdego z tych zadań(otwiera nowe okno). Jako alternatywę przez wiele dziesięcioleci próbowano używać robotów do zastosowań ogólnych(otwiera nowe okno). Przynosiło to jednak umiarkowany sukces ze względu na duży zakres ruchu tych robotów. Używany przez nas sprzęt nie jest nowy — ręka robota, z której korzystamy, istnieje już od 15 lat — ale zastosowaliśmy nowe podejście do oprogramowania.

Od maja 2017 roku pracujemy nad wytrenowaniem ręki robota podobnej do ludzkiej, aby nauczyć ją układania kostki Rubika⁠(otwiera nowe okno). Wyznaczyliśmy sobie ten cel, ponieważ wierzymy, że nauczenie jej podczas treningu wykonywania złożonych zadań manipulacyjnych położy podwaliny pod roboty ogólnego przeznaczenia. W lipcu 2017 roku udało nam się ułożyć kostkę Rubika w symulacji. W lipcu 2018 roku potrafiliśmy manipulować przy użyciu robota tylko jednym klockiem. Teraz osiągnęliśmy nasz początkowy cel.

Ułożenie całej kostki Rubika. Pełne nagranie bez cięć, montażu i przyśpieszania czasu.

Ułożenie kostki Rubika jedną ręką jest trudnym zadaniem nawet dla ludzi, a dzieci potrzebują kilku lat, aby opanować niezbędną do tego zręczność. Nasz robot wciąż nie opanował do końca swojej techniki, ponieważ kostkę Rubika układa w 60% przypadków (a tylko w 20% przypadków przy pomieszaniu o maksymalnej trudności(otwiera nowe okno)).

Nasze podejście

Podczas treningów uczymy sieci neuronowe układania kostki Rubika w symulacji(otwiera nowe okno). Stosujemy w tym celu uczenie przez wzmacnianie i algorytm Kociemby(otwiera nowe okno) na potrzeby wyboru kroków układania.A Randomizacja(otwiera nowe okno) domeny(otwiera nowe okno) pozwala sieciom przenieść umiejętności wytrenowane tylko w symulacji na prawdziwego robota.

Kolorowy kolaż ramion robotów

Największym wyzwaniem było stworzenie wystarczająco różniących się środowisk w symulacji, by umożliwić oddanie w niej fizyki rzeczywistego świata. Czynniki takie jak tarcie, elastyczność i dynamika są niezwykle trudne do zmierzenia i modelowania w przypadku tak skomplikowanych obiektów, jak kostki Rubika czy ręce robota. Odkryliśmy, że sama randomizacja domeny nie wystarcza.

Aby temu zaradzić, opracowaliśmy nową metodę o nazwie automatyczna randomizacja domeny (Automatic Domain Randomization, ADR). Generuje ona bez końca coraz trudniejsze środowiska w symulacji.B Oznacza to, że nie potrzebujemy dokładnego modelu prawdziwego świata i możemy przenieść do rzeczywistego świata sieci neuronowe wytrenowane w symulacji.

W przypadku metody ADR na początku używane jest pojedyncze nierandomizowe środowisko, w którym sieć neuronowa uczy się układać kostkę Rubika. W miarę jak sieć neuronowa osiąga coraz lepsze wyniki w wykonywaniu tego zadania i przekracza próg nabycia umiejętności na tym poziomie, stopień randomizacji domeny jest automatycznie zwiększany. Zadanie staje się trudniejsze, ponieważ sieć neuronowa musi teraz nauczyć się zastosować wcześniej zdobyte umiejętności w środowisku o większym stopniu randomizacji. Sieć kontynuuje naukę do ponownego przekroczenia progu nabycia umiejętności, co powoduje kolejne zwiększenie stopnia randomizacji i powtórzenie procesu.

Ładowanie…

Jednym z randomizowanych parametrów jest rozmiar kostki Rubika (powyżej). W ramach metody ADR kostka Rubika ma na początku stały rozmiar, a zakres randomizacji jest stopniowo zwiększany w miarę postępu treningu. Tę samą technikę stosujemy do wszystkich innych parametrów, takich jak masa kostki, tarcie palców robota i właściwości wyglądu materiałów powierzchni ręki. Sieć neuronowa musi zatem uczyć się układać kostkę Rubika w coraz trudniejszych warunkach.

Ładowanie…

Randomizacja domeny wymagała od nas ręcznego określenia zakresów randomizacji, co jest trudne, ponieważ zbyt duży stopień randomizacji utrudnia naukę, a zbyt mały jej stopień utrudnia transfer do prawdziwego robota. Metoda ADR rozwiązuje ten problem, automatycznie rozszerzając zakresy randomizacji w czasie bez interwencji człowieka. Metoda ADR eliminuje potrzebę posiadania wiedzy na temat domeny i ułatwia stosowanie naszych metod do nowych zadań. W przeciwieństwie do ręcznej randomizacji domeny metoda ADR sprawia, że zadanie jest zawsze trudne, a trening nigdy nie osiąga momentu, w którym dalsza nauka przy użyciu trudniejszego środowiska nie jest możliwa.

Porównaliśmy metodę ADR z ręczną randomizacją domeny w zadaniu zmiany orientacji klocka, w którym mieliśmy już solidny punkt odniesienia. Na początku metoda ADR osiąga gorsze wyniki na prawdziwym robocie. Jednak w wyniku zwiększania entropii (miary złożoności środowiska) przez metodę ADR, ostatecznie wyniki na prawdziwym robocie są dwukrotnie lepsze w stosunku do punktu odniesienia — bez konieczności dostosowywania przez człowieka.

Analiza

Testowanie odporności

Korzystając z metody ADR, jesteśmy w stanie wytrenować w symulacji umiejętność sieci neuronowych układania kostki Rubika przy użyciu prawdziwej ręki robota. Jest to możliwe, ponieważ metoda ADR poddaje sieć działaniu randomizowanych symulacji o niekończącym się zróżnicowaniu. Taka złożoność i różnorodność treningu przygotowuje sieć do przeniesienia jej z symulacji do rzeczywistego świata, ponieważ musi ona nauczyć się szybko identyfikować świat fizyczny, z którym ma do czynienia, i dostosować się do niego.

Ładowanie…

Aby przetestować granice naszej metody, eksperymentujemy z różnymi zakłóceniami podczas układania kostki Rubika przy użyciu ręki. W ten sposób testujemy nie tylko odporność naszej sieci kontroli, ale także naszą sieć wizyjną, której używamy do oszacowywania położenia i orientacji kostki.

Stwierdziliśmy, że nasz system wytrenowany z użyciem metody ADR jest zaskakująco odporny na zakłócenia, chociaż nigdy nie były one obecne podczas treningu: Robot potrafi z powodzeniem wykonać większość obrotów kostką i ruchów ścianką w przypadku wszystkich przetestowanych zakłóceń, choć nie osiąga przy tym maksymalnych wyników.

Emergentne meta uczenie

Uważamy, że meta uczenie(otwiera nowe okno), czyli uczenie się uczenia, to ważny warunek wstępny do budowy systemów ogólnego przeznaczenia, ponieważ dzięki niemu mogą szybko dostosowywać się do zmieniających się warunków w ich środowiskach. Hipoteza dotycząca metody ADR zakłada, że sieci rozszerzone o pamięć wraz z odpowiednio zrandomizowanym środowiskiem prowadzą do emergentnego meta uczenia, w ramach którego sieć wdraża algorytm uczenia umożliwiający jej błyskawiczne dostosowanie swojego zachowania do środowiska, w którym jest wdrożona.C

Aby móc ją systematycznie testować, mierzymy czas potrzebny do pomyślnego wykonania jednego obrotu kostką (obrócenie kostką tak, aby inny kolor znalazł się na górze) przez naszą sieć neuronową przy różnych zakłóceniach, takich jak zresetowanie pamięci sieci, zresetowanie dynamiki lub uszkodzenie stawu. Eksperymenty te przeprowadzamy w symulacji, co pozwala nam uśrednić wyniki na podstawie 10 000 prób w kontrolowanych warunkach.

Ładowanie…

Gdy na początku sieć neuronowa pomyślnie wykonuje coraz więcej obrotów kostką, czas potrzebny do osiągnięcia każdego kolejnego pomyślnego wykonania skraca się, ponieważ sieć uczy się dostosowywać. Po wprowadzeniu zakłóceń (pionowe szare linie na powyższym wykresie) następuje gwałtowny wzrost czasu potrzebnego do pomyślnego wykonania. Dzieje się tak, ponieważ strategia stosowana przez sieć nie sprawdza się w zmienionym środowisku. Sieć ponownie uczy się nowego środowiska, dlatego czas potrzebny do pomyślnego wykonania jest taki sam jak przy pierwszym wykonaniu obrotu kostką.

Mierzymy również prawdopodobieństwo niepowodzenia i przeprowadziliśmy te same eksperymenty dla ruchów ścianką (obrócenie ścianki górnej o 90 stopni w prawo lub w lewo) i stwierdziliśmy ten sam wzorzec adaptacji.D

Zrozumienie naszych sieci neuronowych

Wizualizacja naszych sieci pozwala zrozumieć, jakie dane są przechowywane w ich pamięci. Jest to coraz ważniejsze wraz ze wzrostem złożoności sieci.

Ładowanie…

Pamięć naszej sieci neuronowej została zwizualizowana powyżej. Wykorzystujemy element z zestawu narzędzi do interpretowalności⁠(otwiera nowe okno), nieujemny rozkład macierzy (ang. non-negative matrix factorization), aby skondensować ten wektor o wysokim wymiarze do 6 grup i przypisać każdej z nich inny kolor. Następnie wyświetlamy kolor aktualnie dominującej grupy dla każdego odstępu czasu.

Stwierdziliśmy, że każda grupa w pamięci ma powiązane z nią zachowanie o znaczeniu semantycznym. Na przykład, patrząc tylko na dominującą grupę w pamięci sieci, można stwierdzić, czy zaraz nastąpi obrót kostką lub obrót górną ścianką zgodnie z ruchem wskazówek zegara, zanim to nastąpi.

Wyzwania

Ułożenie kostki Rubika przy użyciu ręki robota wciąż nie jest łatwe. Nasza metoda pozwala obecnie ułożyć kostkę Rubika w 20% przypadków przy pomieszaniu o maksymalnej trudności(otwiera nowe okno), które wymaga 26 ruchów ścianką. W przypadku prostszych pomieszań wymagających 15 ruchów wskaźnik powodzenia wynosi 60%. W przypadku upuszczenia kostki Rubika lub upłynięcia limitu czasu, próbę uznajemy za nieudaną. Jednak nasza sieć jest zdolna do ułożenia kostki Rubika w przypadku dowolnego stanu początkowego. Jeśli więc kostka upadnie, można ją ponownie włożyć do ręki, aby układanie było kontynuowane.

Stwierdziliśmy, że nasza sieć neuronowa zwykle znacznie częściej zawodzi podczas pierwszych kilku ruchów ścianką i obrotów. Jest tak, ponieważ sieć neuronowa musi zachować równowagę między układaniem kostki Rubika i przystosowania się do świata fizycznego podczas pierwszych ruchów i obrotów.

Za kulisami: Prototypy kostki Rubika

Aby przeprowadzić test porównawczy naszych postępów i ułatwić śledzenie problemu, stworzyliśmy niestandardowe wersje kostek, które były krokami w kierunku ułożenia zwykłej kostki Rubika.E

Openai Robotics Rubiks Prototypes

Prototypy kostek Rubika, od lewej do prawej: kostka Locked, kostka Face, kostka Full, kostka Giiker(otwiera nowe okno), zwykła kostka Rubika.

Prototyp

Położenie + orientacja

Wewnętrzne stopnie swobody (czujnik)

Kostka Locked

Wizja

0 (Brak czujnika)

Kostka Face

PhaseSpace

2 (PhaseSpace)

Kostka Full

PhaseSpace

6 (PhaseSpace)

Kostka Giiker

Wizja

6 (wbudowane czujniki)

Zwykła kostka Rubika

Wizja

6 (wizja)

Kolejne kroki

Wierzymy, że osiągnięcie zręczności na poziomie człowieka przyczyni się do stworzenia robotów ogólnego przeznaczenia. Z entuzjazmem pracujemy nad postępami w realizacji tego celu.

Jeśli chcesz pomóc w tworzeniu coraz bardziej ogólnych systemów AI, zarówno robotycznych, jak i wirtualnych, szukamy pracowników.

Przypisy

  1. A

    Koncentrujemy się na problemach, które obecnie są dla maszyn trudne do opanowania: percepcja i zręczna manipulacja. Dlatego trenujemy nasze sieci neuronowe, aby móc osiągnąć wymagane ruchy ścianką i obroty kostką generowane przez algorytm Kociemby.

  2. B

    Nasza praca jest ściśle związana z algorytmem POET(otwiera nowe okno), który automatycznie generuje środowiska 2D. Jednak nasz system uczy się wspólnej strategii dla wszystkich środowisk, która jest przenoszona do każdego nowo wygenerowanego środowiska.

  3. C

    Konkretniej, nasza hipoteza zakłada, że sieć neuronowa o ograniczonej wydajności, trenowana w środowiskach o nieograniczonej złożoności, jest zmuszona do opanowania specjalnego algorytmu uczenia, ponieważ nie jest w stanie zapamiętać rozwiązań dla poszczególnych środowisk i nie istnieje jedna niezawodna strategia, która sprawdzałaby się we wszystkich przypadkach randomizacji.

  4. D

    Pełne wyniki zawiera nasza praca(otwiera nowe okno).

  5. E

    Naszą jedyną modyfikacją było wycięcie niewielkiego fragmentu kolorowej naklejki z każdego środkowego sześcianiku. Było to konieczne do zaburzenia symetrii obrotowej(otwiera nowe okno).

Autorzy

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

Podziękowania

Dziękujemy następującym osobom za opinie na temat wersji roboczych tego wpisu i artykułu: 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.

Wideo: Peter Jordan (Director), Yvette Solis (Producer), Brooke Chan (Producer)

Redaktor: Ashley Pilipiszyn

Projekt: Justin Jay Wang i Ben Barry

Zdjęcia: Eric Haines