Menyelesaikan Kubus Rubik dengan tangan robot

Foto: Eric Haines
Kami telah melatih sepasang jaringan saraf untuk menyelesaikan Kubus Rubik dengan tangan robot mirip manusia. Jaringan saraf dilatih sepenuhnya dalam simulasi, menggunakan kode pembelajaran penguatan yang sama seperti OpenAI Five yang dipasangkan dengan teknik baru yang disebut Pengacakan Domain Otomatis (Automatic Domain Randomization, ADR). Sistem dapat menangani situasi yang tidak pernah dilihatnya selama pelatihan, seperti didorong oleh jerapah mainan. Ini menunjukkan bahwa pembelajaran penguatan bukan hanya alat bantu untuk tugas virtual, tetapi dapat menyelesaikan masalah dunia fisik yang memerlukan ketangkasan yang belum pernah ada sebelumnya.
Tangan manusia memungkinkan kita menyelesaikan berbagai macam tugas. Selama 60 tahun terakhir dalam dunia robotika, tugas berat yang diselesaikan manusia dengan kedua tangannya yang tetap telah memerlukan perancangan robot khusus untuk masing-masing tugas(terbuka di jendela baru). Sebagai alternatif, orang telah menghabiskan waktu puluhan tahun mencoba menggunakan perangkat keras robotika serbaguna(terbuka di jendela baru), tetapi dengan keberhasilan terbatas karena tingkat kebebasannya yang tinggi. Secara khusus, perangkat keras yang kami gunakan di sini bukan perangkat keras yang baru—tangan robot yang kami gunakan telah ada selama 15 tahun terakhir—tetapi pendekatan perangkat lunaknya baru.
Sejak bulan Mei tahun 2017, kami telah mencoba melatih tangan robotika mirip manusia untuk menyelesaikan Kubus Rubik(terbuka di jendela baru). Kami menetapkan sasaran ini karena kami yakin bahwa pelatihan tangan robotika yang sukses tersebut untuk melakukan tugas manipulasi yang rumit akan menjadi dasar bagi robot serbaguna. Kami menyelesaikan Kubus Rubik dalam simulasi pada bulan Juli tahun 2017. Namun pada bulan Juli tahun 2018, kami hanya dapat memanipulasi blok pada robot. Sekarang, kami telah mencapai sasaran awal kami.
Penyelesaian penuh Kubus Rubik. Video ini diputar secara langsung dan tidak diedit dengan cara apa pun.
Menyelesaikan Kubus Rubik dengan satu tangan merupakan tugas yang menantang bahkan bagi manusia, dan perlu waktu beberapa tahun bagi anak-anak untuk memperoleh ketangkasan yang diperlukan untuk menguasainya. Robot kami masih belum menyempurnakan tekniknya, karena menyelesaikan 60% dari waktu Kubus Rubik (dan hanya 20% dari waktu untuk pengacakan yang sangat sulit(terbuka di jendela baru)).
Kami melatih jaringan saraf untuk menyelesaikan Kubus Rubik dalam simulasi(terbuka di jendela baru) menggunakan pembelajaran penguatan dan algoritma Kociemba(terbuka di jendela baru) untuk memilih langkah-langkah solusi.A Domain(terbuka di jendela baru) pengacakan(terbuka di jendela baru) sehingga memungkinkan jaringan yang dilatih hanya dalam simulasi untuk ditransfer ke robot nyata.

Tantangan terbesar yang kami hadapi adalah menciptakan lingkungan dalam simulasi yang cukup beragam untuk menangkap fisika dunia nyata. Faktor-faktor seperti gesekan, elastisitas, dan dinamika sangat sulit diukur dan dimodelkan untuk objek serumit Kubus Rubik atau tangan robotika dan kami menemukan bahwa pengacakan domain saja tidak cukup.
Untuk mengatasi ini, kami mengembangkan metode baru yang disebut Automatic Domain Randomization (ADR), yang tanpa henti membuat lingkungan yang makin sulit dalam simulasi.B Ini membebaskan kami dari memiliki model dunia nyata yang akurat, dan memungkinkan transfer jaringan saraf yang dipelajari dalam simulasi untuk diterapkan ke dunia nyata.
ADR dimulai dengan lingkungan tunggal yang tidak acak, tempat jaringan saraf belajar menyelesaikan Kubus Rubik. Saat jaringan saraf makin baik dalam menjalankan tugas dan mencapai ambang batas kinerja, jumlah pengacakan domain ditingkatkan secara otomatis. Ini membuat tugas lebih sulit, karena jaringan saraf sekarang harus belajar melakukan generalisasi ke lingkungan yang lebih acak. Jaringan terus belajar hingga melampaui ambang batas kinerja lagi, saat lebih banyak pengacakan terjadi, dan prosesnya diulang.
Salah satu parameter yang kami acak adalah ukuran Kubus Rubik (di atas). ADR dimulai dengan ukuran Kubus Rubik yang tetap dan secara bertahap meningkatkan rentang pengacakan seiring perkembangan pelatihan. Kami menerapkan teknik yang sama pada semua parameter lainnya, seperti massa kubus, gesekan jari-jari robot, dan bahan permukaan visual dari tangan. Oleh karena itu, jaringan saraf harus belajar menyelesaikan Kubus Rubik dalam semua kondisi yang makin sulit.
Pengacakan domain mewajibkan kami untuk menentukan rentang pengacakan secara manual, yang sulit karena terlalu banyak pengacakan membuat pembelajaran menjadi sulit tetapi terlalu sedikit pengacakan menghambat transfer ke robot sesungguhnya. ADR menyelesaikan ini dengan memperluas rentang pengacakan secara otomatis dari waktu ke waktu tanpa campur tangan manusia. ADR menghilangkan kebutuhan terhadap pengetahuan domain dan membuatnya lebih mudah menerapkan metode kami pada tugas baru. Berbeda dengan pengacakan domain manual, ADR juga membuat tugas selalu menantang dengan pelatihan yang tidak pernah bersifat konvergen.
Kami membandingkan ADR dengan pengacakan domain manual pada tugas pembalikan blok, yakni kami sudah memiliki garis dasar yang kuat. Pada awalnya, ADR berkinerja lebih buruk dalam hal jumlah keberhasilan pada robot sebenarnya. Namun, seiring ADR meningkatkan entropi, yang merupakan ukuran kerumitan lingkungan, kinerja transfer akhirnya berlipat ganda dari garis dasar—tanpa penyetelan manusia.
Dengan menggunakan ADR, kami dapat melatih jaringan saraf dalam simulasi yang dapat memecahkan Kubus Rubik pada tangan robot sebenarnya. Ini karena ADR memaparkan jaringan pada berbagai macam simulasi acak yang tidak terbatas. Pemaparan terhadap kerumitan selama pelatihan yang mempersiapkan jaringan untuk melakukan transfer dari simulasi ke dunia nyata karena jaringan tersebut harus belajar mengidentifikasi dan menyesuaikan diri dengan cepat terhadap dunia fisik apa pun yang dihadapinya.
Untuk menguji batas metode kami, kami bereksperimen dengan berbagai gangguan saat tangan menyelesaikan Kubus Rubik. Ini tidak hanya menguji ketahanan jaringan kontrol kita tetapi juga menguji jaringan visual kita, yang di sini kita gunakan untuk memperkirakan posisi dan orientasi kubus.
Kami menemukan bahwa sistem kami yang dilatih dengan ADR secara mengejutkan kuat terhadap gangguan meskipun kami tidak pernah melatihnya: Robot dapat berhasil melakukan sebagian besar gerakan jungkir balik dan rotasi permukaan dalam semua gangguan yang diuji, meskipun tidak berhasil pada kinerja puncak.
Kami yakin bahwa pembelajaran-meta(terbuka di jendela baru), atau pembelajaran untuk mempelajari, merupakan prasyarat penting untuk membangun sistem serbaguna, karena itu memungkinkan sistem untuk cepat menyesuaikan terhadap perubahan kondisi di lingkungannya. Hipotesis di balik ADR adalah bahwa jaringan yang diperkuat memori yang digabungkan dengan lingkungan yang cukup acak mengarah pada pembelajaran-meta yang timbul, tempat jaringan menerapkan algoritma pembelajaran sehingga mengizinkan dirinya sendiri untuk dengan cepat menyesuaikan perilakunya dengan lingkungan tempatnya disebarkan.C
Untuk menguji ini secara sistematis, kami mengukur waktu keberhasilan per pembalikan kubus (memutar kubus sedemikian rupa sehingga warna yang berbeda menghadap ke atas) untuk jaringan saraf kami dalam berbagai gangguan, seperti melakukan reset memori jaringan, melakukan reset dinamika, atau mematahkan sendi. Kami melakukan eksperimen ini dalam simulasi, sehingga mengizinkan kami untuk menghitung rata-rata kinerja lebih dari 10.000 uji coba dalam pengaturan yang terkontrol.
Pada awalnya, saat jaringan saraf berhasil mencapai lebih banyak pembalikan, setiap waktu keberhasilan yang berurutan berkurang karena jaringan belajar untuk menyesuaikan. Saat gangguan diterapkan (garis abu-abu vertikal pada grafik di atas), kita melihat lonjakan waktu menuju keberhasilan. Ini terjadi karena strategi yang diterapkan jaringan tidak berhasil dalam lingkungan yang berubah. Lalu, jaringan mempelajari kembali tentang lingkungan baru dan kita kembali melihat waktu menuju keberhasilan menurun ke garis dasar sebelumnya.
Kami juga mengukur probabilitas kegagalan dan melakukan eksperimen yang sama untuk rotasi permukaan (memutar permukaan atas 90 derajat searah jarum jam atau berlawanan arah jarum jam) dan menemukan pola penyesuaian yang sama.D
Memvisualisasikan jaringan kami memungkinkan kami untuk memahami hal yang mereka simpan dalam memori. Ini menjadi makin penting seiring bertambahnya kerumitan jaringan.
Memori jaringan saraf kami divisualisasikan di atas. Kami menggunakan blok pembangun dari kotak peralatan kemampuan menafsirkan(terbuka di jendela baru), yaitu faktorisasi matriks non-negatif, untuk memadatkan vektor berdimensi tinggi ini menjadi 6 grup dan menetapkan warna unik untuk masing-masing grup. Lalu, kami menampilkan warna grup yang dominan saat ini untuk setiap langkah waktu.
Kami menemukan bahwa masing-masing grup memori memiliki perilaku bermakna secara semantik terkait dengannya. Misalnya, kami dapat mengetahui hanya dengan melihat grup dominan memori jaringan jika itu akan memutar kubus atau memutar bagian atas searah jarum jam sebelum itu terjadi.
Menyelesaikan Kubus Rubik dengan tangan robot masih belum mudah. Metode kami saat ini menyelesaikan 20% dari waktu Kubus Rubik saat menerapkan pengacakan yang sangat sulit(terbuka di jendela baru) yang memerlukan 26 rotasi permukaan. Untuk pengacakan yang lebih sederhana dan memerlukan 15 rotasi untuk memulihkan, tingkat keberhasilannya adalah 60%. Saat Kubus Rubik dijatuhkan atau batas waktu tercapai, kami menganggap percobaan gagal. Namun, jaringan kami mampu menyelesaikan Kubus Rubik dari kondisi awal. Jadi, jika kubus dijatuhkan, ada kemungkinan untuk menaruhnya kembali ke tangan dan melanjutkan penyelesaian.
Secara umum, kami menemukan bahwa jaringan saraf kami lebih mungkin gagal selama beberapa rotasi dan pembalikan permukaan pertama. Ini terjadi karena jaringan saraf perlu menyeimbangkan penyelesaian Kubus Rubik dengan menyesuaikan terhadap dunia fisik selama rotasi dan pembalikan awal tersebut.
Untuk menentukan toluk ukur perkembangan kami dan membuat masalah dapat dipecahkan, kami membangun dan merancang versi kubus kustom sebagai batu loncatan menuju penyelesaian Kubus Rubik biasa.E

Purwarupa Kubus Rubik, dari kiri ke kanan: Locked cube, Face cube, Full cube, Giiker(terbuka di jendela baru) cube, Kubus Rubik biasa.
Purwarupa | Posisi + orientasi | Derajat kebebasan internal (sensor) |
Locked cub | Vision | 0 (Tanpa sensor) |
Face cub | PhaseSpace | 2 (PhaseSpace) |
Full cube | PhaseSpace | 6 (PhaseSpace) |
Giiker cube | Vision | 6 (Sensor bawaan) |
Kubus Rubik Biasa | Vision | 6 (Visual) |
Kami yakin bahwa ketangkasan tingkat manusia berada di jalur menuju pembangunan robot serbaguna dan kami senang terus maju ke arah ini.
Jika Anda ingin membantu membuat sistem AI yang makin umum, baik robotik maupun virtual, kami sedang merekrut!
Catatan kaki
- A
Kami berfokus pada masalah yang saat ini sulit dikuasai oleh mesin: persepsi dan manipulasi yang cekatan. Oleh karena itu, kami melatih jaringan saraf kami untuk mencapai rotasi permukaan dan pembalikan kubus yang diperlukan seperti dibuat oleh algoritma Kociemba.
- B
Pekerjaan kami sangat terkait dengan POET(terbuka di jendela baru), yang secara otomatis membuat lingkungan 2D. Namun, pekerjaan kami mempelajari kebijakan gabungan terhadap semua lingkungan, yang ditransfer ke lingkungan yang baru dibuat.
- C
Lebih konkret, kami memiliki hipotesis bahwa jaringan saraf dengan kapasitas terbatas yang dilatih pada lingkungan dengan kerumitan tidak terbatas memaksa jaringan untuk mempelajari algoritma pembelajaran tujuan khusus karena itu tidak dapat mengingat solusi untuk setiap lingkungan individu dan tidak ada satu kebijakan kuat yang berfungsi dalam semua pengacakan.
- D
Harap mengacu pada makalah(terbuka di jendela baru) kami untuk mendapatkan hasil lengkap.
- E
Satu-satunya modifikasi yang kami buat adalah memotong sepotong kecil stiker warna-warni pada setiap kubus bagian tengah. Ini diperlukan untuk mematahkan simetri rotasi(terbuka di jendela baru).
Penulis
Ucapan Terima Kasih
Terima kasih kepada para pihak berikut atas masukan pada draf postingan dan makalah ini: 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.
Video: Peter Jordan (Sutradara), Yvette Solis (Produser), Brooke Chan (Produser)
Editor: Ashley Pilipiszyn
Desain: Justin Jay Wang & Ben Barry
Fotografi: Eric Haines


