Action Chunking
La fragmentación de acciones hace que una política robótica prediga una secuencia de acciones futuras a partir de una observación, lo que reduce la acumulación de errores. Incluye ACT, suavizado y VLA.
La fragmentación de acciones es una técnica de aprendizaje robótico en la que una política predice una secuencia, o fragmento, de las siguientes k acciones a partir de una única observación, en lugar de predecir una acción por paso de control. El nombre toma prestado de la psicología y la neurociencia el concepto de agrupar una secuencia de acciones en una sola unidad, y se incorporó al aprendizaje robótico en 2023 con Fragmentación de acciones con Transformers (ACT). ACT aprendió tareas bimanuales precisas, como encajar una batería en una ranura, con una tasa de éxito del 80-90 % usando solo 10 minutos de demostraciones en los brazos ALOHA, de bajo coste. La predicción de fragmentos ya es habitual en el aprendizaje por imitación y en los modelos de visión-lenguaje-acción (VLA) creados para la robótica de propósito general.
Por qué ayuda predecir fragmentos#
En la clonación del comportamiento, una política aprende a imitar las acciones de las demostraciones humanas. Cada pequeño error lleva al robot a un estado que las demostraciones no cubrían, donde la siguiente predicción es peor, así que los errores se acumulan a lo largo de una tarea. Una política que se compromete a ejecutar k acciones por predicción toma k veces menos decisiones en cada episodio, lo que los autores de ACT describen como una reducción de k veces en el horizonte efectivo de la tarea. En su estudio de ablación simulado, el éxito medio en dos tareas pasó del 1 % al predecir una acción cada vez al 44 % con fragmentos de 100 acciones.
Los fragmentos también capturan tiempos que una observación aislada no puede reflejar. Las personas que hacen las demostraciones se detienen y dudan, y una política de un solo paso que ve la misma imagen antes y después de una pausa no puede distinguir si debe esperar o moverse; un fragmento que incluye la pausa la reproduce. Además, cuando las demostraciones muestran dos formas válidas de realizar una tarea, predecir toda la secuencia de una vez mantiene al robot en una de ellas, en lugar de promediar ambas.
El robot ejecuta un fragmento y luego pide otro a la política:
Replanificar después de todo el fragmento reduce al mínimo las llamadas al modelo; replanificar después de una parte, como hace Diffusion Policy, sigue la idea del horizonte móvil del control predictivo basado en modelos y permite reaccionar más rápido ante imprevistos.
Suavizar las transiciones entre fragmentos#
Dentro de un fragmento, el robot se mueve en bucle abierto, y cada fragmento nuevo empieza con una predicción nueva, así que el movimiento puede dar un salto cuando un fragmento cede el paso al siguiente. El ensamblado temporal de ACT consulta la política en cada paso y ejecuta una media ponderada de las predicciones de todos los fragmentos para el paso actual, con pesos exp(−m·i) que dan más peso a la predicción más antigua. Este ejemplo de NumPy compara la fragmentación simple con el ensamblado temporal para una política de prueba en la que cada fragmento tiene un pequeño error propio:
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}")La fragmentación simple produce un salto máximo entre pasos de 0,085, aproximadamente tres veces los 0,029 de la demostración, en una transición entre fragmentos. El ensamblado lo reduce a 0,044, porque cada acción ejecutada promedia hasta diez predicciones realizadas a partir de observaciones distintas.
Los modelos más grandes hacen más difícil disimular las transiciones, ya que la inferencia puede tardar más que un paso de control. La fragmentación en tiempo real de Physical Intelligence genera el siguiente fragmento mientras se ejecuta el actual, congela las acciones que se ejecutarán durante el retraso de inferencia y completa el resto para que coincida con ellas; así consiguió que siguieran funcionando tareas dinámicas como encender una cerilla, incluso con retrasos superiores a 300 ms.
Fragmentación de acciones en las políticas robóticas modernas#
- ACT: Un Transformer entrenado como autocodificador variacional condicional que genera bloques de 100 objetivos de posición articular, equivalentes a dos segundos de movimiento con la frecuencia de control de 50 Hz de ALOHA.
- Políticas de difusión: Generan cada secuencia de acciones mediante un proceso iterativo de eliminación de ruido, lo que les permite representar bien demostraciones con varias soluciones distintas.
- Modelos VLA: El π0 de Physical Intelligence combina un modelo de visión y lenguaje con un experto en acciones entrenado mediante emparejamiento de flujo, que genera bloques de 50 acciones para controlar el robot a hasta 50 Hz. La biblioteca LeRobot de Hugging Face ofrece implementaciones abiertas de ACT, Diffusion Policy y π0.
La mayoría de estas políticas codifican las imágenes sin procesar de la cámara con una red troncal aprendida. En cambio, una política puede condicionarse a posiciones de objetos obtenidas de un detector: un modelo Ultralytics YOLO26 ajustado con las piezas de una celda de trabajo convierte cada fotograma en unas pocas coordenadas de cuadros o puntos clave que la política por bloques utiliza como estado en lugar de los píxeles sin procesar.
Fragmentación de acciones y conceptos relacionados#
- Reconocimiento de acciones: Identifica la actividad que aparece en un vídeo. La fragmentación de acciones genera las instrucciones que ejecuta un robot.
- Control predictivo basado en modelos: Optimiza una secuencia de acciones en cada paso usando un modelo de dinámica. Una política por bloques aprende sus secuencias a partir de demostraciones y no necesita ningún modelo.
- Modelos de acciones de gran tamaño: Agentes de IA que interactúan con interfaces de software mediante clics y llamadas a API. La fragmentación de acciones se ocupa de comandos motores de bajo nivel, como el vector de 14 dimensiones de posiciones articulares que ACT genera en cada paso para los dos brazos de ALOHA.










