Idioma para recompensas en la síntesis de habilidades robóticas

Idioma de recompensas en la síntesis de habilidades robóticas

Publicado por Wenhao Yu y Fei Xia, Investigadores en Ciencias de la Investigación, Google

Empoderar a los usuarios finales para enseñar de forma interactiva a los robots a realizar tareas novedosas es una capacidad crucial para su integración exitosa en aplicaciones del mundo real. Por ejemplo, un usuario puede querer enseñar a un perro robot a realizar un nuevo truco, o enseñar a un robot manipulador cómo organizar una lonchera según las preferencias del usuario. Los avances recientes en modelos de lenguaje grandes (LLMs, por sus siglas en inglés) preentrenados con datos extensos de internet han demostrado un camino prometedor para lograr este objetivo. De hecho, los investigadores han explorado diversas formas de aprovechar los LLMs para la robótica, desde la planificación paso a paso y el diálogo orientado a objetivos hasta los agentes de escritura de código de robot.

Aunque estos métodos imparten nuevos modos de generalización compositiva, se centran en utilizar el lenguaje para vincular nuevos comportamientos a partir de una biblioteca existente de primitivas de control que están diseñadas manualmente o se aprenden a priori. A pesar de tener conocimiento interno sobre los movimientos del robot, los LLMs tienen dificultades para generar directamente comandos de bajo nivel para el robot debido a la disponibilidad limitada de datos de entrenamiento relevantes. Como resultado, la expresión de estos métodos se ve limitada por la amplitud de las primitivas disponibles, cuyo diseño a menudo requiere un amplio conocimiento experto o una recopilación masiva de datos.

En “Language to Rewards for Robotic Skill Synthesis” proponemos un enfoque para permitir a los usuarios enseñar a los robots acciones novedosas a través de la entrada de lenguaje natural. Para hacerlo, aprovechamos las funciones de recompensa como una interfaz que conecta el lenguaje con las acciones de bajo nivel del robot. Sostenemos que las funciones de recompensa proporcionan una interfaz ideal para estas tareas debido a su riqueza en semántica, modularidad e interpretabilidad. También proporcionan una conexión directa con las políticas de bajo nivel a través de la optimización de caja negra o el aprendizaje por refuerzo (RL, por sus siglas en inglés). Desarrollamos un sistema de lenguaje a recompensa que utiliza los LLMs para traducir las instrucciones de los usuarios en lenguaje natural a código que especifica la recompensa, y luego aplica MuJoCo MPC para encontrar acciones óptimas de bajo nivel del robot que maximicen la función de recompensa generada. Demostramos nuestro sistema de lenguaje a recompensa en una variedad de tareas de control robótico en simulación utilizando un robot cuadrúpedo y un robot manipulador hábil. Además, validamos nuestro método en un manipulador de robot físico.

El sistema de lenguaje a recompensa consta de dos componentes principales: (1) un Traductor de Recompensas y (2) un Controlador de Movimiento. El Traductor de Recompensas mapea las instrucciones de lenguaje natural de los usuarios a funciones de recompensa representadas como código Python. El Controlador de Movimiento optimiza la función de recompensa dada utilizando la optimización de horizonte recurrente para encontrar las acciones óptimas de bajo nivel del robot, como la cantidad de torque que se debe aplicar a cada motor del robot.

Los LLMs no pueden generar directamente acciones robóticas de bajo nivel debido a la falta de datos en el conjunto de datos de preentrenamiento. Proponemos utilizar funciones de recompensa para cerrar la brecha entre el lenguaje y las acciones de bajo nivel del robot, y permitir movimientos robóticos complejos novedosos a partir de instrucciones de lenguaje natural.

Traductor de Recompensas: Traducción de instrucciones de usuario a funciones de recompensa

El módulo de Traductor de Recompensas se creó con el objetivo de mapear las instrucciones de lenguaje natural de los usuarios a funciones de recompensa. El ajuste de la recompensa es altamente específico del dominio y requiere conocimiento experto, por lo que no nos sorprendió cuando descubrimos que los LLMs entrenados en conjuntos de datos de lenguaje genéricos no pueden generar directamente una función de recompensa para un hardware específico. Para abordar esto, aplicamos la capacidad de aprendizaje en contexto de los LLMs. Además, dividimos el Traductor de Recompensas en dos submódulos: Descriptor de Movimiento y Codificador de Recompensa.

Descriptor de Movimiento

En primer lugar, diseñamos un Descriptor de Movimiento que interpreta la entrada de un usuario y la expande en una descripción de lenguaje natural del movimiento del robot deseado siguiendo una plantilla predefinida. Este Descriptor de Movimiento convierte las instrucciones del usuario potencialmente ambiguas o vagas en movimientos de robot más específicos y descriptivos, lo que hace que la tarea de codificación de recompensa sea más estable. Además, los usuarios interactúan con el sistema a través del campo de descripción de movimiento, por lo que esto también proporciona una interfaz más interpretable para los usuarios en comparación con mostrar directamente la función de recompensa.

Para crear el Descriptor de Movimiento, utilizamos un LLM para traducir la entrada del usuario en una descripción detallada del movimiento deseado del robot. Diseñamos instrucciones que guían a los LLM para generar la descripción del movimiento con la cantidad adecuada de detalles y formato. Al traducir una instrucción vaga del usuario en una descripción más detallada, podemos generar de manera más confiable la función de recompensa con nuestro sistema. Esta idea también puede aplicarse potencialmente de manera más general más allá de las tareas de robótica, y es relevante para el Monólogo Interno y la guía de pensamiento.

Codificador de Recompensa

En la segunda etapa, utilizamos el mismo LLM del Descriptor de Movimiento para el Codificador de Recompensa, que traduce la descripción del movimiento generado en la función de recompensa. Las funciones de recompensa se representan utilizando código Python para beneficiarse del conocimiento de los LLM sobre recompensas, codificación y estructura de código.

Idealmente, nos gustaría utilizar un LLM para generar directamente una función de recompensa R(s, t) que mapee el estado del robot s y el tiempo t en un valor de recompensa escalar. Sin embargo, generar la función de recompensa correcta desde cero sigue siendo un problema desafiante para los LLM y corregir los errores requiere que el usuario comprenda el código generado para proporcionar la retroalimentación correcta. Como tal, predefinimos un conjunto de términos de recompensa que se utilizan comúnmente para el robot de interés y permitimos que los LLM compongan diferentes términos de recompensa para formular la función de recompensa final. Para lograr esto, diseñamos una guía que especifica los términos de recompensa y guía al LLM para generar la función de recompensa correcta para la tarea.

La estructura interna del Traductor de Recompensa, que tiene la tarea de mapear las entradas del usuario a funciones de recompensa.

Controlador de Movimiento: Traduciendo funciones de recompensa en acciones de robot

El Controlador de Movimiento toma la función de recompensa generada por el Traductor de Recompensa y sintetiza un controlador que mapea la observación del robot a acciones de robot de bajo nivel. Para hacer esto, formulamos el problema de síntesis del controlador como un proceso de decisión de Markov (MDP), que se puede resolver utilizando diferentes estrategias, incluyendo RL, optimización de trayectoria fuera de línea o control predictivo basado en modelo (MPC). Específicamente, utilizamos una implementación de código abierto basada en el MPC de MuJoCo (MJPC).

MJPC ha demostrado la creación interactiva de comportamientos diversos, como locomoción de patas, agarre y deslizamiento de dedos, al mismo tiempo que admite múltiples algoritmos de planificación, como lineal-gaussiano iterativo (iLQG) y muestreo predictivo. Más importantly, la replanificación frecuente en MJPC potencia su robustez a las incertidumbres en el sistema y permite un sistema interactivo de síntesis y corrección de movimientos cuando se combina con LLMs.

Ejemplos

Perro robot

En el primer ejemplo, aplicamos el sistema de lenguaje-a-recompensa a un robot cuadrúpedo simulado y le enseñamos a realizar diversas habilidades. Para cada habilidad, el usuario proporcionará una instrucción concisa al sistema, que luego sintetizará el movimiento del robot utilizando funciones de recompensa como una interfaz intermedia.

Manipulador diestro

Luego aplicamos el sistema de lenguaje-a-recompensa a un robot manipulador diestro para realizar una variedad de tareas de manipulación. El manipulador diestro tiene 27 grados de libertad, lo que es muy desafiante de controlar. Muchas de estas tareas requieren habilidades de manipulación más allá del agarre, lo que dificulta que los primitivos pre-diseñados funcionen. También incluimos un ejemplo en el que el usuario puede instruir de manera interactiva al robot para colocar una manzana dentro de un cajón.

Validación en robots reales

También validamos el método de lenguaje-a-recompensa utilizando un robot manipulador del mundo real para realizar tareas como recoger objetos y abrir un cajón. Para realizar la optimización en el Controlador de Movimiento, utilizamos AprilTag, un sistema de marcadores fiduciales, y F-VLM, una herramienta de detección de objetos de vocabulario abierto, para identificar la posición de la mesa y los objetos que se manipulan.

Conclusión

En este trabajo, describimos un nuevo paradigma para la interfaz de un LLM con un robot a través de funciones de recompensa, impulsadas por una herramienta de control predictivo de modelo de bajo nivel, MuJoCo MPC. El uso de funciones de recompensa como interfaz permite que los LLM trabajen en un espacio rico en semántica que aprovecha las fortalezas de los LLM, al tiempo que garantiza la expresividad del controlador resultante. Para mejorar aún más el rendimiento del sistema, proponemos utilizar una plantilla estructurada de descripción de movimiento para extraer mejor el conocimiento interno sobre los movimientos de los robots de los LLM. Demostramos nuestro sistema propuesto en dos plataformas de robot simuladas y un robot real, tanto para tareas de locomoción como de manipulación.

Agradecimientos

Queremos agradecer a nuestros coautores Nimrod Gileadi, Chuyuan Fu, Sean Kirmani, Kuang-Huei Lee, Montse González Arenas, Hao-Tien Lewis Chiang, Tom Erez, Leonard Hasenclever, Brian Ichter, Ted Xiao, Peng Xu, Andy Zeng, Tingnan Zhang, Nicolas Heess, Dorsa Sadigh, Jie Tan y Yuval Tassa por su ayuda y apoyo en varios aspectos del proyecto. También queremos agradecer a Ken Caluwaerts, Kristian Hartikainen, Steven Bohez, Carolina Parada, Marc Toussaint y a los equipos de Google DeepMind por sus comentarios y contribuciones.