Cubo di Rubik? No, la robotica e l’IA non ci sono ancora
Parliamo della mano robotica abile OpenAI che attualmente sta ricevendo molta attenzione.
Questo è un post di vaccinazione hype . In altre parole, proverò a depredare la folla per il recente sviluppo della robotica. Concretamente, OpenAI ha ottenuto risultati piuttosto sorprendenti imparando a risolvere il cubo di Rubik con una mano robotica. Ignorando i loro potenti macchinari pubblicitari, quanto sono davvero sorprendenti i risultati?
Che cosa è tutto questo trambusto?
Il risultato sorprendente non è risolvere il cubo di Rubik, ovviamente. È la capacità di gestire il cubo di Rubik con un sistema robotico relativamente non banale. Stiamo parlando della mano di Shadow Dxterous serie E :
[1]
In realtà la mano è la stessa mano dell’anno scorso usata per giocare un po ‘con questo cubo:
[1]
Quindi, alla fine, stiamo ancora parlando di cubi rotanti.
La difficoltà di controllare la mano è che ha 20 gradi di libertà. Inoltre, tenere il cubo di Rubik in una mano e risolverlo è molto difficile, anche per un essere umano per quella materia (posso immaginare però che sia abbastanza difficile controllare 2 mani robotiche allo stesso tempo, ragioni per cui verrà dopo) .
Esistono molti ostacoli alla risoluzione di questo problema, come la stima della posa della mano, la traccia del cubo, l’apprendimento della rotazione del cubo e così via. La cosa impressionante è che sono stati in grado di farlo su un sistema reale basato sull’input della telecamera dopo aver addestrato la politica di controllo nella simulazione. Inoltre, la mano è stata in grado di adattarsi a perturbazioni improvvise, ad esempio giraffa giocattolo toccandola mentre ruotava il cubo.
In poche parole, si potrebbe raggruppare il loro approccio in 3 parti importanti: visione artificiale (percezione), apprendimento di rinforzo e randomizzazione del dominio .
Randomizzazione adattiva del dominio
L’apprendimento per rinforzo funziona bene quando puoi avere esperimenti controllati. Ciò significa che hai una simulazione che puoi ripristinare, eseguire rapidamente. Se lo provassi su un sistema reale … Beh, buona fortuna, forse puoi chiedere ai tuoi pronipoti come è andato l’apprendimento, modulo alcune lievi lesioni al robot e / o vari oggetti / persone attorno a causa di il suo comportamento esplorativo casuale.
Per trasferire le politiche su sistemi reali (supponendo che abbiamo una simulazione del sistema disponibile) possiamo usare la randomizzazione del dominio. Si riduce semplicemente ad applicare perturbazioni alle nostre simulazioni esistenti per creare più simulazioni. In questo modo, potremmo essere in grado di catturare la complessità del mondo reale.
Questa non è un’idea molto nuova, risale a qualche tempo fa, in realtà OpenAI utilizzava semplici perturbazioni per la randomizzazione del dominio nella loro precedente carta robotica manuale , ma sulla base del lavoro di molti prima di loro. Purtroppo, a quanto pare, ecco qualcosa di nuovo, “Randomizzazione adattiva dei domini”. Cosa c’è di adattivo al riguardo? Bene, sostengono di poter generare simulazioni sempre più difficili per le politiche campionandole da una distribuzione generativa che viene appresa. Va bene, sembra logico, le distribuzioni generative sono la cosa nel 21 ° secolo e l’hanno fatto funzionare in qualche modo. Carino ma…
Supponendo di avere un modello (simulazione) è abbastanza conveniente …
Abbiamo fissato questo obiettivo perché crediamo che addestrare con successo una mano così robotica a svolgere compiti di manipolazione complessi ponga le basi per robot di uso generale. [1]
Sì, robot per uso generale … Mi chiedo se sia ragionevole supporre che abbiamo simulazioni per tutte le situazioni che un robot per uso generale può incontrare. Ti lascio alla tua conclusione, è una domanda piuttosto filosofica.
Distillazione politica, cosa c’è di nuovo?
Quindi, poiché l’addestramento richiederebbe troppo tempo, hanno inizializzato diversi esperimenti (casi di simulazioni) con una sorta di buona politica di partenza. Accumulano molti dati in parallelo, che provengono da diverse politiche. È un fatto ben noto nella teoria dell’apprendimento che se i tuoi dati di allenamento non riflettono l’effettiva distribuzione dei dati, il tuo modello si allenerà male. Per questo motivo, hanno utilizzato l’algoritmo DAGGER per la clonazione comportamentale per adattarsi efficacemente alla politica di partenza. Niente di veramente nuovo qui.
Il problema di sgranocchiare troppi numeri
Per l’attività di riorientamento dei blocchi, utilizziamo 4 × 8 = 32 GPU NVIDIA V100 e 4 × 100 = 400 macchine worker con 32 core CPU ciascuna. Per l’attività del cubo di Rubik, utilizziamo 8 × 8 = 64 GPU NVIDIA V100 e 8 × 115 = 920 macchine operatrici con 32 core CPU ciascuna. [1]
Questo compito richiedeva molta potenza di calcolo, lasciatemi ripetere, MOLTA potenza di calcolo. Solo guardando questi numeri mi fa girare la testa. CPU 920×32 ??? Tutto per controllare questa 1 mano su 1 attività. Poi ti fa chiedere … Quanto tempo ci è voluto? Bene…
Abbiamo allenato la politica del cubo di Rubik ininterrottamente per diversi mesi su questa scala, migliorando contemporaneamente la fedeltà della simulazione, l’algoritmo ADR, l’ottimizzazione degli iperparametri e persino la modifica dell’architettura di rete. La quantità cumulativa di esperienza in quel periodo utilizzata per l’addestramento sul cubo di Rubik è di circa 13 mila anni, che è sullo stesso ordine di grandezza dei 40 mila anni usati da OpenAI Five [1]
Bene, è piuttosto sorprendente. Abbiamo bisogno di 13000 anni per imparare a risolvere il cubo di Rubik (in realtà non per risolverlo da zero, ma per impiegare un risolutore per risolverlo), bello :). Anche se, scontato, l’argomento principale che difende questo tipo di calcolo è che gli umani hanno avuto molto tempo di evoluzione, milioni di anni di evoluzione. Dal momento che stiamo costruendo questi sistemi, dovremmo essere in grado di accelerare il loro apprendimento condividendo parte della nostra esperienza evolutiva, ovvero aggiungendo priori adeguati in modo da non dover aspettare 13000 anni affinché il nostro robot impari a pulire il pavimento .
È un dato di fatto, anche dopo tutto questo allenamento:
Risolvere il cubo di Rubik con una mano robotica non è ancora facile. Il nostro metodo attualmente risolve il cubo di Rubik il 20% delle volte quando si applica uno scramble estremamente difficile che richiede 26 rotazioni della faccia. Per scrambles più semplici che richiedono 15 rotazioni per annullare, il tasso di successo è del 60%. [1]
Conclusione
Tutto sommato, penso che il contributo di OpenAI sia rilevante, in un certo senso che dimostra quanto ci può portare la potenza di calcolo con una ingegnosa ingegneria. In realtà, presupponendo una potenza di calcolo infinita, è possibile risolvere qualsiasi problema. È interessante vedere cosa stiamo ottenendo con l’aumento della potenza di elaborazione.
D’altra parte, devo dire che questo tipo di ricerca non è sostenibile, e forse scricchiolare così tanti numeri per risolvere un cubo di Rubik non è giustificato ed è ridondante. 13000 anni, 64 GPU, formazione per diversi mesi, questi numeri devono scendere.