Resolver el cubo de Rubik con una mano robótica

Foto: Eric Haines
Entrenamos un par de redes neuronales para resolver el cubo de Rubik con una mano robótica similar a la de un humano. Las redes neuronales se entrenan íntegramente en una simulación, mediante el mismo código de aprendizaje por refuerzo que se utiliza en OpenAI Five emparejado con una nueva técnica denominada aleatorización automática de dominios (ADR). El sistema puede manejar situaciones que nunca vio durante el entrenamiento, como que una jirafa de peluche lo empuje. Esto demuestra que el aprendizaje por refuerzo no es solo una herramienta para tareas virtuales, sino que puede resolver problemas del mundo físico que requieren una destreza sin precedentes.
Las manos humanas nos permiten resolver una gran variedad de tareas. Durante los últimos 60 años de robótica, las tareas difíciles que el ser humano realiza con un solo par de manos han requerido el diseño de un robot a medida para cada tarea(se abre en una nueva ventana). Como alternativa, las personas han pasado muchas décadas tratando de utilizar hardware robótico de uso general(se abre en una nueva ventana), pero con un éxito limitado debido a sus altos grados de libertad. En concreto, el hardware que utilizamos no es nuevo; la mano robótica que empleamos existe desde hace 15 años, pero el enfoque del software sí lo es.
Desde mayo de 2017, hemos tratado de entrenar una mano robótica similar a la humana para resolver el cubo de Rubik(se abre en una nueva ventana). Nos pusimos este objetivo porque creemos que entrenar con éxito una mano robótica de este tipo para realizar tareas de manipulación complejas sienta las bases de los robots de uso general. Resolvimos el cubo de Rubik en simulación en julio de 2017. Pero desde julio de 2018, solo podíamos manipular un bloque del robot. Ahora, alcanzamos nuestro objetivo inicial.
Resolución completa del cubo de Rubik. Este video se reproduce en tiempo real y no tiene ningún tipo de edición.
Resolver un cubo de Rubik con una mano es una tarea difícil incluso para los humanos, y los niños tardan varios años en adquirir la destreza necesaria para dominarla. Sin embargo, nuestro robot aún no ha perfeccionado su técnica, ya que resuelve el cubo de Rubik el 60 % de las veces (y solo el 20 % de las veces con una mezcla de máxima dificultad(se abre en una nueva ventana)).
Entrenamos redes neuronales para resolver el cubo de Rubik en simulación(se abre en una nueva ventana) con aprendizaje por refuerzo y el algoritmo de Kociemba(se abre en una nueva ventana) para elegir los pasos de la solución.A La aleatorización(se abre en una nueva ventana) de dominios(se abre en una nueva ventana) permite que las redes entrenadas únicamente en simulación se transfieran a un robot real.

El mayor desafío al que nos enfrentamos fue crear entornos en simulación lo suficientemente diversos como para captar la física del mundo real. Los factores como la fricción, la elasticidad y la dinámica son increíblemente difíciles de medir y modelar para objetos tan complejos como los cubos de Rubik o las manos robóticas. Además, descubrimos que la aleatorización de dominios por sí sola no es suficiente.
Para superarlo, desarrollamos un nuevo método llamado Aleatorización Automática de Dominios (ADR), que genera una sucesión infinita de entornos progresivamente más difíciles en simulación B. Esto nos exime de tener un modelo exacto del mundo real, al tiempo que permite aplicar al mundo real las redes neuronales aprendidas en simulación.
La ADR comienza con un entorno único, no aleatorio, en el que una red neuronal aprende a resolver el cubo de Rubik. A medida que la red neuronal mejora con la tarea y alcanza un umbral de rendimiento, la cantidad de aleatorización del dominio se incrementa automáticamente. Esto dificulta la tarea, ya que ahora la red neuronal debe aprender a generalizar en entornos más aleatorios. La red continúa su aprendizaje hasta que vuelve a superar el umbral de rendimiento, que es cuando entra en acción más aleatorización y se repite el proceso.
Uno de los parámetros que aleatorizamos fue el tamaño del cubo de Rubik (arriba). La ADR comienza con un tamaño fijo del cubo de Rubik y aumenta de forma gradual el rango de aleatorización a medida que avanza el entrenamiento. Aplicamos la misma técnica a todos los demás 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. De esta manera, la red neuronal tiene que aprender a resolver el cubo de Rubik en todas esas condiciones cada vez más difíciles.
La aleatorización de dominios nos obligó a especificar manualmente los rangos de aleatorización, lo cual es difícil, ya que demasiada aleatorización dificulta el aprendizaje, pero muy poca aleatorización dificulta la transferencia al robot real. La ADR lo resuelve al ampliar de forma automática los rangos de aleatorización a lo largo del tiempo sin intervención humana. Con la ADR no se necesita conocer el dominio y simplifica la aplicación de nuestros métodos a tareas nuevas. A diferencia de la aleatorización manual de dominios, la ADR también mantiene la tarea siempre desafiante con un entrenamiento que nunca converge.
Comparamos la ADR con la aleatorización manual de dominios en la tarea de voltear bloques, en la que ya contábamos con una línea de referencia sólida. Al comienzo, la ADR obtiene peores resultados en cuanto al número de aciertos en el robot real. Sin embargo, a medida que la ADR aumenta la entropía, que es una medida de la complejidad del entorno, el rendimiento de la transferencia acaba duplicándose con respecto a la línea de referencia, sin necesidad de ajuste humano.
Gracias a la ADR, somos capaces de entrenar redes neuronales en simulación que pueden resolver el cubo de Rubik con la mano robótica real. Esto se debe a que la ADR expone la red a una variedad infinita de simulaciones aleatorias. Esta exposición a la complejidad durante el entrenamiento es lo que prepara a la red para pasar de la simulación al mundo real, ya que tiene que aprender a identificar y ajustarse rápido a cualquier mundo físico al que se enfrente.
Para probar los límites de nuestro método, experimentamos con diversos problemas mientras la mano resuelve el cubo de Rubik. Esto no solo pone a prueba la solidez de nuestra red de control, sino también nuestra red de visión, que utilizamos para estimar la posición y la orientación del cubo.
Descubrimos que nuestro sistema entrenado con ADR es sorprendentemente sólido ante los problemas a pesar de que nunca nos entrenamos con ellos: El robot puede realizar con éxito la mayoría de las vueltas y rotaciones faciales bajo todos los problemas que probamos, aunque no con el máximo rendimiento.
Creemos que el metaaprendizaje(se abre en una nueva ventana), o aprender a aprender, es un requisito importante para desarrollar sistemas de uso general, ya que les permite adaptarse rápidamente a las condiciones cambiantes de su entorno. La hipótesis detrás de la ADR es que una red con memoria aumentada combinada con un entorno suficientemente aleatorio conduce a un metaaprendizaje emergente, en el que la red implementa un algoritmo de aprendizaje que le permite adaptar rápidamente su comportamiento al entorno en el que se implementa.C
Para comprobarlo de forma sistemática, medimos el tiempo que tarda nuestra red neuronal en acertar cada vez que se voltea el cubo (girar el cubo de forma que quede hacia arriba un color diferente) bajo distintos problemas, como reiniciar la memoria de la red, reiniciar la dinámica o romper una articulación. Realizamos estos experimentos en simulación, lo que nos permite promediar el rendimiento durante 10 000 ensayos en un entorno controlado.
Al comienzo, a medida que la red neuronal consigue más vueltas con éxito, cada tiempo sucesivo hasta el éxito disminuye porque la red aprende a adaptarse. Cuando se aplican problemas (líneas verticales grises en el gráfico anterior), vemos un pico en el tiempo hasta el éxito. Esto se debe a que la estrategia que emplea la red no funciona en el entorno nuevo. A continuación, la red vuelve a aprender sobre el nuevo entorno y de nuevo vemos que el tiempo hasta el éxito disminuye hasta la línea de referencia anterior.
También medimos la probabilidad de fallo y realizamos los mismos experimentos para las rotaciones de las caras (girar la cara superior 90 grados hacia la derecha o en sentido contrario) y encontramos el mismo patrón de adaptación.D
Visualizar nuestras redes nos permite comprender lo que almacenan en la memoria. Esto es cada vez más importante a medida que aumenta la complejidad de las redes.
La memoria de nuestra red neuronal se visualiza arriba. Utilizamos un bloque de desarrollo de la caja de herramientas de interpretabilidad(se abre en una nueva ventana), en concreto, la factorización de matrices no negativas, para condensar este vector de alta dimensión en seis grupos y asignar a cada uno un color único. A continuación, mostramos el color del grupo dominante en cada intervalo.
Descubrimos que cada grupo de memoria tiene asociado un comportamiento semánticamente significativo. Por ejemplo, podemos saber al mirar tan solo el grupo dominante de la memoria de la red si está a punto de girar el cubo o rotar la parte superior hacia la derecha antes de que ocurra.
Resolver el cubo de Rubik con una mano robótica aún no es fácil. Actualmente, nuestro método resuelve el cubo de Rubik el 20 % de las veces al aplicar una mezcla de máxima dificultad(se abre en una nueva ventana) que requiere 26 rotaciones de caras. Para las mezclas más sencillas, que requieren 15 rotaciones para lograrlo, el porcentaje de éxito es del 60 %. Cuando el cubo de Rubik se cae o se alcanza un tiempo de espera, consideramos que el intento fracasó. Sin embargo, nuestra red es capaz de resolver el cubo de Rubik a partir de cualquier condición inicial. Por lo tanto, si el cubo se cae, es posible volver a colocarlo en la mano y continuar la resolución.
En general, observamos que nuestra red neuronal tiene muchas más probabilidades de fallar durante las primeras rotaciones y giros de la cara. Esto se debe a que la red neuronal necesita equilibrar la resolución del cubo de Rubik con la adaptación al mundo físico durante esas primeras rotaciones y giros.
Con el fin de evaluar nuestro progreso y poder llevar un registro del problema, desarrollamos y diseñamos versiones personalizadas de cubos como peldaños hacia la resolución final de un cubo de Rubik normal.E

Prototipos del cubo de Rubik, de izquierda a derecha: cubo cerrado, cubo de caras, cubo completo, cubo Giiker(se abre en una nueva ventana), cubo de Rubik normal.
Prototipo | Posición + Orientación | Grados internos de libertad (sensor) |
Cubo cerrado | Visión | Cero (sin sensor) |
Cubo de caras | PhaseSpace | Dos (PhaseSpace) |
Cubo completo | PhaseSpace | Seis (PhaseSpace) |
Cubo Giiker | Visión | Seis (sensores integrados) |
Cubo de Rubik normal | Visión | Seis (Visión) |
Creemos que la destreza de nivel humano está en el camino hacia el desarrollo de robots de uso general y nos entusiasma avanzar en esta dirección.
Si deseas contribuir a crear sistemas de IA cada vez más generales, ya sean robóticos o virtuales, estamos contratando.
Notas al pie
- A
Nos centramos en los problemas que actualmente son difíciles de dominar para las máquinas: la percepción y la manipulación hábil. Por lo tanto, entrenamos nuestras redes neuronales para lograr las rotaciones de caras y los giros de cubos que genera el algoritmo de Kociemba.
- B
Nuestro trabajo está estrechamente relacionado con POET(se abre en una nueva ventana), que genera automáticamente entornos bidimensionales. Sin embargo, nuestro trabajo aprende a partir de una política conjunta sobre todos los entornos, que se transfiere a cualquier nuevo entorno generado.
- C
Más concretamente, nuestra hipótesis es que una red neuronal con capacidad finita entrenada en entornos de complejidad ilimitada obliga a la red a aprender un algoritmo de aprendizaje especial, ya que no puede memorizar soluciones para cada entorno individual y no existe una única política sólida que funcione con todas las aleatorizaciones.
- D
Consulte los resultados completos en nuestro informe(se abre en una nueva ventana).
- E
La única modificación que hicimos fue recortar un poco de la pegatina de colores de cada cubo central. Esto fue necesario para romper la simetría rotacional(se abre en una nueva ventana).
Autores
Agradecimientos
Gracias a las siguientes personas por sus comentarios sobre los borradores de esta publicación y artículo: 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.
Video: Peter Jordan (director), Yvette Solis (productora), Brooke Chan (productora)
Editora: Ashley Pilipiszyn
Diseño: Justin Jay Wang y Ben Barry
Fotografía: Eric Haines


