MÓDULO 2.5 · VLA / ROBÓTICA

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.

1Imitation 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.

Conceito principal

# 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

Grid fazer vs evitar

✓ 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
Tip box

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.

2ACT: 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.

Box conceito com código

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

Timeline: por que ACT funciona

📅 Evolução: do BC ao ACT

BC

Behavior Cloning (2010s)

Uma ação por observação. Simples mas com compounding error exponencial em trajetórias longas.

DAgger

DAgger (Ross et al., 2011)

Itera coletando mais demos nos estados onde o agente erra. Resolve covariate shift mas exige expert online.

ACT

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.

Tip box

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.

3Diffusion 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.

SVG meio: processo de denoising
Label Diffusion Policy — Processo de Denoising (T passos) Bloco ruído 🎲 Ruído N(0, I) Seta t=T t=T Denoising step 1 ε_θ(aₜ|o) denoising step T→T-1 ... iteração … Denoising step N ε_θ(aₜ|o) denoising step 2→1 Seta t=0 t=0 Trajetória limpa 📈 Trajetória limpa + suave Seta para execução Execução Execução no Robô 🤖 receding horizon Observação condiciona todos os steps Observação o (imagem + propriocepção) condiciona todos os passos

Diagrama ilustrativo — Diffusion Policy itera T passos de denoising condicionados na observação atual.

Grid conceitos

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
Tip box

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.

4Fine-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.

Grid fazer vs evitar

✓ 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
Código de fine-tuning

# 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)

5RL 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.

Timeline RL post-training

📅 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.

Box conceitos

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.

6Avaliaçã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.

Grid benchmarks

🏋️ 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.

Grid fazer vs evitar - avaliaçã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
Tip box

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.

Recall check

0 of …

Diga a resposta em voz alta antes de revelar — recordar é o que fixa, não releituras.

  1. BC → ACT → Diffusion Policy— progressão de complexidade com ganhos reais: cada paradigma resolve um problema do anterior.

  2. Action chunking resolve compounding error— prever K=100 ações futuras reduz a frequência de decisão e isola erros locais.

  3. Fine-tuning com LoRA é suficiente— adapta um VLA pré-treinado a sua tarefa com 50-200 demos sem GPU cluster.

  4. Avaliação rigorosa com OOD— success rate in-distribution não prediz performance real; teste com variações não vistas.