🎓 Treinamento: Imitation Learning, ACT, Diffusion Policy
Como o robô aprende assistindo humanos: das demonstrações à política neural. Behavior cloning, Action Chunking Transformers e Diffusion Policy são os 3 paradigmas dominantes — cada um com trade-offs claros de complexidade, dados e performance.
Diagrama ilustrativo — três paradigmas de imitation learning convergindo para uma política neural deployável.
🎯 Imitation Learning: behavior cloning básico
Behavior cloning (BC) é a forma mais simples de imitation learning: coleta-se demonstrações humanas (pares observação-ação) e treina-se uma rede neural supervisionada para mapear observações a ações. É essencialmente regressão sobre trajetórias, sem qualquer simulação de ambiente.
🔑 Formulação matemática
# Objetivo do Behavior Cloning
π* = argminπ E(s,a)~D [ L(π(s), a) ]
# onde D é o dataset de demonstrações humanas
# L é MSE para ações contínuas, cross-entropy para discretas
# Treinamento no LeRobot (ACT como BC baseline)
python lerobot/scripts/train.py \
policy=act \
dataset_repo_id=lerobot/aloha_sim_insertion_human \
training.num_steps=100000
✓ Quando BC funciona bem
- ✓Tarefas com baixa variância — pegar objeto sempre no mesmo lugar
- ✓Muitas demonstrações — 500+ trajetórias cobrindo o espaço de estados
- ✓Protótipo rápido: treina em minutos, sem setup de reward
- ✓Baseline interpretável para comparar com ACT e Diffusion
✗ Problemas clássicos do BC
- ✗Compounding error — pequenos erros se acumulam fora da distribuição de treino
- ✗Covariate shift — estado de teste ≠ estado de treino, degradação abrupta
- ✗Multimodalidade mal capturada — MSE faz média entre modos, gerando ação inválida
- ✗Exige demos consistentes — um humano inconsistente destrói o treinamento
💡 Dica prática
Use BC como baseline obrigatório. Se BC com 200 demos não atinge >50% success rate, sua tarefa provavelmente é multimodal ou seu dataset tem inconsistências — e ACT/Diffusion Policy resolverão isso sistematicamente.
⚡ ACT: Action Chunking with Transformers
ACT (Zhao et al., 2023) prediz chunks de ações futuras de uma vez, em vez de uma ação por vez. Um encoder CVAE gera um estilo latente, e um decoder transformer gera K ações futuras condicionadas nesse estilo e na observação atual — resolvendo compounding error e multimodalidade simultaneamente.
🏗️ Arquitetura ACT em detalhe
1. CVAE Encoder
Recebe sequência de ações humanas → produz z (estilo latente). Em inferência, z ~ N(0,1).
2. Visual Backbone
ResNet-18 processa imagens de câmeras → tokens visuais para o decoder.
3. Transformer Decoder
Gera chunk de K=100 ações. Temporal ensembling combina chunks sobrepostos.
# Configuração ACT no LeRobot
policy.chunk_size = 100 # K ações por inferência
policy.n_action_steps = 100
policy.temporal_ensemble_coeff = 0.01
policy.kl_weight = 10 # peso do KL no ELBO
📅 Evolução: do BC ao ACT
Behavior Cloning (2010s)
Uma ação por observação. Simples mas com compounding error exponencial em trajetórias longas.
DAgger (Ross et al., 2011)
Itera coletando mais demos nos estados onde o agente erra. Resolve covariate shift mas exige expert online.
ACT — Action Chunking (Zhao et al., 2023)
Prediz K=100 ações futuras + CVAE para multimodalidade. Bimanual com ALOHA: 80%+ success em inserção precisa com 50 demos.
💡 Dica prática
ACT é a política padrão do LeRobot e a escolha certa para manipulação de precisão com 50-200 demos. Comece com chunk_size=100 e kl_weight=10 — ajuste só se a perda KL colapsar.
🌀 Diffusion Policy: denoising para ações
Diffusion Policy (Chi et al., 2023) aplica modelos de difusão à geração de trajetórias robóticas. Começa com ruído gaussiano e, em T passos de denoising condicionados na observação, gera uma trajetória de ações suave e multimodal — capturando distribuições complexas que MSE não consegue representar.
Diagrama ilustrativo — Diffusion Policy itera T passos de denoising condicionados na observação atual.
Comparação: U-Net vs Transformer backbone
CNN (U-Net)
- • Mais rápido em inferência (10-25ms)
- • Melhor para ações de baixa dimensão
- • 50-100 DDPM steps ou 15 DDIM steps
- • Escolha padrão para tasks com câmera única
Transformer
- • Melhor scaling com mais dados e câmeras
- • Contexto longo: histórico de observações
- • Latência maior (30-100ms)
- • Escolha para sistemas multimodais complexos
💡 Dica prática
Use num_diffusion_iters=15 com DDIM (em vez de 100 com DDPM) para inferência em tempo real. A perda de qualidade é mínima e você mantém latência abaixo de 50ms para controle em 20Hz.
🔧 Fine-tuning de VLAs pré-treinados
Fine-tuning adapta um modelo VLA pré-treinado em dados gerais (ex: OpenVLA treinado em Open X-Embodiment com 970k trajetórias) para sua tarefa e robô específicos usando apenas 50-200 demonstrações. É o caminho prático para 99% dos projetos reais.
✓ Estratégias eficientes
- ✓LoRA/QLoRA — fine-tune apenas 0.1-1% dos parâmetros, sem degradar o backbone
- ✓Dataset mixing — misture dados específicos (70%) com dados gerais (30%) para evitar catastrophic forgetting
- ✓Cosine decay com warmup — 5% de warmup steps, LR final 1e-5
- ✓OpenVLA-OFT supera RT-2-X com 10× menos dados
✗ Erros comuns
- ✗Full fine-tune com LR alto — destrói features gerais aprendidas no pré-treino
- ✗Sem dataset mixing — catastrófico esquecimento de generalização
- ✗Avaliar apenas no dataset de treino — overfitting invisível sem holdout tasks
- ✗Ignorar a resolução de imagem do modelo base — mudar resolução quebra o ViT
💻 Fine-tuning OpenVLA com LoRA
# Instalar dependências
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 baixo para evitar catastrophic forgetting
optimizer = AdamW(params, lr=2e-5)
scheduler = cosine_with_warmup(optimizer, warmup=500)
🚀 RL post-training: +24% com reinforcement
Reinforcement Learning post-training aplica RL (PPO, GRPO) sobre uma política inicializada por imitation learning. O robô melhora além das demos humanas ao otimizar reward signals automáticos — como detecção de sucesso por câmera ou sensor de força.
📅 Pipeline IL → RL
Pré-treino via Imitation Learning
50-200 demos humanas → política BC ou ACT como inicialização. Garante comportamento seguro e próximo ao ótimo antes do RL.
Definir reward function
Success reward esparso (0/1) + reward denso auxiliar (distância à posição alvo). Reward shaping crítico para sample efficiency.
RL fine-tuning com PPO/GRPO
KL penalty vs política IL (não divergir). 10k-100k rollouts de simulação. +24% success rate em inserção de conector (Physical Intelligence, 2024).
Avaliação e deploy
Testar em cenários holdout com variações (posição, iluminação, objetos) antes de transferir ao robô real.
Conceitos-chave do RL post-training
KL penalty
Mantém π_RL próxima de π_IL, evitando colapso catastrófico. β_KL típico: 0.01-0.1.
Sample efficiency
RL direto no robô real: custo altíssimo. Simulação + sim-to-real é obrigatório para RL em escala.
Online vs Offline RL
Offline RL (IQL, TD3+BC) usa datasets estáticos — mais seguro. Online RL coleta novos dados mas exige simulador rápido.
GRPO para VLAs
Group Relative Policy Optimization — variante do PPO com estimativa de baseline por grupo de rollouts. Menos hyperparâmetros.
📊 Avaliação: success rate, OOD generalization
Avaliação em robótica VLA mede success rate (% de tarefas completadas) em cenários in-distribution e out-of-distribution. Benchmarks como LIBERO, RLBench e SIMPLER padronizam comparações — essencial para saber se sua política generaliza ou apenas memoriza o dataset.
🏋️ LIBERO
4 suítes com 10 tarefas cada. Mede generalização espacial, de objetos, de goals e long-horizon. Padrão HuggingFace.
🤖 RLBench
100 tarefas únicas com dificuldade variável. Strong baseline para comparação de algoritmos de imitation learning.
📐 SIMPLER
Benchmarks realistas com sim-to-real alinhado. Mede robustez a variações de iluminação, textura e posição.
✓ Avaliação rigorosa
- ✓N≥50 episódios por condição para intervalos de confiança confiáveis
- ✓Testar com objetos, posições e iluminações não vistas no treino
- ✓Reportar média ± desvio padrão sobre múltiplas seeds
- ✓Analisar modo de falha: onde exatamente o robô erra
✗ Avaliação fraca
- ✗N<10 episódios — variância mascarada; número de sucesso sem significância
- ✗Testar somente in-distribution — sucesso de treino não é sucesso real
- ✗Comparar modelos com número diferente de demonstrações sem controlar data budget
- ✗Avaliar em tarefa diferente da publicação original do benchmark
💡 Dica prática
Antes de rodar 100k steps de treino, avalie com n_eval_episodes=20 a cada 10k steps para detectar plateau cedo. Curva de aprendizado plana após 30k steps com BC geralmente indica tarefa multimodal — mude para Diffusion Policy.
✅ Resumo do Módulo
Próximo módulo
2.6 — Simuladores: Isaac Sim, MuJoCo, Gazebo e Sim-to-Real Transfer