CoDA: роботы учатся на провалах, а не на случайных сценах
Генеративные симуляторы научились строить сцены быстрее, чем роботы успевают на них учиться. Кодирующий агент за минуты пишет программу сцены с объектами, физикой и машинно-проверяемым условием успеха, так что среда перестала быть дефицитом. Дефицит в другом: непонятно, какую из тысяч возможных сцен строить следующей.
Ответ на этот вопрос даёт CoDA (Co-Evolution of Data Engines and Action Policies), работа группы исследователей робототехники. Средний out-of-distribution успех политики поднимается до 27,6% против 18,1% у генерации, которая ориентируется только на текущий success rate. На LIBERO-Pro после пятнадцати раундов успех растёт с 1% до 76% при искажении инструкций и с 25% до 84% при сдвиге позиций объектов.
Что такое CoDA
CoDA это фреймворк, в котором генератор сред и роботизированная политика учатся на одном наборе данных о провалах. Диагнозы VLM-критика складываются в общую память, а память компилируется в два вида программ: одни воспроизводят сложные условия сцены, другие дают политике плотную награду.
Главный тезис авторов звучит почти обидно для индустрии генеративной симуляции: физически корректная среда не обязательно полезная. Валидность сцены и текущий процент успеха говорят о том, что происходит сейчас, но ничего не сообщают о том, сколько политика сможет из этой сцены вынести.
Почему «просто больше данных» перестало работать
Авторы сравнивают четыре способа наполнять симулятор. Равномерная генерация вариантов даёт 8,5% OOD-успеха, доменная рандомизация 7,9%, генерация по success rate 18,1%. Обучение с учителя на демонстрациях, то есть обычный supervised fine-tuning, останавливается на 5,3%.
Разрыв между 8,5% и 27,6% показывает, где спрятана основная часть выигрыша. Дело не в количестве сцен, а в том, попала ли сцена в узкую полосу, где политике ещё есть чему учиться. Если среда слишком простая, обучение превращается в повторение уже освоенного. Если слишком сложная, отдача падает до нуля, потому что сигнала об успехе просто нет.
CoDA ищет эту полосу через провалы. Сначала политика собирает роллауты в сгенерированных сценах, затем критика смотрит, где именно и почему она ломается, а генератор получает задачу воспроизвести эти условия в следующих сценах.
Сцена как программа с тремя ручками
Каждая среда в CoDA описана факторизованной программой с тремя независимыми параметрами. Задача задаёт цель, инструкцию и начальное с конечным состоянием объектов. Пространственный фактор отвечает за позы, опоры, зазоры и перекрытия. Атрибуты объекта включают геометрию, массу, трение, артикуляцию и внешний вид.
Такая факторизация нужна не для красоты. Диагноз критика должен указывать на ручку, которую генератор способен повернуть. Если критика говорит «робот не справляется», из этого нельзя сделать сцену. Если критика говорит «цель перекрыта другим объектом на фазе подхода», генератор знает, что менять, а контрольный эксперимент знает, с чем сравнивать.
Отдельно авторы вводят проверку физической состоятельности. Сцена проходит, только если объекты не пересекаются, стоят стабильно при короткой пассивной симуляции и имеют правдоподобный масштаб. Генерация CoDA проходит эти проверки в 88,9% случаев против 71,3% у равномерных вариантов. Доля сцен, попавших в целевую полосу сложности, вырастает с 24,6% до 66,7%.
Память из трёх слоёв
Память устроена по схеме эпизодической, семантической и процедурной памяти языковых агентов. Эпизодический слой хранит каждый сгенерированный сцен-программу, вердикт верификатора, нарушения ограничений, процент успеха на роллаутах и Learning Value, то есть прирост качества после обучения на этой сцене.
Семантический слой собирает эпизоды в повторяющиеся режимы сложности. Признак режима это пара «фактор сцены плюс фаза траектории», а внутри режима объединяются похожие причины сбоя. Пример формулировки, которую приводит статья: перекрывающий объект рядом с целью со стороны подхода. У каждого режима есть жёсткость и важность. Жёсткость измеряется текущим процентом успеха, важность накапливается из Learning Value.
Процедурный слой компилирует подтверждённые режимы в два вида программ. Программы генерации описывают, как воспроизвести и проварьировать условия сбоя. Программы обучения описывают сабголы, потенциалы и учебные инструменты, которые помогают политике этот сбой преодолеть. Работают эти программы по-разному: генератор адаптируется в контексте, доставая и исполняя программы между раундами, а политика учится градиентными обновлениями.
Бюджет генерации распределяется между режимами по upper-confidence правилу с учётом жёсткости и наблюдаемого прогресса. Часть бюджета зарезервирована под новизну, отдельная доля уходит на повторный прогон уже встречавшихся режимов, чтобы поймать регрессии. Программа попадает в пул, только если успех на её вариантах оказывается внутри заданной полосы, и удаляется, когда выходит из неё.
Контрольный эксперимент вместо доверия критику
Самая практичная часть работы связана с проверкой самих диагнозов. Для каждого предложенного режима генератор строит два батча: целевой, где меняется именно указанный фактор, и контрольный, где меняется другой фактор. Диагноз принимается, только если на целевом батче политике заметно хуже, чем на контрольном.
Такой тест ловит фантазии мультимодальной модели. С GPT-5.5 в роли критика контрольные прогоны отбраковывают 18,2% диагнозов, с Qwen3-VL-235B отбраковка доходит до 27,5%. Иначе говоря, каждая пятая правдоподобная история о причине провала не подтверждается экспериментом.
При этом фреймворк не разваливается от смены модели. С Claude Opus 5 средний OOD-успех составляет 26,1%, с InternVL3-78B 25,7%, с Qwen3-VL-235B 24,9% против 27,6% у GPT-5.5. Все четыре варианта обходят генерацию по success rate, худший из них на 6,8 процентного пункта.
Из диагноза в плотную награду: Text2potential
Вторая половина механизма решает проблему разреженной награды. Проверяемый предикат успеха говорит, выполнена задача или нет, и молчит о промежуточных шагах. Для длинных многошаговых сценариев учиться на таком сигнале почти невозможно.
Text2potential берёт подтверждённый диагноз и компилирует его в набор сабголов с предикатами завершения и потенциалами. Траектория разрезается в той фазе, где политика ломается. Предикаты делаются кумулятивными, чтобы выполнение ранних сабголов не терялось при движении к поздним. Итоговый ступенчатый потенциал складывается из числа выполненных сабголов и прогресса внутри текущего, а последний предикат совпадает с исходным верификатором задачи.
Ключевое свойство в том, что потенциал используется для shaping-а целей value-критика, а не подменяет собой награду задачи. При стандартных предположениях о потенциалах это сохраняет оптимальную политику задачи, тогда как свободно сгенерированная плотная награда легко поощряет поведение, которое к цели не ведёт.
Цифры заметные. С одним разреженным сигналом OOD-успех равен 22,3%, с Text2potential 27,6%. До порога 25% в первом случае нужно 31 тысяча обновлений политики, во втором 21 тысяча, то есть примерно на 32% меньше. На одинаковых данных shaping приводит к тому же уровню in-distribution успеха примерно на 20 тысяч шагов раньше, а две версии value-критика в конце обучения выбирают один и тот же action chunk в 97% сравнений.
Если генерировать потенциал из текстового описания задачи, а не из диагноза сбоя, успех падает до 24,6%. Если отключить уточнение потенциала, получается 26,1%. Замороженная политика с выбором чанков по value-критику даёт 21,4%, что подтверждает пользу именно обновления весов.
Результаты: 27,6% против 18,1%
Основная таблица сравнивает четыре семейства манипуляционных задач. CoDA выигрывает во всех четырёх, средний OOD-успех 27,6% против 19,2% у критика без памяти и 18,1% у генерации по success rate. Прирост к первому составляет 8,4 процентного пункта, ко второму 9,5.
Дальше начинается интересное. Пять раундов дают 27,6%, пятнадцать раундов дают 42,1%. У равномерной генерации, доменной рандомизации и генерации по success rate дополнительные раунды приносят гораздо меньше. Без памяти прогресс идёт неровно, с двумя временными провалами, что логично: без записей о прошлых сбоях генератор не знает, что уже пробовали.
На LIBERO-Pro картина ещё резче. Пять раундов поднимают общий успех до 82% при сдвиге позиций и до 72% при искажении инструкций. Пятнадцать раундов дают 84% и 76% против 25% и 1% у исходного чекпоинта π0.5. Модель после пятнадцати раундов обходит ASPIRE на 7 и 9 процентных пункта и лидирует в наборах Goal и Spatial, хотя в Object сильнее остаётся ASPIRE. На стандартном LIBERO успех сохраняется на уровне 97,4% против 97,1% до адаптации, то есть робастность покупается без деградации базового навыка.
Память работает дважды
Абляции памяти показывают, что два вида программ не дублируют друг друга. Только программы генерации дают 22,8%, только программы обучения 22,1%, вместе 27,6%. Сумма отдельных приростов равна 6,5 процентного пункта, а совместный прирост 8,4, то есть эффект супераддитивный. Три варианта с общей памятью для обеих задач работают хуже, чем любая из специализированных веток по отдельности.
Скорость тоже меняется. С обоими видами программ политика достигает 25% OOD-успеха за пять раундов, без памяти для этого нужно четырнадцать.
Перенос оказался шире, чем ожидали авторы. Программы генерации ссылаются на объекты через символические роли вроде target, obstacle или support, поэтому их можно переназначить на объекты новой сцены. При переносе между семействами задач переиспользованные программы дают 60,3% от того прогресса, который получается при обучении программ с нуля в целевой задаче, тогда как baseline с нуля даёт 35,8%. Выигрыш есть в каждом сравнении.
Ещё любопытнее перенос памяти между разными политиками. Память, собранная с π0.5, без дополнительной генерации сред поднимает OOD-успех OpenVLA-OFT с 3,8% до 21,1%. В среднем перенос памяти даёт 18,9 процентного пункта к SFT-baseline, и результат отстаёт от полного прогона с целевой политикой не больше чем на два пункта в обе стороны.
Сколько это стоит
Бесплатной такую схему назвать нельзя. На тысячу принятых сред CoDA тратит 7,4 миллиона LLM-токенов, 25,1 часа симуляции и 66 GPU-часов против 3,1 миллиона токенов, 14,2 часа и 38 GPU-часов у равномерных вариантов. Токенов уходит в 2,4 раза больше, а успех вырастает в 3,2 раза.
Адаптивное расписание раундов экономит ресурсы: 7,4 миллиона токенов против 8,3 при фиксированном расписании, 66 GPU-часов против 74, и при этом успех выше, 27,6% против 26,1%.
Есть и честный минус. Энтропия покрытия факторов падает с 3,42 бита у равномерной генерации до 3,18 у CoDA. Фреймворк сознательно сужает разнообразие в пользу полезности, и это может аукнуться там, где нужна именно широкая устойчивость к редким условиям.
Ограничения авторы перечисляют сами. Вся оценка проведена в симуляции, перенос на физических роботов не показан, а различия в контактной динамике, сенсорике и приводах обычно ломают именно такие результаты. Качество зависит от версий базовых моделей, поэтому воспроизводимость требует фиксировать конфигурации. Плюс дополнительные расходы на инференс ограничивают число раундов и семейств задач при фиксированном бюджете.
Что это значит на практике
Главный сдвиг здесь концептуальный. Data engine перестаёт быть генератором случайных сцен и становится системой, которая целенаправленно ищет слабые места политики. Для команд, которые собирают роботизированные данные, это меняет метрику качества: важна не валидность среды и не её сложность сама по себе, а Learning Value, то есть сколько политика выносит из этой среды за фиксированный бюджет обучения.
Второй вывод касается оценки. Если поведение может появиться после дообучения из документов, которые с ним напрямую не связаны, то и оценка модели по текущему поведению неполна. CoDA показывает тот же принцип снизу, на уровне данных: среда, которая выглядит нормально, может не давать никакого сигнала, а среда, которая выглядит странно, может быть единственной полезной.
Третий вывод про переиспользование. Память о провалах оказалась переносимым активом: она переезжает между семействами задач и между политиками, сохраняя большую часть эффекта. Это аргумент в пользу того, чтобы хранить не только датасеты, но и структурированные записи о том, где и почему модели ломались.
Часто задаваемые вопросы
Чем CoDA отличается от доменной рандомизации?
Доменная рандомизация расширяет разброс параметров сцены наугад. CoDA выбирает следующую сцену по подтверждённому провалу политики и проверяет, что именно этот фактор усложняет задачу. На одинаковом бюджете это даёт 27,6% OOD-успеха против 7,9%.
Обязательно ли использовать GPT-5.5 для диагностики?
Нет. Авторы заменили критика на Claude Opus 5, InternVL3-78B и Qwen3-VL-235B и получили 26,1%, 25,7% и 24,9% соответственно. Разница с GPT-5.5 небольшая, но слабые критики чаще предлагают диагнозы, которые отбраковывают контрольные прогоны.
Работает ли это на реальных роботах?
Пока нет. Все эксперименты проведены в симуляции на четырёх семействах манипуляционных задач и LIBERO-Pro. Авторы прямо пишут, что перенос на физическое железо остаётся открытым вопросом, особенно для задач, чувствительных к контактной динамике и сенсорике.
Итог
CoDA переставляет акценты в обучении роботов. Вопрос «где взять больше данных» заменяется вопросом «какую среду строить следующей», и ответ на него даёт память о провалах, а не размер генератора. Диагноз, подтверждённый контрольным экспериментом, превращается в две программы: одну для воспроизведения сложности, другую для плотной награды.
Результат виден в цифрах: 27,6% OOD-успеха против 18,1%, 76% против 1% на искажённых инструкциях LIBERO-Pro, на 32% меньше обновлений до порога. Цена тоже названа: в 2,4 раза больше токенов и заметно меньше разнообразия сред.
Если вы собираете данные для роботизированных политик, стоит начать с аудита собственного пайплайна: какие сцены вы генерируете и есть ли у вас запись о том, где именно политика ломается. В большинстве команд такой памяти нет, а значит и следующая сцена выбирается наугад. Именно этот пробел CoDA и закрывает.