🎓 Entrenamiento: Imitation Learning, ACT, Diffusion Policy
Cómo aprende el robot observando a humanos: de las demostraciones a la política neuronal. Behavior cloning, Action Chunking Transformers y Diffusion Policy son los 3 paradigmas dominantes, cada uno con claros trade-offs de complejidad, datos y rendimiento.
Diagrama ilustrativo — tres paradigmas de imitation learning que convergen en una política neuronal desplegable.
🎯 Imitation Learning: clonación básica del comportamiento
Behavior cloning (BC) es la forma más simple de imitation learning: se recopilan demostraciones humanas (pares observación-acción) y se entrena una red neuronal supervisada para asignar acciones a observaciones. Es esencialmente regresión sobre trayectorias, sin ninguna simulación del entorno.
🔑 Formulación matemática
# Objetivo de Behavior Cloning
π* = argminπ E(s,a)~D [ L(π(s), a) ]
# donde D es el dataset de demostraciones humanas
# L es MSE para acciones continuas, cross-entropy para discretas
# Entrenamiento en LeRobot (ACT como baseline de BC)
python lerobot/scripts/train.py \
policy=act \
dataset_repo_id=lerobot/aloha_sim_insertion_human \
training.num_steps=100000
✓ Cuándo BC funciona bien
- ✓Tareas con baja varianza — tomar el objeto siempre en el mismo lugar
- ✓Muchas demostraciones — 500+ trayectorias que cubren el espacio de estados
- ✓Prototipo rápido: se entrena en minutos, sin configurar el reward
- ✓Baseline interpretable para comparar con ACT y Diffusion
✗ Problemas clásicos del BC
- ✗Error acumulativo — los pequeños errores se acumulan fuera de la distribución de entrenamiento
- ✗Covariate shift — el estado de prueba ≠ el estado de entrenamiento, degradación abrupta
- ✗Multimodalidad mal capturada — MSE promedia entre modos y genera una acción inválida
- ✗Exige demos consistentes: un humano inconsistente destruye el entrenamiento
💡 Consejo práctico
Usa BC como baseline obligatorio. Si BC con 200 demos no alcanza una tasa de éxito >50%, probablemente tu tarea sea multimodal o tu dataset tenga inconsistencias; ACT/Diffusion Policy resolverán esto de forma sistemática.
⚡ ACT: fragmentación de acciones con Transformers
ACT (Zhao et al., 2023) predice chunks de acciones futuras de una vez, en lugar de una acción a la vez. Un encoder CVAE genera un estilo latente y un decoder transformer genera K acciones futuras condicionadas por ese estilo y por la observación actual, lo que resuelve simultáneamente el compounding error y la multimodalidad.
🏗️ Arquitectura ACT en detalle
1. Codificador CVAE
Recibe una secuencia de acciones humanas → produce z (estilo latente). En inferencia, z ~ N(0,1).
2. Backbone visual
ResNet-18 procesa imágenes de cámaras → tokens visuales para el decoder.
3. Decoder Transformer
Genera chunks de K=100 acciones. El ensamblado temporal combina chunks superpuestos.
# Configuración de ACT en LeRobot
policy.chunk_size = 100 # K acciones por inferencia
policy.n_action_steps = 100
policy.temporal_ensemble_coeff = 0.01
policy.kl_weight = 10 # peso del KL en el ELBO
📅 Evolución: de BC a ACT
Behavior Cloning (2010s)
Una acción por observación. Simple, pero con un error acumulativo exponencial en trayectorias largas.
DAgger (Ross et al., 2011)
Itera recopilando más demos en los estados donde el agente se equivoca. Resuelve el cambio de distribución de covariables, pero requiere un experto en línea.
ACT — Action Chunking (Zhao et al., 2023)
Predice K=100 acciones futuras + CVAE para multimodalidad. Bimanual con ALOHA: más del 80% de éxito en inserción precisa con 50 demos.
💡 Consejo práctico
ACT es la política estándar de LeRobot y la opción correcta para manipulación de precisión con 50-200 demos. Empieza con chunk_size=100 e kl_weight=10 — Ajusta solo si la pérdida KL colapsa.
🌀 Diffusion Policy: eliminación de ruido para acciones
Diffusion Policy (Chi et al., 2023) aplica modelos de difusión a la generación de trayectorias robóticas. Comienza con ruido gaussiano y, en T pasos de denoising condicionados por la observación, genera una trayectoria de acciones fluida y multimodal — capturando distribuciones complejas que MSE no puede representar.
Diagrama ilustrativo — Diffusion Policy itera T pasos de denoising condicionados por la observación actual.
Comparación: backbone U-Net vs Transformer
CNN (U-Net)
- • Más rápido en inferencia (10-25ms)
- • Mejor para acciones de baja dimensión
- • 50-100 pasos DDPM o 15 pasos DDIM
- • Elección predeterminada para tasks con una sola cámara
Transformer
- • Mejor escalado con más datos y cámaras
- • Contexto largo: historial de observaciones
- • Latencia mayor (30-100ms)
- • Elección para sistemas multimodales complejos
💡 Consejo práctico
Usa num_diffusion_iters=15 con DDIM (en vez de 100 con DDPM) para inferencia en tiempo real. La pérdida de calidad es mínima y mantienes la latencia por debajo de 50ms para el control a 20Hz.
🔧 Fine-tuning de VLAs preentrenados
El ajuste fino adapta un modelo VLA preentrenado con datos generales (p. ej.: OpenVLA entrenado en Open X-Embodiment con 970k trayectorias) para tu tarea y robot específicos usando solo 50-200 demostraciones. Es el camino práctico para el 99% de los proyectos reales.
✓ Estrategias eficientes
- ✓LoRA/QLoRA — ajustar solo el 0.1-1% de los parámetros, sin degradar el backbone
- ✓Mezcla de datasets — mezcla datos específicos (70%) con datos generales (30%) para evitar el catastrophic forgetting
- ✓Cosine decay con warmup — 5% de pasos de warmup, LR final 1e-5
- ✓OpenVLA-OFT supera a RT-2-X con 10× menos datos
✗ Errores comunes
- ✗Full fine-tune con LR alto — destruye las características generales aprendidas durante el preentrenamiento
- ✗Sin mezcla de datasets — Olvido catastrófico de la generalización
- ✗Evaluar solo en el dataset de entrenamiento — el overfitting es invisible sin tareas de holdout
- ✗Ignorar la resolución de imagen del modelo base — cambiarla rompe el ViT
💻 Ajuste fino de OpenVLA con LoRA
# Instalar dependencias
pip install openvla transformers peft
# Configurar LoRA rank=32 para action head
from peft import LoraConfig, get_peft_model
lora_config = LoraConfig(
r=32,
lora_alpha=64,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
)
# LR bajo para evitar catastrophic forgetting
optimizer = AdamW(params, lr=2e-5)
scheduler = cosine_with_warmup(optimizer, warmup=500)
🚀 RL post-training: +24% con reinforcement
El post-training con Reinforcement Learning aplica RL (PPO, GRPO) sobre una política inicializada mediante imitation learning. El robot mejora más allá de las demostraciones humanas al optimizar señales de recompensa automáticas — como la detección de éxito mediante cámara o sensor de fuerza.
📅 Pipeline IL → RL
Preentrenamiento mediante Imitation Learning
50-200 demostraciones humanas → política BC o ACT como inicialización. Garantiza un comportamiento seguro y cercano al óptimo antes del RL.
Definir la función de recompensa
Recompensa de éxito dispersa (0/1) + recompensa densa auxiliar (distancia a la posición objetivo). El reward shaping es clave para la eficiencia de muestreo.
Fine-tuning de RL con PPO/GRPO
Penalización KL frente a la política de IL (para que no diverja). 10k-100k rollouts de simulación. +24% de tasa de éxito en la inserción de conectores (Physical Intelligence, 2024).
Evaluación y deploy
Probar en escenarios holdout con variaciones (posición, iluminación, objetos) antes de transferirlo al robot real.
Conceptos clave del post-training de RL
KL penalty
Mantiene π_RL cerca de π_IL y evita el colapso catastrófico. β_KL típico: 0.01-0.1.
Eficiencia de muestreo
RL directamente en el robot real: costo altísimo. La simulación + sim-to-real es obligatoria para escalar RL.
Online vs Offline RL
Offline RL (IQL, TD3+BC) usa datasets estáticos, lo que es más seguro. Online RL recopila datos nuevos, pero requiere un simulador rápido.
GRPO para VLAs
Optimización de políticas relativas por grupo: variante de PPO con estimación de baseline por grupo de rollouts. Menos hyperparámetros.
📊 Evaluación: tasa de éxito, generalización OOD
La evaluación en robótica VLA mide tasa de éxito (% de tareas completadas) en escenarios in-distribution y out-of-distribution. Benchmarks como LIBERO, RLBench y SIMPLER estandarizan las comparaciones — algo esencial para saber si tu política generaliza o solo memoriza el dataset.
🏋️ LIBERO
4 suites con 10 tareas cada una. Mide la generalización espacial, de objetos, de objetivos y a largo plazo. Estándar de HuggingFace.
🤖 RLBench
100 tareas únicas con dificultad variable. Una sólida referencia inicial para comparar algoritmos de imitation learning.
📐 SIMPLER
Benchmarks realistas con sim-to-real alineado. Mide la robustez ante variaciones de iluminación, textura y posición.
✓ Evaluación rigurosa
- ✓N≥50 episodios por condición para obtener intervalos de confianza confiables
- ✓Probar con objetos, posiciones e iluminaciones no vistas durante el entrenamiento
- ✓Reportar la media ± la desviación estándar sobre varias seeds
- ✓Analizar modo de falla: dónde exactamente falla el robot
✗ Evaluación deficiente
- ✗N<10 episodios — varianza enmascarada; número de éxitos sin significancia
- ✗Probar solo in-distribution — el éxito del entrenamiento no es éxito en el mundo real
- ✗Comparar modelos con distinto número de demostraciones sin controlar el data budget
- ✗Evaluar en una tarea distinta de la publicación original del benchmark
💡 Consejo práctico
Antes de ejecutar 100k steps de entrenamiento, evalúa con n_eval_episodes=20 cada 10k steps para detectar un plateau temprano. Una curva de aprendizaje plana después de 30k steps con BC suele indicar una tarea multimodal: cambia a Diffusion Policy.
✅ Resumen del módulo
Siguiente módulo
2.6 — Simuladores: Isaac Sim, MuJoCo, Gazebo y transferencia de sim-to-real