Не погружайтесь в робототехнику, я сделал это за вас
Да, я люблю нейросети! А больше нейросетей, я люблю собирать роботов. Поэтому далее я расскажу по какому пайплайну человечеству удалось «воплотить» искуственный интеллект.
П-бот просто милашка, но без интеллекта
Who is Мистер Робот?
Наверное, самым понятным для обывателя «воплощением» ИИ является антропоморфный робот. Он же гуманоид, человекоподобный, и наконец — Терминатор. А самое известное представление Искусственного Интеллекта — большая языковая модель, например ChatGPT. Вот только есть важная проблема: такая модель не обладает интерфейсом для прямого управления роботом. Об ограничениях таких моделей еще поговорим далее.
Архитектура «Мозга»
На данном эволюционном этапе робототехнических решений выкристаллизовалась рабочая архитектура «универсального мозга». Ее логически можно разделить на понятные сущности: главный (головной) мозг и спинной мозг. Разграничение ответственности между ними сильно размыто и может изменяться в зависимости от реализации, однако фактически выглядит следующим образом:
Главный мозг принимает стратегические решения исходя из ситуации и имеет в виду суммаризированное представление контекста.
Спинной мозг обладает значительно меньшим, однако более детальным окном контекста и принимает реактивные решения исходя из текущей ситуации.
Уровень планирования
Наиболее осведомленной о Мире моделью во всем стеке является большая модель. Обычно в ее роли выступает большая языковая модель ввиду доступности, хотя с появлением OpenAI Sora ситуация потенциально может измениться. Эта модель обязана иметь представление концепции физических процессов и обладать способностью к логическому «мышлению». Она генерирует последовательность примитивных действий, которые передаются далее по стеку. И, конечно, получает фидбек о состоянии среды в которой оперирует.
Такую систему можно значительно улучшить добавлением пространственного представления. Эту задачу решают модели, использующие нейронные поля (NeRF) для навигации. Создав канал «общения» между этими двумя моделями можно добиться прогнозирования в глубину доступных роботу действий.
Интеграция языковой модели
Далее я буду говорить о большой языковой модели для упрощения понимания, однако добавление модальностей потенциально расширяет понимание Мира моделью и улучшает качество генерируемых действий.
Прошедший год был богат на исследования в этой области. Наиболее значимые, заложившие фундамент для следующих статей оказались: PaLM-SayCan и Code as Policies. Они предложили совершенно различные подходы к «приземлению» языковых моделей.
Введу немного контекста. Языковая модель является трансформером и оперирует в конечном вероятностном пространстве токенов. То есть, если на входе последовательность слов, на выходе — тоже последовательность слов. Если на входе последовательность картинок, на выходе тоже картинки. Подходящие для нашей задачи модели работают исключительно в языковом пространстве. «Приземление» означает ограничить модель доступными к выполнению роботом действиям и заставить ее генерировать план состоящий из атомарных навыков.
Когда такая модель генерирует для робота план действий его необходимо каким-то образом распарсить. Подход Code as Policies предлагает ввести базовый промпт, заставляющий модель генерировать на выходе интерпретируемые инструкции, в данном контексте Python-код выполняемый привычным интерпретатором. SayCan значительно хитрее, в таком подходе модели доступно генерировать действия из ограниченного пространства решений. Подробнее можно прочитать: Заземляем языковую модель на робота
О обоих подходов есть фундаментальные ограничения. CaP может выйти из окна контекста, забыть системный промпт и генерировать неожиданные для интерпретатора команды.
SayCan же невероятно медленный подход. Каждое доступное действие необходимо прогонять через модель, что занимает огромное время.
В дополнение отмечу, что каждую модель возможно файнтюнить для более качественного выполнения специфических задач робототехники, однако фундаментальные проблемы все еще не решены.
Стек манипуляции
Предположим, что глобальную задачу «навести порядок в квартире» удалось разбить на примитивные навыки. И сейчас перед робот стоит понятна задача: «вымыть тарелку», а сам робот стоит перед раковиной с грязной посудой.
Нужен некий «черный ящик», которому на вход поступает видеопоток с камер, тактильных датчиков и других периферийных устройств, а на выходе ожидается последовательность промежуточных точек через которые необходимо пройти частям тела робота для взаимодействия с предметами быта. Промежуточные точки могут быть сгенерированы с различными промежутками, в разных пространствах управления. Однако, чем чаще мы получаем такие промежуточные точки, тем лучше. А может это будут и не точки, а их производные N-ой степени, что даже лучше, но в таком случае необходимо поддерживать заданную частоту. И понятно, что трансформерная модель с трудом справится с такой специфичной задачей.
Благо, на помощь приходят диффузионные модели, способные генерировать целую траектория ведя контекст действий (planning horizon). Ярким представителем такого подхода является Diffusion Policy.
Возникает закономерный вопрос, на каких же данных обучать такие модели? Есть несколько вариантов: на видео, на демонстрациях и в симуляции. Первые два можно обобщить как Behavioral Cloning. Для обучения в симуляции можно использовать обучение с подкреплением (RL) или Scripted Policy (обычно обобщение BC и RL). Интересный подход — Aloha, парни собрали из очень простых компонентов роботизированный стек и обучили его довольно нетривиальным действиям. Я не удержался и с небольшим усилиями запустил его на своем роботе:
Видео
Но самым крутым подходом на данный момент является RobotCAT — подход, способный к самосовершенствованию. Его обучили на небольшом количестве данных, затем позволили оперировать реальном мире и генерировать новые данные.
Наверное стоит отметить, что описанные подходы вполне понятно как улучшать. Простым добавлением CLIP можно позволить модели понимать текстовое описание задачи. Более того, эти модели склонны к обобщению и при большой обучающей выборке могут управлять разными роботами различных конфигураций.