Action Chunking
При разбиении действий на блоки роботизированная политика предсказывает последовательность будущих действий по одному наблюдению, уменьшая накопление ошибок. Разбираются ACT, сглаживание и VLA.
Разбиение действий на блоки — это метод обучения роботов, при котором политика по одному наблюдению предсказывает последовательность, или блок, из следующих k действий вместо одного действия на каждом шаге управления. Название отсылает к концепции из психологии и нейронаук: объединению последовательности действий в одну единицу; в обучение роботов этот метод пришёл благодаря работе Action Chunking with Transformers (ACT) в 2023 году. ACT научилась выполнять сложные задачи двумя руками, например вставлять батарейку в гнездо, с успехом 80–90%, используя всего 10 минут демонстраций на недорогих роботизированных манипуляторах ALOHA. Предсказание блоков теперь стало стандартом в имитационном обучении и моделях «зрение — язык — действие» (VLA), разработанных для универсальной робототехники.
Зачем предсказывать блоки#
При клонировании поведения политика учится копировать действия из человеческих демонстраций. Каждая небольшая ошибка переводит робота в состояние, которого не было в демонстрациях, из-за чего следующее предсказание становится хуже, а ошибки накапливаются в ходе длительной задачи. Политика, которая за одно предсказание выдаёт k действий, принимает в k раз меньше решений за эпизод; авторы ACT называют это сокращением эффективного горизонта задачи в k раз. В их имитационном эксперименте средний успех для двух задач вырос с 1% при последовательном предсказании одного действия до 44% при предсказании блоков по 100 действий.
Блоки также позволяют учитывать тайминг, который нельзя определить по одному наблюдению. Люди, демонстрирующие действия, делают паузы и колеблются; политика с предсказанием одного шага, получившая одно и то же изображение до и после паузы, не может понять, нужно ли ждать или двигаться. Блок, включающий паузу, воспроизводит её. А если в демонстрациях показаны два корректных способа выполнить задачу, предсказание всей последовательности сразу позволяет роботу придерживаться одного из них, а не усреднять оба.
Робот выполняет блок, а затем запрашивает у политики следующий:
Перепланирование после всего блока сводит к минимуму число обращений к модели; перепланирование после его части, как в Diffusion Policy, использует идею скользящего горизонта из модельно-прогнозирующего управления и позволяет быстрее реагировать на неожиданности.
Сглаживание стыков между блоками#
Внутри блока робот действует без обратной связи, а каждый новый блок начинается с нового предсказания, поэтому при переходе от одного блока к следующему движение может резко измениться. Временное ансамблирование в ACT запрашивает политику на каждом шаге и выполняет взвешенное среднее всех предсказаний блоков для текущего шага; используются веса exp(−m·i), при которых самое старое предсказание имеет наибольший вес. Этот пример на NumPy сравнивает обычное выполнение блоков с временным ансамблированием для условной политики, каждый блок которой содержит небольшую ошибку:
import numpy as np
rng = np.random.default_rng(0)
k, steps, m = 10, 100, 0.1 # chunk size, episode length, temporal-ensembling decay
target = np.sin(np.linspace(0, np.pi, steps + k)) # the demonstrated joint trajectory
# Stand-in policy: at step t it predicts actions for steps t..t+k-1, each chunk off by its own error
chunks = [target[t : t + k] + rng.normal(0, 0.05) for t in range(steps)]
# Plain chunking: query every k steps and execute each chunk open loop
plain = np.concatenate([chunks[t] for t in range(0, steps, k)])
# Temporal ensembling (ACT): query every step and average all predictions for step t, oldest weighted most
ensembled = []
for t in range(steps):
preds = [chunks[s][t - s] for s in range(max(0, t - k + 1), t + 1)]
weights = np.exp(-m * np.arange(len(preds)))
ensembled.append(np.dot(weights, preds) / weights.sum())
for name, actions in (("plain", plain), ("ensembled", np.array(ensembled))):
print(f"{name}: largest jump between consecutive actions = {np.abs(np.diff(actions)).max():.3f}")
print(f"demonstration: largest jump = {np.abs(np.diff(target[:steps])).max():.3f}")При обычном выполнении блоков на стыке между ними максимальный скачок между соседними шагами составляет 0.085 — примерно втрое больше, чем 0.029 в демонстрации. Ансамблирование уменьшает его до 0.044, поскольку каждое выполненное действие усредняет до десяти предсказаний, полученных по разным наблюдениям.
В более крупных моделях сгладить стыки сложнее, поскольку инференс может занимать больше времени, чем шаг управления. Метод real-time chunking от Physical Intelligence генерирует следующий блок, пока выполняется текущий, фиксирует действия, которые будут выполняться во время задержки инференса, и дополняет оставшуюся часть в соответствии с ними; благодаря этому динамические задачи, например зажигание спички, удавалось выполнять при задержках более 300 мс.
Формирование блоков действий в современных робототехнических политиках#
- ACT: Transformer, обученный как условный вариационный автокодировщик, который выдаёт блоки из 100 целевых значений положения суставов — два секунды движения при частоте управления ALOHA 50 Гц.
- Диффузионные политики: Они генерируют каждую последовательность действий итеративным удалением шума, что позволяет хорошо представлять демонстрации с несколькими различными решениями.
- Модели VLA: Модель π0 от Physical Intelligence объединяет модель компьютерного зрения и языка с экспертом по действиям, обученным методом сопоставления потоков, который выдаёт блоки из 50 действий для управления с частотой до 50 Гц. Библиотека LeRobot от Hugging Face содержит открытые реализации ACT, Diffusion Policy и π0.
Большинство таких политик кодируют исходные изображения с камер с помощью обучаемой базовой модели. Вместо этого политика может получать на вход позиции объектов, предсказанные детектором: модель Ultralytics YOLO26, дообученная на деталях в рабочей ячейке, преобразует каждый кадр в несколько координат рамок или ключевых точек. Блочная политика использует эти координаты как состояние вместо исходных пикселей.
Формирование блоков действий и смежные понятия#
- Распознавание действий: Определяет действие в видео. Формирование блоков действий генерирует команды, которые выполняет робот.
- Модельно-прогнозирующее управление: На каждом шаге оптимизирует последовательность действий относительно модели динамики. Блочная политика обучается на последовательностях демонстраций и не нуждается в модели.
- Большие модели действий: ИИ-агенты, которые взаимодействуют с программными интерфейсами с помощью щелчков и вызовов API. Формирование блоков действий относится к низкоуровневым моторным командам, например к 14-мерному вектору положений суставов, который ACT выдаёт для обеих рук ALOHA на каждом шаге.










