Мультимодальность действий
Оператор объезжает чайник то слева, то справа, а политика, обученная повторять за ним, едет прямо в чайник. Больше демонстраций не помогает. В уроке найдём причину: среднеквадратичная ошибка учит среднее действие, а среднее двух правильных действий бывает неправильным. Потом разберём модели, которые выбирают одно действие, и посмотрим, как удержать выбранную сторону до конца объезда.
Больше демонстраций — меньше аварий?
Ада едет из гостиной в кухню, а на пути стоит чайник. Учитель-планировщик записывает поездки и объезжает чайник то слева, то справа. Сеть, обученная повторять за учителем, едет прямо в чайник.
Ада — домашний гуманоидный робот, на котором построены лабораторные работы курса. Подробнее о ней — в уроке 0.1.
Когда политика ошибается, первая мысль — добавить данных. В уроке 1.1 это помогало: политика ошибалась там, куда оператор никогда не заезжал, и новые поездки закрывали пробелы. Здесь пробелов нет: каждая демонстрация проходит мимо чайника.
Проверим, помогут ли данные и в этот раз. Сначала нарисуй прогноз: в скольких опытах из 20 Ада заденет чайник после обучения на 10, 40, 200 и 1000 демонстрациях. Сторону каждой поездки учителя выбирает монетка. Потом сверь прогноз с опытом: в каждом опыте учитель записывает новые поездки, сеть обучается заново и Ада едет один раз.
Перетаскивай точки вверх и вниз: сколько опытов из 20 закончатся касанием чайника.
- Прогноз нарисован для всех четырёх точек
- Опыт проведён для всех четырёх точек
Если данных больше, а аварий не меньше, дело не в количестве примеров. Тогда почему сеть, которая видела только объезды, выбирает путь, которого не было ни в одной демонстрации?
Под капотом: как устроен опыт
Сцена. Ада — круг радиусом 18 см, чайник — 13 см. Касание засчитывается, если центры ближе 31 см. Ада едет вверх по 6 см за шаг в 0,1 с, маршрут без чайника — прямая от старта к столу, 52 шага.
Учитель. Сначала едет прямо, потом сворачивает и проходит мимо чайника в среднем в 56 см от маршрута, с разбросом от 52 до 62 см, и возвращается на маршрут до проёма в кухню. На каждом шаге руку оператора немного трясёт, около 0,5 см.
Сеть. Наблюдение — одно число: какую долю пути Ада уже проехала. Выход — боковое смещение от маршрута на следующем шаге. Сеть 1 → 32 → 32 → 1 с tanh, функция потерь MSE, 400 шагов Adam по 32 примера. Регулятор ведёт Аду к выданному смещению не быстрее 9 см за шаг.
Почему сеть видит только долю пути. Так у всех демонстраций в одной точке маршрута одинаковое наблюдение, а действий два, и причина аварии видна в чистом виде. Если дать сети ещё и боковое положение Ады, замкнутый контур нередко сам выбирает сторону: сеть усиливает малое отклонение от середины, потому что рядом с ним все демонстрации уходят в ту же сторону. Так бывает и в жизни: в симуляторе CARLA при демонстрациях 50 на 50 регрессия в 98% прогонов поворачивала направо. Выбрать сторону регрессия может, но гарантии этого нет.
Регрессия выдаёт среднее
Ответ — в том, чему учит функция потерь. Сеть со среднеквадратичной ошибкой (MSE) ищет действие, которое в среднем ближе всего ко всем примерам с тем же наблюдением. Это условное среднее. Пока правильное действие одно, среднее с ним совпадает. Если правильных действий два — объезд слева и объезд справа, — среднее оказывается между ними, то есть в чайнике.
Кристофер Бишоп описал это в 1994 году: «the average of several correct target values is not necessarily itself a correct value». Его пример — обратная кинематика двухзвенной руки. Это та же ошибка, что в уроке 0.3: у одной позы захвата два решения, локоть в одну и в другую сторону, и сеть выдавала их среднее, которое промахивалось мимо цели.
Первое, что приходит в голову, — сменить функцию потерь. С L1, суммой модулей отклонений, сеть выдаёт не среднее, а медиану. На этом построена OpenVLA-OFT: регрессия с L1 даёт 97,1% успеха на бенчмарке LIBERO. Но её авторы оговаривают, что в их данных у каждой задачи одна стратегия.
Нарисуй объезды сам и посмотри, что сделают MSE и L1. Веди линию от Ады к столу мимо чайника: каждая линия — одна демонстрация. Сплошная линия — ответ сети с MSE, пунктир — с L1.
Выходит, L1 выбирает сторону большинства, но при равном счёте её ответ не определён. MSE ведёт в чайник при любом счёте, кроме сильного перекоса. Нужна модель, которая хранит обе стороны и выбирает одну из них. Но часто ли в настоящих данных у одного наблюдения несколько правильных действий?
Под капотом: среднее и медиана
Для MSE оптимум — условное среднее, для L1 — условная медиана:
Минимум суммы квадратов — среднее: сдвиг ответа в любую сторону только увеличивает сумму. Минимум суммы модулей — медиана. Сдвиг ответа на малую величину меняет сумму на , где и — число точек по разные стороны от ответа, поэтому выгодно двигаться к большинству. При равном счёте сумма не меняется на всём отрезке между двумя средними точками, и решение не единственно. Здесь пунктир L1 рисуется посередине этого отрезка, а сам отрезок закрашен.
Сеть здесь не обучается: мы сразу рисуем её оптимум. Для MSE это среднее смещение всех линий в каждой точке пути, для L1 — медиана. Обученная сеть приходит к тем же линиям: в первом интерактиве она вела Аду ровно по среднему демонстраций. Каждая нарисованная линия сглаживается и продолжается до стола, если отпустить её после чайника.
Где в данных несколько стратегий
У чайника две моды, потому что учитель бросает монетку. В настоящих данных несколько правильных действий появляются по своим причинам:
- Разные операторы. В датасете robomimic шесть операторов записали по 50 демонстраций. Политика со смесью гауссиан на таких данных работает заметно лучше: если заменить смесь детерминированным выходом, результат падает до 58% относительно.
- Порядок подзадач. В Franka Kitchen оператор выполняет 4 подзадачи из 7 в разном порядке.
- Паузы. Авторы Diffusion Policy пишут, что они «common during teleoperation».
- Разброс у одного оператора. В ACT место, где одна рука передаёт предмет другой, каждый раз разное.
- Оператор видит больше, чем камеры робота. Его решения зависят от того, чего политика не видит, и для неё выглядят случайными.
Отсюда популярный довод: генеративные политики выигрывают, потому что данные мультимодальны. Mazza и соавторы в 2026 году проверили его напрямую. Они оценили число условных мод — сколько разных продолжений в среднем бывает у одного наблюдения на горизонте 10 шагов. значит, что стратегия одна.
Прежде чем смотреть на цифры, оцени сам. Для каждого датасета поставь вероятность того, что в нём у одного наблюдения заметно больше одной стратегии: не меньше 1,1. Чем увереннее верный ответ, тем больше очков, чем увереннее неверный — тем меньше.
На стандартных бенчмарках мод почти нет, и регрессия с пачками действий там не хуже генеративных моделей. Pan и соавторы сравнили их на 28 бенчмарках и не нашли разницы, кроме задач на высокую точность. В данных с разными операторами моды есть: в ALOHA Unleashed на 8658 демонстрациях диффузия даёт 70% успеха против 25% у регрессии с L1. Когда моды есть, как научить сеть выдавать распределение действий, а не одно число?
Под капотом: оценки и счёт
На горизонте 30 шагов оценки такие: Push-T — 1,01, LIBERO — 1,03, MetaWorld — 1,07, Kitchen — 1,23, реальный бимодальный захват — 2,27. Реальный захват — хирургический робот берёт ткань слева или справа от опасной зоны: 90 демонстраций, 45 на 45. Детерминированная регрессия получает на нём 0% успеха.
Счёт — правило Брайера: за каждый датасет штраф , где — твоя вероятность, , если , и иначе. Очки: . Ответ «50%» везде даёт 75 очков, полная уверенность в верных ответах — 100, полная уверенность в неверных — 0.
Замеров доли мультимодальных состояний в больших датасетах вроде DROID и Open X-Embodiment мы не нашли.
Как выдать распределение действий
Чтобы не усреднять, политика должна выдавать распределение действий и брать из него сэмпл. Способов несколько, и у каждого своя цена.
| Способ | Идея | Сильная сторона | Цена |
|---|---|---|---|
| Регрессия: MSE или L1 | одно действие — среднее или медиана | быстро и стабильно | усредняет моды или выбирает одну случайно |
| Смесь гауссиан | гауссиан с весами: Bishop 1994, robomimic 2021 | явные моды, дешёвый сэмпл | число компонент задают заранее |
| Бины по измерениям | RT-1: 256 классов на каждое из 11 измерений | любая форма распределения по одной оси | теряет связи между измерениями |
| Токены и авторегрессия | действие как текст: RT-2, FAST | общий словарь с языковой моделью | медленный вывод |
| Кластеры и смещение | BeT 2022: k-means плюс поправка | выбор моды за один проход | число кластеров k задают заранее |
| Энергия | IBC 2021: действие — минимум энергии E(s, a) | держит разрывы резкими | нестабильное обучение, дорогой вывод |
| CVAE | ACT 2023: латентный «стиль» z и пачка действий | быстро, нужно мало данных | на тесте z = 0, то есть одна мода |
| Диффузия и flow matching | шум превращается в пачку действий: Diffusion Policy, π0 | стабильное обучение, моды любой формы | десятки проходов сети на одно решение |
Выбор головы политики заметен на деле. В RT-1 замена 256 бинов на гауссиану роняет успех с 97 до 68% на знакомых задачах и с 76 до 43% на новых. В IBC на настоящей руке xArm6 энергетическая модель против MSE: 85,0 против 35,0% на двух блоках, 88,3 против 55,0% на варианте «любые цели, любой порядок», 83,3 против 6,7% на вставке с допуском 1 мм. ACT без CVAE на человеческих демонстрациях падает с 35,3 до 2%, а на скриптовых разницы нет.
Самый простой способ — бины, как в RT-1: каждое измерение действия делят на 256 интервалов и учат классификатор. Он описывает любую форму распределения по одной оси, даже с двумя пиками. Но если измерения сэмплировать независимо, модель не знает, как они связаны. Проверь на действии из двух чисел, у которого две моды: (−1, +1) и (+1, −1).
Бины по осям теряют связи между измерениями, и авторегрессия возвращает их ценой медленного вывода. Смесь гауссиан описывает каждую моду целиком сразу. Проедет ли с ней Ада мимо чайника — и чем она отличается от диффузии?
Под капотом: смесь, энергия и бины
- Смесь гауссиан. , обучение — минимум .
- Энергия. , энергию учат через InfoNCE на отрицательных примерах.
- Бины. : каждое измерение отдельно.
- Авторегрессия. : каждое следующее измерение видит предыдущие.
В RT-1 у каждого из 11 измерений 256 равномерных бинов, без авторегрессии. RT-2 и OpenVLA декодируют измерения по очереди, как слова в тексте. FAST сжимает пачку действий через DCT и BPE и догоняет диффузионную π0, обучаясь до 5 раз быстрее, но вывод занимает около 750 мс на пачку против 100 мс.
У IBC неявная модель держит разрыв резким, а явная, по словам авторов, «interpolates across each discontinuity». Цена — нестабильное обучение: авторы Diffusion Policy называют IBC «prone to training instability».
В интерактиве у каждой оси 16 бинов на отрезке от −1,6 до 1,6. Данные — 400 точек вокруг (−1, +1) и (+1, −1) с разбросом 0,15.
Три Ады и чайник
Проверим на сцене. Регрессия, смесь из двух гауссиан и диффузия учатся на одних и тех же демонстрациях и едут к одному чайнику одновременно. Регрессия и смесь — настоящие маленькие сети, они обучаются прямо сейчас в браузере. Диффузия пока без обучения: её денойзер точный и вычисляется прямо по демонстрациям. Обучать её будем в уроках 1.4 и 1.5.
Смесь, которая выбирает сторону на каждом шаге, виляет между модами. Пачка держит сторону, пока длится, а на стыке новая пачка выбирает заново. Как удержать выбранную сторону на стыке пачек?
Под капотом: три политики
Общее. Все три политики видят одно число — пройденную долю пути — и выдают боковое смещение от маршрута. Регулятор ведёт к нему Аду не быстрее 9 см за шаг. Касание — центры ближе 31 см. Смена стороны засчитывается, когда Ада перебегает с одной стороны чайника на другую, отойдя от его центра больше чем на 6 см. Считаем от метра до чайника, пока он не останется позади.
Регрессия. Сеть 1 → 32 → 32 → 1, tanh, MSE, 1200 шагов Adam по 32 примера.
Смесь гауссиан. Сеть 1 → 48 → 48 → 68 выдаёт на каждом шаге планов смещения на 32 шага вперёд, их вероятности и ширину . Обучение по отрицательному логарифму правдоподобия, 2000 шагов Adam. В режиме «раз в пачку» Ада выбирает план с вероятностью и едет по нему шагов, потом выбирает снова. В режиме «на каждом шаге» план выбирается заново каждый шаг, а исполняется только его первое действие. Ширину при исполнении не используем, едем по центру выбранной компоненты.
Диффузия. Генерирует сразу всю поездку: 27 точек бокового смещения, через каждые 2 шага. DDIM на 30 шагов с косинусным расписанием шума. Денойзер точный: для зашумлённой поездки он возвращает взвешенное среднее демонстраций, веса — правдоподобие шума. Сеть здесь не обучается, поэтому такая диффузия умеет только повторять демонстрации. Настоящий денойзер обучим в уроке 1.5.
Прогоны. Каждый запуск — 10 прогонов: старт Ады чуть смещён, на каждом шаге добавляется шум регулятора около 0,5 см. Повторное нажатие даёт следующие 10 прогонов с другими зёрнами. Демонстрации при тех же настройках не меняются.
Как удержать сторону на стыке
Пачки сменяют друг друга, и на стыке новая пачка может выбрать другую сторону. Если это случается рядом с чайником, Ада перебегает на другую сторону прямо перед ним. В статье Real-Time Chunking (RTC) так и сказано: соседние пачки «may jump between different modes».
Причина в том, что каждая пачка — независимый сэмпл. Ничто не заставляет её продолжать прошлую.
В ACT стыки сглаживают: пачки перекрываются, и действие на шаге — взвешенное среднее всех пачек, которые его предсказали. Это называют temporal ensembling. Сглаживание убирает рывки, пока пачки согласны между собой. Если одна обходит чайник слева, а другая справа, их среднее снова ведёт в чайник. В RTC про такое сглаживание сказано, что оно «produces poor actions».
Другой путь — согласовать новую пачку с прошлой, как в Bidirectional Decoding (BID): сэмплируем несколько пачек и берём ту, что ближе к продолжению прошлого плана. Сравни оба способа на схеме «время × смещение». Тонкие кривые — пачки смеси гауссиан, новая пачка каждые 4 шага. Жирная линия — что исполняет Ада. Полоса посередине — чайник: туда жирная линия заходить не должна.
Согласование держит сторону, но за каждое решение платит несколькими сэмплами. Сглаживание дешевле, но усредняет моды так же, как MSE. Выбирать сторону и держать её мы научились. Но смесь гауссиан требует заранее знать число мод, а диффузия в лаборатории опиралась на точный денойзер, вычисленный прямо по демонстрациям. Какая модель обходится без этих ограничений?
Под капотом: схема стыков
Сглаживание усредняет перекрывающиеся пачки с весами, — самая старая пачка:
Согласование из сэмплов берёт тот, что ближе всего к остатку прошлой пачки.
Пачка длиной 16 шагов, новая — каждые 4 шага, так что на каждом шаге перекрываются до четырёх пачек. Сторону каждой новой пачки выбирает смесь из двух гауссиан 50 на 50. Ада смещается вбок не быстрее 9 см за шаг. Для сглаживания : как бы новая пачка ни пыталась свернуть, вес старых больше. Для согласования сэмплов 8, поэтому сеть вызывают в 8 раз чаще.
Авторы RTC решают проблему стыков третьим способом: замораживают шаги, которые уже исполняются, и дорисовывают остальные так, чтобы новая пачка продолжала старую. Его разберём в уроке 1.5, а полную картину задержек и стыков — в уроке 1.7.
Восемь вопросов о типичных заблуждениях
Итоги урока
- Минимум MSE — условное среднее. Среднее двух правильных действий бывает неправильным, и больше данных этого не исправляет: сеть лишь точнее попадает в середину.
- L1 даёт медиану: при перевесе одной стороны выбирает её, при равном счёте решение не единственно.
- Мультимодальность задают данные: разные операторы, порядок подзадач, то, чего не видят камеры. На стандартных бенчмарках условных мод почти нет.
- Распределение действий моделируют смесью гауссиан, бинами и токенами, энергией, CVAE, диффузией. Независимые бины теряют связи между измерениями.
- Сэмпл на каждом шаге прыгает между модами. Пачки держат сторону, а стыки пачек нужно согласовывать, а не усреднять.
Осталась проблема: смесь гауссиан требует заранее знать число мод, бины теряют связи между измерениями, а диффузия в лаборатории работала с точным денойзером, который только повторяет демонстрации. Нужна модель, которая по данным учится сэмплировать из распределения любой формы, так что каждый сэмпл правдоподобен.
Открытые вопросы
Шесть операторов собирают одну задачу по-разному. Как проверить, нужна ли модели мультимодальность, прежде чем выбирать между регрессией с пачками и диффузией?
Можно оценить число условных мод, как Mazza и соавторы: для похожих наблюдений сравнить продолжения демонстраций и посчитать, сколько среди них устойчиво разных. Проще и грубее — обучить обе политики на части данных и сравнить их на одних и тех же стартах. Если регрессия с пачками не хуже, данные, скорее всего, одномодальны. Если она ошибается там, где операторы расходятся, нужна генеративная голова.
Почему задача может быть мультимодальной для политики, но не для оператора, который её показывал?
Оператор видит больше, чем робот: другой ракурс, звук, договорённость с коллегой, свою усталость. Его выбор определён тем, что он знает, но политике эта информация недоступна, и для неё одинаковые наблюдения ведут к разным действиям.
Гид по статье
P. Florence et al., «Implicit Behavioral Cloning», CoRL 2021.
- Читать внимательноОпыт с подгонкой разрывной функции: явная модель «interpolates across each discontinuity», неявная держит разрыв. И таблицы с настоящей рукой xArm6: где энергия выигрывает у MSE сильнее всего.
- Можно пропуститьДоказательства того, что неявные модели аппроксимируют многозначные и разрывные функции.
- Вопрос по ходуЧтобы получить действие, IBC ищет минимум энергии перебором. Почему это дороже, чем один проход регрессии, и что будет с выводом при действии из 7 измерений?
Материалы
- Implicit Behavioral CloningСайт IBC: видео вставки с MSE и с энергией
- Diffusion PolicyC. Chi et al., 2023 — один и тот же эпизод реального Push-T у трёх политик
- Behavior TransformersN. M. Shafiullah et al., 2022 — точка объезжает препятствие слева или справа, и CARLA с 98% поворотов направо
- OpenVLA-OFTM. J. Kim et al., 2025 — регрессия с L1 и пачками, 97,1% на LIBERO
- Real-Time ChunkingK. Black et al., 2025 — стыки пачек и почему их не усредняют
- Understanding Multimodality in Generative BCMazza et al., 2026 — оценка числа условных мод
Дальше: диффузионные модели. Как сэмплировать из сложного распределения так, чтобы каждый сэмпл был правдоподобным? Диффузионная модель учится убирать шум из данных, а генерирует наоборот: начинает с чистого шума и шаг за шагом приближается к данным. Об этом урок 1.4 «Диффузионные модели».