Resolvemos un cubo de Rubik con una mano robótica

Fotografía: Eric Haines
Entrenamos dos redes neuronales para resolver el cubo de Rubik con una mano robótica antropomorfa. Las redes neuronales se entrenan por completo en simulación combinando el código de aprendizaje por refuerzo utilizado en OpenAI Five con una técnica innovadora denominada «aleatorización de dominio automática» (ADR). El sistema es capaz de gestionar situaciones no vividas durante el entrenamiento, como ser embestido por una jirafa de peluche. Esto revela que el aprendizaje por refuerzo no es tan solo una herramienta para llevar a cabo tareas virtuales, sino que puede resolver los problemas del mundo real que precisen un nivel de destreza excepcional.
Los humanos somos capaces de hacer un sinfín de cosas con las manos. En los sesenta años de la robótica, solo hemos conseguido diseñar robots especializados en cada una de las tareas(se abre en una ventana nueva) complejas que los seres humanos hacemos con las manos. En paralelo, durante décadas hemos intentado usar hardware robótico de carácter general(se abre en una ventana nueva), pero con un éxito limitado, debido a los múltiples grados de libertad de los robots. El hardware que usamos aquí no es nuevo —la mano robótica tiene unos 15 años—; la novedad está en el planteamiento del software.
Desde mayo de 2017, hemos estado entrenando una mano robótica antropomorfa para resolver el cubo de Rubik(se abre en una ventana nueva). Nos marcamos este objetivo porque consideramos que conseguir entrenar una mano robótica para llevar a cabo tareas de manipulación complejas sienta las bases de los robots de propósito general. En julio de 2017, conseguimos resolver el cubo de Rubik dentro de la simulación, pero un año después, solo conseguíamos manipular un bloque con el robot. Hoy por fin hemos alcanzado nuestro objetivo inicial.
Cómo resolver el cubo de Rubik. El vídeo se reproduce en tiempo real y no está editado.
Resolver el cubo de Rubik con una mano es una tarea compleja incluso para nosotros, los humanos. Los niños pueden tardan varios años en adquirir esa habilidad. Nuestro robot aún no ha perfeccionado su técnica, ya que solo consigue resolverlo el 60 % de las veces (cifra que desciende hasta el 20 % con una combinación de máxima dificultad(se abre en una ventana nueva)).
Entrenamos redes neuronales para resolver el cubo de Rubik dentro de una simulación(se abre en una ventana nueva) utilizando el aprendizaje por refuerzo y el algoritmo de Kociemba(se abre en una ventana nueva) para elegir los movimientos.A La aleatorización(se abre en una ventana nueva) del dominio(se abre en una ventana nueva) permite que las redes que se han entrenado únicamente dentro de una simulación puedan transferirse a un robot real.

El mayor reto al que nos enfrentamos fue crear entornos lo bastante diversos como para reflejar las leyes físicas del mundo real en condiciones de simulación. Factores como la fricción, la elasticidad y la dinámica son extremadamente difíciles de evaluar y modelar en objetos tan complejos como los cubos de Rubik o las manos robóticas, y observamos que la aleatorización del dominio por sí sola no bastaba.
Para solucionarlo, desarrollamos un nuevo método, que hemos bautizado como aleatorización de dominio automática (ADR), que genera infinitos entornos de dificultad progresiva dentro de la simulación.B De esta forma, no necesitamos un modelo exacto del mundo real y podemos transferir las redes neuronales entrenadas durante la simulación con el fin de aplicarlas en situaciones reales.
ADR parte de un entorno único, no aleatorizado, dentro del cual una red neuronal aprende a resolver el cubo de Rubik. A medida que la red neuronal se vuelve más hábil en la tarea y alcanza el umbral de rendimiento, el grado de aleatorización del dominio aumenta automáticamente. Esto complica la tarea, puesto que la red neuronal tiene que aprender ahora a generalizarse a entornos más aleatorizados. La red continúa aprendiendo hasta que, una vez más, supera el umbral de rendimiento y sube el nivel de aleatorización. Y así sucesivamente.
Uno de los parámetros que aleatorizamos es el tamaño del cubo de Rubik (arriba). ADR parte de un cubo de Rubik de tamaño fijo y, conforme avanza el entrenamiento, el nivel de aleatorización aumenta progresivamente. Aplicamos la misma técnica con el resto de los parámetros, como la masa del cubo, la fricción de los dedos del robot y los materiales de la superficie visual de la mano. En este contexto, la red neuronal tiene que aprender a resolver el cubo de Rubik en condiciones cada vez más complejas.
Para la aleatorización del dominio, tuvimos que indicar manualmente los rangos de aleatorización, lo cual es complicado, ya que demasiada aleatorización dificulta el aprendizaje, pero niveles más bajos complican la transferencia al robot real. ADR soluciona esta disyuntiva ampliando los rangos de aleatorización de forma automática conforme transcurre el tiempo y sin intervención humana. Gracias a la técnica ADR, no es necesario conocer el dominio, y nuestros métodos pueden aplicarse a tareas nuevas con mayor facilidad. A diferencia de la aleatorización de dominio manual, con ADR la tarea entraña un reto constante y el entrenamiento nunca converge.
Comparamos la técnica ADR con la aleatorización de dominio manual en la tarea de girar los bloques, en la que ya contábamos con un modelo de referencia robusto. Al principio, ADR da peores resultados en cuanto al número de aciertos del robot real. Sin embargo, conforme ADR aumenta la entropía, que es la magnitud que expresa la complejidad del entorno, el rendimiento de la transferencia acaba duplicando el del modelo de referencia, sin necesidad de intervención humana.
Mediante ADR, hemos conseguido entrenar redes neuronales en condiciones de simulación para resolver el cubo de Rubik con la mano del robot real. Esto es posible porque ADR expone la red a una variedad inagotable de simulaciones aleatorizadas. Precisamente al haber estado expuesta a esta complejidad durante la fase de entrenamiento, la red está mejor equipada para trasladar al mundo real lo aprendido en la simulación, ya que tuvo que aprender a identificar rápido y adaptarse a cualquier reto físico que se le planteaba.
Para probar los límites de nuestro método, experimentamos con distintas interferencias mientras la mano intenta resolver el cubo de Rubik. Con esto, no solo evaluamos la estabilidad de nuestra red de control, sino también la de nuestra red de visión, que usamos aquí para calcular la posición y orientación del cubo.
Observamos que nuestro sistema entrenado con ADR es sorprendentemente estable a las interferencias, pese a no haberlas experimentado durante el entrenamiento: el robot es capaz de hacer la mayoría de giros y rotaciones de las caras del cubo incluso sometido a las interferencias, aunque no ofrece un rendimiento óptimo.
Creemos que el metaaprendizaje(se abre en una ventana nueva) (aprender a aprender) es un requisito importante a la hora de crear sistemas con un propósito general, ya que les permite adaptarse rápidamente a las condiciones cambiantes del entorno. La hipótesis sobre la que se basa ADR es que combinar una red neuronal con memoria aumentada con un entorno lo bastante aleatorizado conduce a un metaaprendizaje emergente, mediante el cual la red implementa un algoritmo de aprendizaje que le permite adaptar rápidamente su comportamiento al entorno en el que se despliega.C
Para evaluar esta hipótesis de forma sistemática, calculamos el tiempo que tarda nuestra red neuronal en conseguir girar el cubo (rotándolo de forma que aparezca arriba un color distinto) aplicándole distintas interferencias, como reiniciar la memoria de la red, reiniciar la dinámica o romper una articulación del brazo robótico. Llevamos a cabo estos experimentos en simulación, lo que nos permite calcular el promedio del rendimiento durante 10 000 ensayos en un entorno controlado.
En las condiciones iniciales, a medida que la red neuronal consigue hacer más giros, disminuye el tiempo que tarda en hacer los siguientes, porque esta aprende a adaptarse. Al aplicar interferencias (líneas verticales de color gris en el gráfico anterior), observamos un aumento drástico en el tiempo de ejecución. El motivo es que la estrategia que sigue la red no tiene éxito en el entorno alterado. Acto seguido, la red aprende el nuevo entorno y de nuevo observamos que el tiempo de ejecución desciende hasta el punto de referencia anterior.
También calculamos la probabilidad de error y hacemos los mismos experimentos con las rotaciones de las caras (girar la cara superior 90 grados en el sentido de las agujas del reloj o en sentido contrario) y observamos el mismo patrón de adaptación.D
Visualizar nuestras redes nos permite conocer lo que almacenan en la memoria. Este hecho cobra mayor relevancia conforme estas se vuelven más complejas.
Arriba vemos la memoria de nuestra red neuronal. Empleamos una herramienta de interpretabilidad(se abre en una ventana nueva), la factorización no negativa de matrices, para condensar este vector de alta dimensionalidad en seis grupos y asignar a cada uno un color distinto. A continuación, mostramos el color del grupo dominante en cada intervalo.
Averiguamos que cada grupo de memoria tiene asociado un comportamiento relevante. Por ejemplo, con tan solo observar el grupo dominante de la memoria de la red podemos predecir si está a punto de girar el cubo o rotar la cara superior en el sentido de las agujas del reloj antes de que ocurra.
Resolver el cubo de Rubik con una mano robótica sigue siendo una tarea complicada. Con nuestro método, conseguimos resolverlo el 20 % de las veces aplicando la combinación de mayor dificultad(se abre en una ventana nueva), en la que es necesario rotar las caras 26 veces. En combinaciones más sencillas, en las que se precisan 15 rotaciones, el índice de éxito es del 60 %. Consideramos que un intento es fallido cuando el cubo se cae o se acaba el tiempo. Pese a todo, nuestra red es capaz de resolver un cubo de Rubik a partir de cualquier condición inicial, de modo que, si el cubo se cae, podemos volver a colocarlo en la mano para proseguir el intento.
Por lo general, observamos que nuestra red neuronal tiene una mayor tendencia a fallar en las primeras rotaciones de cara y los primeros giros, puesto que tiene que compaginar dos factores a la vez: resolver el cubo de Rubik y adaptarse al entorno físico durante esos giros y rotaciones.
Con el fin de comparar nuestro progreso y de facilitar la manipulación del cubo, diseñamos y fabricamos versiones adaptadas de los cubos como etapas previas hacia la resolución final de un cubo de Rubik tradicional.E

Prototipos de cubo de Rubik, de izquierda a derecha: cubo con bloqueo, cubo de caras, cubo completo, cubo Giiker(se abre en una ventana nueva) y cubo de Rubik tradicional.
Prototipo | Posición y orientación | Grados de libertad internos (sensor) |
Cubo con bloqueo | Visión | 0 (sin sensor) |
Cubo de caras | PhaseSpace | 2 (PhaseSpace) |
Cubo completo | PhaseSpace | 6 (PhaseSpace) |
Cubo Giiker | Visión | 6 (sensores integrados) |
Cubo de Rubik tradicional | Visión | 6 (visión) |
En OpenAI creemos que la base para diseñar robots de propósito general es conseguir un nivel de destreza similar al humano, y nos enorgullece avanzar en la buena dirección.
Si tienes interés en contribuir a generalizar los sistemas de IA, envíanos tu candidatura.
Notas al pie
- A
Abordamos las cuestiones que las máquinas todavía no dominan: la percepción y la destreza en la manipulación. En consecuencia, entrenamos nuestras redes neuronales para conseguir rotar las caras y girar el cubo conforme al algoritmo de Kociemba.
- B
Este proyecto está estrechamente relacionado con POET(se abre en una ventana nueva), que genera entornos 2D de forma automática. Sin embargo, nuestro sistema aprende de una política conjunta aplicable a todos los entornos, que puede transferirse a los nuevos entornos que se generen.
- C
En concreto, nuestra hipótesis defiende que entrenar una red neuronal con capacidad finita en entornos de complejidad ilimitada obliga a la red a aprender un algoritmo de aprendizaje específico, ya que no es capaz memorizar una solución para cada entorno por separado y no existe una única política robusta que funcione con todas las aleatorizaciones.
- D
Consulta todos los resultados en nuestro artículo(se abre en una ventana nueva).
- E
La única modificación que hemos introducido ha sido recortar un fragmento de la pegatina de colores de los cubos. Era necesario para romper la simetría rotacional(se abre en una ventana nueva).
Autores
Agradecimientos
Gracias por leer los borradores de la publicación y el artículo, y por trasladarnos vuestros comentarios: 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 y Tao Xu.
Vídeo: Peter Jordan (director), Yvette Solis (productora) y Brooke Chan (productora)
Editora: Ashley Pilipiszyn
Diseño: Justin Jay Wang y Ben Barry
Fotografía: Eric Haines


