Risolvere il cubo di Rubik con una mano robotica

Foto: Eric Haines
Abbiamo addestrato una coppia di reti neurali per risolvere il cubo di Rubik con una mano robotica simile a quella umana. Le reti neurali sono addestrate interamente in simulazione, utilizzando lo stesso codice di apprendimento per rinforzo di OpenAI Five abbinato a una nuova tecnica chiamata Automatic Domain Randomization (ADR). Il sistema è in grado di gestire situazioni che non ha mai sperimentato durante l'addestramento, come essere disturbato da una giraffa di peluche. Questo dimostra che l'apprendimento per rinforzo non è solo uno strumento per attività virtuali, ma può risolvere problemi del mondo fisico che richiedono una nuova destrezza.
Gli esseri umani sono in grado di eseguire innumerevoli attività con le mani. In sessant'anni di robotica, siamo riusciti a progettare solo robot specializzati in ciascuna delle attività complesse(si apre in una nuova finestra) che l'uomo svolge con le mani. Parallelamente, per decenni si è cercato di utilizzare hardware robotico generico(si apre in una nuova finestra), ma con scarso successo a causa dei molteplici gradi di libertà dei robot. L'hardware che utilizziamo in questo caso non è nuovo (la mano robotica esiste da 15 anni), la novità sta nell'approccio software.
Da maggio 2017, stiamo cercando di addestrare una mano robotica simile a quella umana per risolvere il cubo di Rubik(si apre in una nuova finestra). Ci siamo posti questo obiettivo perché crediamo che addestrare con successo una mano robotica di questo tipo a svolgere attività di manipolazione complesse getti le basi per robot di uso generale. Nel luglio 2017, abbiamo risolto il cubo di Rubik all'interno della simulazione. Un anno dopo, però, riuscivamo a manipolare solo un blocco con il robot. Oggi abbiamo finalmente raggiunto il nostro obiettivo iniziale.
Una risoluzione completa del cubo di Rubik. Questo video viene riprodotto in tempo reale e non è stato modificato in alcun modo.
Risolvere un cubo di Rubik con una sola mano è un’attività difficile anche per gli esseri umani, e i bambini impiegano diversi anni per acquisire la destrezza necessaria a padroneggiarlo. Il nostro robot non ha ancora perfezionato la sua tecnica, in quanto può risolvere il cubo di Rubik nel 60% dei casi (e solo nel 20% dei casi con uno scramble di massima difficoltà(si apre in una nuova finestra)).
Addestriamo le reti neurali a risolvere il cubo di Rubik in simulazione(si apre in una nuova finestra), utilizzando l'apprendimento per rinforzo e l'algoritmo di Kociemba(si apre in una nuova finestra) per la scelta dei passaggi risolutivi. A La randomizzazione(si apre in una nuova finestra) del dominio(si apre in una nuova finestra) consente alle reti addestrate esclusivamente in simulazione di trasferirsi a un robot reale.

La sfida più grande che abbiamo affrontato è stata quella di creare ambienti di simulazione abbastanza diversificati da riflettere le leggi fisiche del mondo reale. Fattori come l'attrito, l'elasticità e la dinamica sono incredibilmente difficili da valutare e modellare in oggetti complessi come i cubi di Rubik o le mani robotiche, e abbiamo scoperto che la sola randomizzazione del dominio non era sufficiente.
Per ovviare a ciò, abbiamo sviluppato un nuovo metodo chiamato Automatic Domain Randomization (ADR), che genera ambienti infiniti di difficoltà progressiva all'interno della simulazione. B In questo modo, non abbiamo bisogno di un modello esatto del mondo reale e possiamo trasferire le reti neurali addestrate durante la simulazione per applicarle a situazioni reali..
L'ADR parte da un singolo ambiente non randomizzato in cui una rete neurale impara a risolvere il cubo di Rubik. Man mano che la rete neurale diventa più abile nell’attività e raggiunge la soglia di prestazioni, il grado di randomizzazione del dominio aumenta automaticamente. Questo rende l’attività più difficile, poiché la rete neurale deve ora imparare a generalizzare ad ambienti più randomizzati. La rete continua ad apprendere finché non supera di nuovo la soglia di rendimento, quando interviene un'ulteriore randomizzazione e il processo si ripete.
Uno dei parametri che randomizziamo è la dimensione del cubo di Rubik (sopra). L'ADR inizia con un cubo di Rubik di dimensioni fisse e aumenta gradualmente la gamma di randomizzazione con il progredire dell'addestramento. Applichiamo la stessa tecnica a tutti gli altri parametri, come la massa del cubo, l'attrito delle dita del robot e i materiali della superficie visiva della mano. La rete neurale deve quindi imparare a risolvere il cubo di Rubik in tutte queste condizioni sempre più difficili.
La randomizzazione del dominio ci ha richiesto di specificare manualmente gli intervalli di randomizzazione, il che è difficile poiché una randomizzazione eccessiva rende difficile l'apprendimento, mentre una randomizzazione troppo scarsa ostacola il trasferimento al robot reale. L’ADR risolve questo problema espandendo automaticamente gli intervalli di randomizzazione nel tempo senza alcun intervento umano. L'ADR elimina la necessità di conoscere il dominio e semplifica l'applicazione dei nostri metodi a nuove attività. A differenza della randomizzazione manuale del dominio, l'ADR mantiene l’attività sempre impegnativa e l’addestramento non converge mai.
Abbiamo confrontato l'ADR con la randomizzazione manuale del dominio nell’attività di capovolgimento dei blocchi, dove avevamo già una forte base di riferimento. All'inizio l’ADR si comporta peggio in termini di numero di successi sul robot reale. Ma man mano che l'ADR aumenta l'entropia, che è una misura della complessità dell'ambiente, le prestazioni di trasferimento finiscono per raddoppiare rispetto alla base di riferimento, senza che sia necessaria una messa a punto da parte dell'uomo.
Utilizzando l'ADR, siamo in grado di addestrare reti neurali in simulazione che possono risolvere il cubo di Rubik sulla mano del robot reale. Questo perché l'ADR espone la rete a una varietà infinita di simulazioni randomizzate. È questa esposizione alla complessità durante l'addestramento che prepara la rete a passare dalla simulazione al mondo reale, poiché deve imparare a identificare e ad adattarsi rapidamente a qualsiasi mondo fisico si trovi di fronte.
Per testare i limiti del nostro metodo, sperimentiamo una serie di perturbazioni mentre la mano risolve il cubo di Rubik. Questo non solo mette alla prova la robustezza della nostra rete di controllo, ma anche la nostra rete di visione, che qui utilizziamo per stimare la posizione e l'orientamento del cubo.
Scopriamo che il nostro sistema addestrato con ADR è sorprendentemente robusto alle perturbazioni, anche se non ci siamo mai addestrati con esse: Il robot è in grado di eseguire con successo la maggior parte dei capovolgimenti e delle rotazioni delle facce in tutte le perturbazioni testate, anche se non al massimo delle prestazioni.
Riteniamo che il meta-apprendimento(si apre in una nuova finestra), o l'apprendimento ad apprendere, sia un prerequisito importante per la costruzione di sistemi di uso generale, in quanto consente loro di adattarsi rapidamente alle mutevoli condizioni del loro ambiente. L'ipotesi alla base dell'ADR è che la combinazione di una rete neurale dotata di memoria con un ambiente sufficientemente randomizzato porti a un meta-apprendimento emergente, base al quale la rete implementa un algoritmo di apprendimento che le consente di adattare rapidamente il proprio comportamento all'ambiente in cui viene impiegata.C
Per verificare questa ipotesi in modo sistematico, abbiamo calcolato il tempo necessario alla nostra rete neurale per ruotare il cubo (ruotandolo in modo da far apparire un colore diverso sulla parte superiore) applicando diverse interferenze, come il reset della memoria della rete, il riavvio della dinamica o la rottura di un giunto del braccio robotico. Questi esperimenti sono condotti in simulazione, il che ci permette di calcolare le prestazioni medie su 10.000 prove in un ambiente controllato.
Nelle condizioni iniziali, man mano che la rete neurale riesce a compiere un numero maggiore di capovolgimenti, il tempo necessario per compiere i capovolgimenti successivi diminuisce, perché la rete impara ad adattarsi. Quando si applicano le interferenze (linee verticali grigie nel grafico precedente), si osserva un drastico aumento del tempo di esecuzione. Il motivo è che la strategia seguita dalla rete non ha successo nell'ambiente modificato. La rete apprende quindi il nuovo ambiente e si osserva nuovamente che il tempo di esecuzione scende al benchmark precedente.
Abbiamo anche misurato la probabilità di errore ed eseguito gli stessi esperimenti per le rotazioni delle facce (ruotando la faccia superiore di 90 gradi in senso orario o antiorario) e abbiamo osservato lo stesso modello di adattamento.D
La visualizzazione delle nostre reti ci permette di vedere ciò che esse immagazzinano in memoria. Questo aspetto diventa sempre più importante con l'aumentare della complessità delle reti.
La memoria della nostra rete neurale è visualizzata qui sopra. Utilizziamo uno strumento di interpretabilità(si apre in una nuova finestra), ovvero la fattorizzazione di matrici non negative, per condensare questo vettore ad alta dimensione in 6 gruppi e assegnare a ciascuno un colore diverso. Di seguito, mostriamo il colore del gruppo dominante in ogni intervallo.
Scopriamo che a ogni gruppo di memoria è associato un comportamento rilevante. Ad esempio, osservando semplicemente il gruppo di memoria dominante della rete, possiamo prevedere se sta per ruotare il cubo o se sta per ruotare la faccia superiore in senso orario prima che ciò accada.
Risolvere il cubo di Rubik con una mano robotica non è ancora un’attività facile. Attualmente con il nostro metodo riusciamo a risolverlo il 20% delle volte applicando lo scramble più difficile(si apre in una nuova finestra) che richiede 26 rotazioni delle facce. Nelle combinazioni più semplici, dove sono necessarie 15 rotazioni, la percentuale di successo è del 60%. Quando il cubo cade o il tempo scade, il tentativo viene considerato fallito. Tuttavia, la nostra rete è in grado di risolvere il cubo di Rubik a partire da qualsiasi condizione iniziale. Quindi, se il cubo cade, possiamo rimetterlo in mano e continuare il tentativo.
In generale, abbiamo riscontrato che è molto più probabile che la nostra rete neurale fallisca durante i primi capovolgimenti e rotazioni della faccia. Questo perché essa deve trovare un equilibrio tra la risoluzione del cubo di Rubik e l'adattamento al mondo fisico durante i primi capovolgimenti e rotazioni.
Per valutare i nostri progressi e facilitare la manipolazione del cubo, abbiamo progettato e realizzato versioni adattate di cubi come trampolino di lancio verso la soluzione finale di un cubo di Rubik tradizionale.E

Prototipi del cubo di Rubik, da sinistra a destra: Cubo a blocchi, cubo a facce, cubo completo, cubo Giiker(si apre in una nuova finestra), cubo di Rubik tradizionale.
Prototipo | Posizione + orientamento | Gradi di libertà interni (sensore) |
Cubo a blocchi | Vision | 0 (nessun sensore) |
Cubo a facce | PhaseSpace | 2 (PhaseSpace) |
Cubo completo | PhaseSpace | 6 (PhaseSpace) |
Cubo Giiker | Vision | 6 (sensori incorporati) |
Cubo di Rubik tradizionale | Vision | 6 (Visione) |
Crediamo che la base per la progettazione di robot generici sia il raggiungimento di un livello di destrezza simile a quello umano, e siamo orgogliosi di muoverci nella giusta direzione.
Se vuoi contribuire a creare sistemi di intelligenza artificiale sempre più generali, sia robotici che virtuali, inviaci la tua candidatura!
Note di riferimento
- A
Affrontiamo gli aspetti che attualmente sono difficili da padroneggiare per le macchine: la percezione e la capacità di manipolazione. Di conseguenza, addestriamo le nostre reti neurali a ruotare le facce e a ruotare il cubo secondo l'algoritmo di Kociemba.
- B
Questo progetto è strettamente legato a POET(si apre in una nuova finestra), che genera automaticamente ambienti 2D. Tuttavia, il nostro sistema apprende da una politica comune applicabile a tutti gli ambienti, che può essere trasferita agli ambienti appena generati.
- C
Più concretamente, ipotizziamo che l'addestramento di una rete neurale con capacità finita in ambienti di complessità illimitata costringa la rete ad apprendere un algoritmo di apprendimento specifico, poiché non è in grado di memorizzare una soluzione per ogni ambiente separatamente e non esiste una singola politica robusta che funzioni per tutte le randomizzazioni.
- D
Per i risultati completi si rimanda al paper(si apre in una nuova finestra).
- E
L'unica modifica apportata è stata quella di tagliare un frammento dell'adesivo colorato di ogni cubetto centrale. Questo è stato necessario per rompere la simmetria rotazionale(si apre in una nuova finestra).
Autori
Ringraziamenti
Si ringraziano le seguenti persone per il feedback sulle bozze di questo post e del paper: 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 e Tao Xu.
Video: Peter Jordan (Regista), Yvette Solis (Produttore), Brooke Chan (Produttore)
Editor Ashley Pilipiszyn
Design/Progettazione Justin Jay Wang e Ben Barry
Fotografia: Eric Haines


