# Pós-treinamento e amostragem: por que a IA responde diferente a cada vez

> Como o modelo é ajustado para conversar e como temperatura, top-k e top-p explicam inconsistências e alucinações.

- Autor: Marcelo Silva
- Publicado em: 2026-02-13
- Tema: IA
- Série: Engenharia de IA, parte 4 de 14 (https://marcelxsilva.dev/series/engenharia-de-ia/)
- URL: https://marcelxsilva.dev/artigos/pos-treinamento-e-amostragem/

Depois do pré-treinamento, o modelo já sabe muita coisa, mas ainda não está pronto para conversar com ninguém. Neste artigo eu falo de duas etapas que explicam boa parte do comportamento que vemos no dia a dia: o **pós-treinamento**, que ensina o modelo a interagir com pessoas, e a **amostragem**, que é como ele escolhe cada palavra da resposta.

## Pós-treinamento

Um modelo base que acabou de sair do pré-treinamento tem dois problemas.

O primeiro: como os dados de treinamento vêm de todo canto da internet, ele pode reproduzir comportamentos racistas, sexistas, grosseiros ou simplesmente errados.

O segundo: ele não sabe que está numa conversa. Se você perguntar "como faço uma pizza?", ele pode só continuar a frase, como se estivesse completando um texto, em vez de responder.

O pós-treinamento existe para resolver essas duas coisas e alinhar o modelo ao que as pessoas esperam dele. Se quiser ler mais, a OpenAI tem um material sobre isso em [Aligning language models to follow instructions](https://openai.com/index/instruction-following/).

### Dados de demonstração

Como o modelo imita os dados com que foi treinado, a forma de ensinar ele a responder é mostrar exemplos de boas respostas. Esses exemplos seguem o formato **(prompt, resposta)** e são chamados de **dados de demonstração**.

Tem gente que chama esse processo de **clonagem de comportamento**: você demonstra como o modelo deve se comportar e ele copia.

Como cada tipo de pedido pede um tipo de resposta, os exemplos precisam cobrir a variedade de tarefas que você quer que o modelo saiba fazer: responder perguntas, resumir, traduzir, etc.

![Distribuição dos tipos de tarefa usados no InstructGPT](https://marcelxsilva.dev/articles/images/pos-treinamento-e-amostragem/01.png)
*Tipos de prompt usados pela OpenAI para ajustar o InstructGPT. Geração de texto domina, seguida de perguntas abertas e brainstorming.*

Repare que não tem tarefa multimodal ali, porque o InstructGPT trabalha só com texto.

### A importância de bons rotuladores

Assim como uma pessoa aprende melhor com bons professores, a IA aprende melhor com bons rotuladores.

Na rotulagem tradicional, muita coisa pode ser feita com pouca experiência no assunto. Aqui é diferente. Os dados de demonstração podem ter prompts complexos, cujas respostas exigem pensamento crítico, pesquisa e bom senso para julgar se o pedido do usuário é adequado. Escrever esses exemplos dá trabalho e exige gente qualificada.

## Amostragem

Um modelo monta a resposta por meio de um processo chamado **amostragem**. É ela que torna a saída da IA **probabilística**, e entender isso é a chave para lidar com inconsistência e alucinação.

### Como o modelo escolhe uma resposta

Dada uma entrada, uma rede neural primeiro calcula a probabilidade de cada resultado possível.

Num modelo de classificação de spam, só existem dois resultados: spam e não spam. O modelo pode dizer que tem 90% de chance de ser spam e 10% de não ser. Aí você define uma regra, por exemplo "acima de 50% é spam", e o e-mail vai para a caixa de spam.

Num modelo de linguagem é a mesma ideia, só que em escala maior. Para gerar o próximo token, ele calcula a probabilidade de **todos os tokens do vocabulário**:

![Distribuição de probabilidade sobre o vocabulário](https://marcelxsilva.dev/articles/images/pos-treinamento-e-amostragem/02.png)
*Para a pergunta "qual sua cor favorita?", "green" tem 50% de chance, "red" tem 30%, e tokens como "the" quase nenhuma.*

### Amostragem gananciosa

A estratégia mais óbvia é sempre escolher o token mais provável. Isso se chama **amostragem gananciosa** (greedy sampling).

Em classificação funciona bem. Se o modelo acha que o e-mail é mais provável de ser spam, faz sentido marcar como spam.

Mas para gerar texto, o resultado fica chato. Imagine um modelo que, para qualquer pergunta, sempre responde com as palavras mais comuns.

Em vez disso, o modelo pode **sortear** o próximo token de acordo com a distribuição. Se "vermelho" tem 30% de chance e "verde" tem 50%, "vermelho" vai ser escolhido 30% das vezes e "verde" 50%.

### Logits

E de onde vêm essas probabilidades? A rede neural gera um vetor de **logits**. Cada logit corresponde a um token do vocabulário, então o tamanho do vetor é o tamanho do vocabulário.

![Vetor de logits gerado pela rede neural](https://marcelxsilva.dev/articles/images/pos-treinamento-e-amostragem/03.png)
*Cada valor do vetor corresponde a um token. Esses valores ainda não são probabilidades.*

Logits não são probabilidades: podem ser negativos e não somam 1. Para virar probabilidade, eles passam por uma função chamada **softmax**. É em cima desses valores que as estratégias de amostragem trabalham.

## Estratégias de amostragem

A estratégia certa faz o modelo gerar respostas mais adequadas para a sua aplicação. Uma pode deixar o modelo mais criativo, outra mais previsível. Dá até para criar a sua, mas isso normalmente exige acesso aos logits do modelo.

### Temperatura

Sortear pela distribuição já ajuda, mas os tokens comuns continuam dominando. Para "Minha cor favorita é...", as cores mais comuns têm as maiores probabilidades e o modelo acaba respondendo como uma criança de cinco anos: "Minha cor favorita é verde".

Como "a" tem probabilidade baixa, quase nunca sai algo como "Minha cor favorita é a cor de um lago parado numa manhã de primavera".

A **temperatura** redistribui essas probabilidades:

- **Temperatura alta:** reduz a probabilidade dos tokens comuns e aumenta a dos raros. As respostas ficam mais criativas, mas podem perder coerência.
- **Temperatura baixa:** aumenta a chance de o modelo escolher o óbvio. As respostas ficam mais consistentes, mas mais sem graça.

É comum usar **0,7** para casos criativos, porque equilibra criatividade e previsibilidade. Mas vale testar e achar o valor que funciona melhor para o seu caso.

### Top-k

O top-k reduz a carga de computação sem sacrificar muito a diversidade. Em vez de considerar o vocabulário inteiro, o modelo:

1. Ordena os tokens por probabilidade.
2. Mantém só os **k** mais prováveis.
3. Normaliza as probabilidades só desse grupo.
4. Sorteia entre esses k.

Ou seja, ele cria um pool pequeno de candidatos plausíveis para a próxima palavra.

A parte mais pesada do cálculo é o softmax aplicado sobre dezenas de milhares de tokens. Limitando a k valores, o modelo faz menos conta a cada token e gera mais rápido. Dependendo da diversidade que você quer, k costuma ficar entre 50 e 500, bem menos que o tamanho do vocabulário.

**Se k for pequeno (1 a 20):**

- Poucas opções no pool.
- Mais **previsibilidade**.
- Menos **diversidade**.

**Se k for grande (100 a 500):**

- Mais opções no pool.
- Texto mais **criativo e variado**.
- Pode ficar **menos previsível** ou até incoerente.

### Top-p

No top-k, o número de candidatos é sempre o mesmo. Só que isso deveria mudar conforme a pergunta. Para "Você gosta de música? Responda só sim ou não", só faz sentido considerar dois tokens. Para "Qual o sentido da vida?", faz sentido considerar muitos.

O **top-p**, também chamado de **amostragem de núcleo** (nucleus sampling), resolve isso. O modelo soma as probabilidades dos tokens mais prováveis, em ordem decrescente, e para quando a soma chega em **p**. Só os tokens dentro dessa soma entram no sorteio.

Os valores comuns ficam entre **0,9 e 0,95**. Com p = 0,9, o modelo considera o menor conjunto de tokens que soma mais de 90%.

![Probabilidades dos próximos tokens para uma resposta de sim ou não](https://marcelxsilva.dev/articles/images/pos-treinamento-e-amostragem/04.png)
*Com top-p de 90%, só "yes" e "maybe" entram (60% + 31%). Com 99%, "no" também entra.*

Uma analogia: você está num restaurante, em dúvida sobre o que pedir, e fala para o garçom:

**"Me traz as opções que, juntas, somam 90% das chances de eu escolher."**

O garçom começa pelos pratos mais pedidos e vai juntando até passar desses 90%. Esse conjunto é o núcleo. Então o modelo:

1. Ordena as palavras pela chance de acontecer.
2. Soma as probabilidades até passar de **p**.
3. Sorteia a próxima palavra só dentro desse conjunto.

Diferente do top-k, o top-p não reduz necessariamente o custo do softmax. A vantagem dele é focar só nos valores mais relevantes para cada contexto. Na teoria não parece grande coisa, mas na prática funciona bem, e por isso ficou tão popular.

### Condição de parada

Um modelo autorregressivo gera um token depois do outro. Uma resposta longa demora mais, custa mais e às vezes irrita o usuário. Por isso vale definir quando o modelo deve parar.

- **Número máximo de tokens:** é simples, mas a resposta pode ser cortada no meio da frase.
- **Tokens ou palavras de parada:** o modelo para quando gera um token específico, como o de fim de sequência.

As condições de parada ajudam a manter a latência e o custo baixos.

## A natureza probabilística da IA

Pense que você pergunta para um amigo qual é a melhor culinária do mundo. Se perguntar de novo um minuto depois, ele vai dar a mesma resposta.

Com um modelo de IA não é assim. Se ele acha que a culinária vietnamita tem 70% de chance de ser a melhor e a italiana 30%, ele vai responder "vietnamita" 70% das vezes e "italiana" 30% das vezes.

Isso causa dois problemas:

- **Inconsistência:** o modelo gera respostas muito diferentes para o mesmo prompt, ou para prompts quase iguais.
- **Alucinação:** o modelo dá uma resposta que não tem base em fatos.

Os modelos base são treinados com uma quantidade enorme de dados. Eles são uma agregação da opinião de muita gente e carregam, literalmente, um mundo de possibilidades. Qualquer coisa com probabilidade diferente de zero, por mais absurda ou errada que seja, pode ser gerada.

Isso é ótimo para tarefas criativas. Criatividade é justamente explorar além do caminho óbvio, e a IA pode gerar ideias sem fim. Mas essa mesma característica vira problema em quase todo o resto.

### Inconsistência

Ela aparece de dois jeitos:

- **Mesma entrada, saídas diferentes:** você manda o mesmo prompt duas vezes e recebe duas respostas bem diferentes.
- **Entrada levemente diferente, saídas muito diferentes:** você muda uma letra para maiúscula sem querer e o resultado muda completamente.

Isso quebra a experiência do usuário. Numa conversa entre pessoas, a gente espera consistência. Imagine alguém que te diz um nome diferente cada vez que te encontra. Com a IA, as pessoas esperam o mesmo.

### Como reduzir a inconsistência

Para o caso de mesma entrada com saídas diferentes, dá para:

- **Fazer cache da resposta**, para que a mesma pergunta receba sempre a mesma resposta.
- **Fixar as variáveis de amostragem**: temperatura, top-p e top-k.

Mesmo assim, não existe garantia de 100% de consistência. O hardware onde o modelo roda também influencia a saída, porque máquinas diferentes executam as mesmas instruções de jeitos diferentes e lidam com faixas numéricas diferentes. Se você hospeda o modelo, tem algum controle sobre isso. Se usa uma API como a da OpenAI ou do Google, depende do que o provedor oferece.

No fim, trabalhar com IA é aceitar que ela é probabilística e construir o fluxo da aplicação em volta disso. E se a saída varia, você precisa de uma forma de medir se ela está boa, que é o assunto do próximo artigo: como avaliar um modelo.

## Referência

Este artigo faz parte dos meus estudos sobre engenharia de IA, baseados no livro *AI Engineering: Building Applications with Foundation Models*, de Chip Huyen (O'Reilly, 2025). As imagens usadas aqui também vêm do livro.
