← Trilha 1 MÓDULO 1.5

🌫️ Diffusion Policy e Flow Matching

A matemática que gera ações multimodais a partir do ruído. Diffusion Policy fez denoising de trajetórias virar o baseline de manipulação fina; flow matching simplificou o treino e leva o π0 a 50Hz. Aqui você entende o processo reverso, o conditioning e o custo de inferência.

6
Tópicos
~50
Minutos
Avançado
Nível
Teoria
Tipo

Conteúdo detalhado

ruído puro passo k passo 1 ação limpa processo reverso: cada passo prevê e remove um pouco de ruído (condicionado na observação)

Gerar ação como denoising: começa em ruído gaussiano e refina até uma trajetória executável.

1

🎲 Por que difusão para ação

No Módulo 1.4 vimos que MSE colapsa modos. A difusão resolve modelando a ação como uma amostragem de uma distribuição condicional: em vez de prever um valor, aprende a transformar ruído gaussiano numa trajetória válida por denoising. Como amostra, captura naturalmente distribuições multimodais — escolhe um modo coerente em vez da média. E ao gerar a trajetória inteira (chunk), produz movimentos suaves e consistentes.

💡 Três vantagens da difusão

Multimodal: representa "esquerda OU direita" sem mediar. Trajetória: gera chunks suaves de ações futuras. Estável no treino: objetivo de denoising é bem-comportado, sem instabilidade de GANs.

Denoising

Refinar ruído em ação.

Multimodal

Captura vários modos.

Trajectory gen

Gera chunk inteiro.

Amostragem

Ação como sample, não média.

2

🌊 Diffusion Policy (2023)

Diffusion Policy (Chi et al., 2023) aplicou DDPM a controle: uma rede (U-Net 1D ou transformer) faz denoising de uma sequência de ações futuras condicionada na observação. Combina action chunking (prever H passos) com receding horizon (executar parte, re-prever). Bateu baselines em manipulação fina e virou o padrão-ouro para tarefas dexterosas — inclusive a cabeça de ação do Octo.

# Diffusion Policy — inferência (esboço)
A = torch.randn(H, action_dim)          # ruído inicial
for k in reversed(range(K)):            # K passos de denoising
    eps = net(A, k, obs_cond)           # prevê o ruído
    A = ddpm_step(A, eps, k)            # remove um pouco
execute(A[:exec_horizon])               # receding horizon

📊 Por que funcionou

  • Multimodal — resolve tarefas com soluções alternativas.
  • Estável — treino robusto a hiperparâmetros.
  • Chunking — trajetórias suaves, menos jitter.

DDPM

Modelo de difusão denoising.

Receding horizon

Executar parte, re-prever.

U-Net 1D

Backbone comum do denoiser.

Padrão-ouro

Baseline de manipulação fina.

3

📐 Score matching e processo reverso

Por baixo, difusão tem um processo direto que adiciona ruído gaussiano à ação em K passos até virar ruído puro, e um processo reverso aprendido que o desfaz. A rede aprende o score — o gradiente da log-densidade ∇log p(a) — equivalente a prever o ruído adicionado. O conditioning na observação entra via FiLM ou cross-attention, fazendo a geração depender do que o robô vê.

1

Forward: adicionar ruído

A ação limpa vira ruído gaussiano em K passos (definido por um schedule).

2

Aprender o score

A rede prevê o ruído (≈ score), minimizando um erro simples de regressão.

3

Reverse: amostrar

Partindo de ruído, aplica o score K vezes condicionado na observação.

⚡ Dica prática

O conditioning é o que torna a política reativa: sem ele, você amostra ações plausíveis mas descoladas da cena. FiLM é leve; cross-attention é mais expressivo. Escolha conforme o budget.

Score function

Gradiente da log-densidade.

Reverse process

Desfazer o ruído passo a passo.

Conditioning

FiLM / cross-attention na obs.

Noise schedule

Como o ruído cresce em K.

4

➡️ Flow Matching e o uso em π0

Flow Matching generaliza a difusão: em vez de um processo estocástico de denoising, aprende um campo vetorial que transporta ruído→ação por uma ODE contínua. Com conditional flow matching, o alvo de treino é simplesmente a velocidade ao longo de um caminho (frequentemente reto) entre ruído e dado — objetivo mais simples e estável. O π0 usa exatamente isso no seu action expert para gerar ação contínua fluida a 50Hz.

✓ Vantagens do flow matching

  • Treino mais simples e estável que DDPM.
  • Caminhos retos permitem menos passos de inferência.
  • Ação contínua de alta frequência (π0 a 50Hz).

✗ Cuidados

  • Ainda exige integrar a ODE (vários NFEs).
  • Sensível à parametrização do caminho.
  • Requer action expert bem condicionado.

Flow matching

Transporte ruído→ação por ODE.

Vector field

Velocidade aprendida no caminho.

ODE

Processo determinístico contínuo.

π0 action expert

Flow matching a 50Hz.

5

⚡ Custo de inferência e destilação

O custo central de políticas generativas é o número de avaliações de função (NFE) — cada passo de denoising/integração é um forward pass. DDPM clássico usa dezenas a centenas de passos, inviável a 50Hz. Soluções: samplers rápidos (DDIM), consistency models (geram em 1-2 passos) e destilação de um modelo lento para um veloz. Flow matching com caminhos retos já reduz NFE naturalmente.

📊 Orçamento de passos

  • 50-100 NFE — DDPM ingênuo; alta qualidade, alta latência.
  • ~10 NFE — DDIM / flow com caminho reto; bom equilíbrio.
  • 1-2 NFE — consistency models destilados; tempo real.

💡 Latência vs qualidade

Combine poucos NFEs com action chunking: gere um chunk com 5-10 passos e execute-o enquanto re-amostra. Assim você mantém a expressividade da difusão dentro do orçamento de tempo real.

NFE

Avaliações por amostra.

Consistency model

Gera em 1-2 passos.

Distillation

Lento → rápido.

DDIM

Sampler determinístico rápido.

6

⚖️ Difusão vs autoregressivo

A grande escolha de design da cabeça de ação: geração por difusão/flow versus tokens autoregressivos. Difusão é mais expressiva (multimodal contínua) mas exige múltiplos passos. Autoregressivo (RT-2, OpenVLA, FAST) reaproveita o backbone LLM e tem treino simples, mas gera token a token e a discretização pode limitar a fidelidade. Não há vencedor universal — o trade-off é expressividade × latência × simplicidade de integração.

Eixo            Difusão/Flow        Autoregressivo (tokens)
expressividade  alta (multimodal)   média (depende da disc.)
latência        K passos por chunk  1 forward, N tokens
integração      action expert extra reusa o backbone LLM
exemplos        Diffusion Policy,π0 RT-2, OpenVLA, FAST

⚡ Dica prática

Tarefa dexterosa e contínua → difusão/flow. Integração simples sobre um VLM e treino autoregressivo unificado → tokens (e o Módulo 1.6 mostra como o FAST torna isso competitivo).

Expressividade

Capturar distribuições ricas.

Latência

Passos vs tokens por ação.

AR vs diffusion

Dois paradigmas de cabeça.

Integração

Reusar backbone ou não.

✅ Resumo do módulo

Difusão p/ ação — denoising captura multimodalidade que MSE perde.
Diffusion Policy — DDPM + chunking + receding horizon, o baseline fino.
Flow matching — ODE com caminho reto, treino estável, π0 a 50Hz.
Custo e trade-off — NFE/destilação controlam latência; difusão vs AR não tem vencedor único.

Próximo módulo

1.6 — Tokenização de ações: discreto, contínuo e FAST, fechando a Trilha 1.