Язык для наград за синтез навыков робототехники

Language for rewards in robotics skills synthesis

Опубликовано Wenhao Yu и Fei Xia, научные сотрудники Google

Дает возможность конечным пользователям взаимодействовать с роботами и обучать их выполнять новые задачи – это важная возможность для их успешной интеграции в реальные приложения. Например, пользователь может захотеть научить робота-собаку новому трюку или обучить манипулятор-робота организовывать ланч-бокс в соответствии с предпочтениями пользователя. Недавние достижения в области больших языковых моделей (LLM), предварительно обученных на обширных данных интернета, показали многообещающий путь к достижению этой цели. В самом деле, исследователи исследовали различные способы использования LLM для робототехники, от планирования шаг за шагом и целенаправленного диалога до агентов написания робот-кода.

Хотя эти методы дают новые способы композиционной обобщаемости, они основаны на использовании языка для связывания новых поведений из существующей библиотеки контрольных примитивов, которые либо являются вручную созданными, либо изученными априори. Несмотря на наличие внутренних знаний о движениях робота, LLM с трудом прямо выводят команды робота низкого уровня из-за ограниченной доступности соответствующих обучающих данных. В результате выражение этих методов ограничивается широтой доступных примитивов, создание которых часто требует обширных экспертных знаний или массового сбора данных.

В статье “Язык до вознаграждений для синтеза робототехнических навыков” мы предлагаем подход, позволяющий пользователям обучать роботов новым действиям с использованием естественного языка. Для этого мы используем функции вознаграждения в качестве интерфейса, который соединяет язык и действия робота низкого уровня. Мы полагаем, что функции вознаграждения предоставляют идеальный интерфейс для таких задач благодаря своей семантике, модульности и интерпретируемости. Они также обеспечивают прямую связь с политиками низкого уровня через оптимизацию черного ящика или обучение с подкреплением (RL). Мы разработали систему языка до вознаграждения, которая использует LLM для перевода естественных языковых инструкций пользователя в код, определяющий вознаграждение, а затем применяет MuJoCo MPC для нахождения оптимальных действий робота низкого уровня, которые максимизируют сгенерированную функцию вознаграждения. Мы демонстрируем нашу систему языка до вознаграждения на различных задачах робототехники в симуляции с использованием четырехногого робота и манипуляторного робота с ловкими руками. Мы также проверяем наш метод на физическом роботе-манипуляторе.

Система языка до вознаграждения состоит из двух основных компонентов: (1) Транслятора вознаграждения и (2) Контроллера движения. Транслятор вознаграждения отображает естественные языковые инструкции пользователей в функции вознаграждения, представленные в виде кода на языке Python. Контроллер движения оптимизирует заданную функцию вознаграждения с использованием оптимизации с отступом во времени, чтобы найти оптимальные действия робота низкого уровня, такие как количество момента, которое должно быть применено к каждому мотору робота.

LLM не может напрямую генерировать действия робота низкого уровня из-за нехватки данных в предварительно обученном наборе данных. Мы предлагаем использовать функции вознаграждения для преодоления разрыва между языком и действиями робота низкого уровня и обеспечения появления новых сложных движений робота из естественных языковых инструкций.

Транслятор вознаграждения: перевод инструкций пользователя в функции вознаграждения

Модуль Транслятора вознаграждения был создан с целью отображения естественных языковых инструкций пользователей в функции вознаграждения. Настройка вознаграждения является очень специфичной для области и требует экспертных знаний, поэтому нам не было удивительно, когда мы обнаружили, что LLM, обученные на общих языковых наборах данных, не могут напрямую генерировать функцию вознаграждения для конкретного оборудования. Для решения этой проблемы мы применяем возможность контекстного обучения LLM. Кроме того, мы разделили Транслятор вознаграждения на два подмодуля: Дескриптор движения и Кодировщик вознаграждения.

Дескриптор движения

Во-первых, мы разработали Дескриптор движения, который интерпретирует ввод от пользователя и расширяет его в естественное описание желаемого движения робота в соответствии с предопределенным шаблоном. Данный Дескриптор движения преобразует потенциально неоднозначные или неопределенные инструкции пользователя в более конкретные и описательные движения робота, что делает задачу кодирования вознаграждения более стабильной. Кроме того, пользователи взаимодействуют с системой через поле описания движения, что также обеспечивает более интерпретируемый интерфейс для пользователей по сравнению с прямым отображением функции вознаграждения.

Для создания Описателя Движения мы используем LLM для перевода ввода пользователя в подробное описание желаемого движения робота. Мы разрабатываем подсказки, которые направляют LLM на вывод описания движения с нужным количеством деталей и форматирования. Переводя неопределенную инструкцию пользователя в более подробное описание, мы сможем более надежно генерировать функцию вознаграждения с помощью нашей системы. Эта идея также может быть потенциально применена более широко за пределами задач робототехники и имеет отношение к Внутреннему Монологу и подсказке цепочки мыслей.

Reward Coder

На втором этапе мы используем тот же LLM из Описателя Движения для Reward Coder, который переводит сгенерированное описание движения в функцию вознаграждения. Функции вознаграждения представляются с использованием кода Python, чтобы воспользоваться знаниями LLM о вознаграждении, программировании и структуре кода.

Идеально было бы использовать LLM для прямой генерации функции вознаграждения R (s, t), которая отображает состояние робота s и время t в скалярное значение вознаграждения. Однако генерация правильной функции вознаграждения с нуля по-прежнему является сложной задачей для LLM, и исправление ошибок требует от пользователя понимания сгенерированного кода, чтобы предоставить правильную обратную связь. Поэтому мы предварительно определяем набор терминов вознаграждения, которые обычно используются для интересующего нас робота, и позволяем LLM составлять различные термины вознаграждения для формулирования конечной функции вознаграждения. Для этого мы разрабатываем подсказку, которая указывает термины вознаграждения и направляет LLM на генерацию правильной функции вознаграждения для задачи.

Внутренняя структура Транслятора Вознаграждения, который отвечает за отображение входных данных пользователя в функции вознаграждения.

Motion Controller: Перевод функций вознаграждения в действия робота

Моушн-контроллер использует функцию вознаграждения, сгенерированную Транслятором Вознаграждения, и синтезирует контроллер, который отображает наблюдение робота в низкоуровневые действия робота. Для этого мы формулируем задачу синтеза контроллера как процесс принятия решений Маркова (MDP), который может быть решен различными стратегиями, включая RL, оптимизацию траектории в автономном режиме или модельное предсказывающее управление (MPC). В частности, мы используем открытую реализацию, основанную на MuJoCo MPC (MJPC).

MJPC продемонстрировал интерактивное создание разнообразных поведений, таких как движение на ногах, захват и ходьба пальцами, поддерживая при этом несколько алгоритмов планирования, таких как итеративное линейно-квадратное-гауссово (iLQG) и предсказательная выборка. Важнее всего, частое перепланирование в MJPC обеспечивает его устойчивость к неопределенностям в системе и позволяет создавать интерактивную систему синтеза и коррекции движения в сочетании с LLM.

Примеры

Робот-собака

В первом примере мы применяем систему от языка к вознаграждению к имитационному квадрупедному роботу и обучаем его выполнять различные навыки. Для каждого навыка пользователь предоставляет краткую инструкцию системе, которая затем синтезирует движение робота, используя функции вознаграждения в качестве промежуточного интерфейса.

Ловкий манипулятор

Затем мы применяем систему от языка к вознаграждению к манипуляторному роботу для выполнения различных задач манипуляции. У ловкого манипулятора 27 степеней свободы, что очень сложно контролировать. Многие из этих задач требуют навыков манипуляции, выходящих за рамки захвата, что затрудняет работу предварительно разработанных примитивов. Мы также включаем пример, в котором пользователь может взаимодействовать с роботом, чтобы положить яблоко в ящик.

Проверка на реальных роботах

Мы также проверяем метод от языка к вознаграждению, используя манипуляционного робота в реальной среде для выполнения задач, таких как поднятие предметов и открытие ящика. Для выполнения оптимизации в Моушн-контроллере мы используем AprilTag, систему фидуциальных маркеров, и F-VLM, инструмент обнаружения объектов с открытым словарем, чтобы определить положение стола и объектов, которые подвергаются манипуляции.

Заключение

В данной работе мы описываем новую парадигму взаимодействия с LLM через функции вознаграждения, основанные на инструменте низкоуровневого модельного предиктивного управления MuJoCo MPC. Использование функций вознаграждения в качестве интерфейса позволяет LLM работать в семантически богатом пространстве, которое акцентирует его сильные стороны и обеспечивает выразительность получаемого контроллера. Для дальнейшего улучшения производительности системы мы предлагаем использовать структурированный шаблон описания движения, чтобы лучше извлечь внутренние знания о движении робота из LLM. Мы демонстрируем нашу предложенную систему на двух симулированных платформах роботов и одном реальном роботе для задач локомоции и манипуляции.

Благодарности

Мы хотели бы поблагодарить наших соавторов Nimrod Gileadi, Chuyuan Fu, Sean Kirmani, Kuang-Huei Lee, Montse Gonzalez 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 и Yuval Tassa за их помощь и поддержку в различных аспектах проекта. Мы также хотели бы выразить благодарность Ken Caluwaerts, Kristian Hartikainen, Steven Bohez, Carolina Parada, Marc Toussaint и командам Google DeepMind за их обратную связь и вклад.