Inteligência Artificial

Como o ChatGPT funciona: a matemática por trás de cada resposta

Por Vivian Kang
Como o ChatGPT funciona: a matemática por trás de cada resposta
Pumpkin Explica, #1
(A matemática por trás de cada resposta)
Nota da editora: este é o primeiro post de Pumpkin Explica, uma série que destrincha como sistemas de IA realmente funcionam — sem fórmulas e sem mística. Começamos pelo mecanismo que está por trás de qualquer resposta de um LLM.
TL;DR

Quando você faz uma pergunta ao ChatGPT, o modelo prevê a resposta token por token. Cada token é escolhido a partir de uma distribuição de probabilidade calculada por bilhões de multiplicações de matrizes que executam tokenização, embeddings, mecanismo de atenção e amostragem. Esse processo se repete até a resposta terminar.

Você digita "Qual é a capital do Brasil?" e aperta enter. Em alguns segundos, a resposta aparece: "A capital do Brasil é Brasília." Entre o enter e essa resposta, o sistema executou bilhões de multiplicações. Esse artigo descreve, sem fórmula, o que está acontecendo nessas multiplicações.

A descrição vale para qualquer LLM moderno — Claude, Gemini, Llama, DeepSeek, Mistral, ChatGPT. As escolhas de arquitetura mudam nos detalhes. O processo é o mesmo, e o objetivo também: prever a próxima palavra. Nesse artigo vamos detalhar um pouco mais o mecanismo por trás dessa suposta inteligência.

Pra simplificar, vamos focar num único momento desse processo: quando o modelo, já tendo começado a escrever "A capital do Brasil é", precisa decidir qual palavra vem a seguir.

01 — A entrada

Como a sua frase vira números: a tokenização

●/01 — tokenização · pumpkin labs
anim · 16:9 · t = 00:00.00
texto → vetor de números · vocab: 32k–200k entradas
como funcionam llms · 01 / 05
O modelo não lê português. Lê números.
palavra
tokens (BPE)
ids no vocabulário
contagem
0:00.00
0:52.00

O modelo não lê português. Lê números. A primeira coisa que acontece com a sua frase é a tokenização: o texto é quebrado em pedaços chamados tokens. Um token pode ser uma palavra inteira, um pedaço de palavra, ou um sinal de pontuação.

"A capital do Brasil é" vira algo como ["A", " capital", " do", " Brasil", " é"] — cinco tokens, mais ou menos um por palavra. Palavras comuns viram um token só. Palavras raras viram vários. "Brasília", a resposta que o modelo vai gerar daqui a pouco, pode virar ["Bras", "ília"] — dois tokens, porque é palavra menos frequente em corpus dominado pelo inglês.

Cada token tem um número de identificação fixo numa tabela chamada vocabulário, que tem entre 32 mil e 200 mil entradas dependendo do modelo. Sua frase sai do tokenizador como uma lista de inteiros, algo do tipo [32, 5847, 401, 6420, 244]. É só isso que o modelo vê dali pra frente.

02 — O significado

Como cada número vira uma posição no espaço: os embeddings

●/02 — embeddings · pumpkin labs
anim · 16:9 · t = 00:00.00
números → vetores · espaço semântico · 4096 dim
como funcionam llms · 02 / 05
Cada número vira um vetor: uma lista de números.
4421
id · "Brasil"
→
vetor · 4096 dimensões
[ 0.12, -0.87, 1.42, 0.03, -2.11, 0.45, -0.34, … 4089 outros ]
0:00.00
0:55.00

Cada um desses inteiros é trocado por um vetor. Vetor, na prática, é uma lista de números. O que torna ele interessante é que essa lista descreve uma posição num espaço — não um espaço de duas ou três dimensões como o do mundo físico, mas um espaço com, digamos, 4096 dimensões.

Para visualizar: imagina que cada palavra do dicionário tem coordenadas (x, y) num plano. Palavras parecidas ficam perto, palavras diferentes ficam longe. Agora generaliza para 4096 coordenadas em vez de 2. Cada dimensão captura, de forma aprendida durante o treino, algum aspecto abstrato do significado. Nenhuma dimensão isolada significa "verbo" ou "ação humana". O significado vem da combinação das 4096.

Dois tokens com sentidos parecidos, como "Brasil" e "Argentina", terminam com vetores geometricamente próximos nesse espaço multidimensional. "Brasil" e "fotossíntese" ficam longe. A geometria do espaço chega a capturar relações conceituais: o vetor de "rei" menos o vetor de "homem" mais o vetor de "mulher" cai perto do vetor de "rainha". Essa proximidade é o que o modelo usa pra "saber" o que cada palavra quer dizer.

Esse passo se chama embedding. A saída é uma matriz: uma linha por token, 4096 colunas. Para "A capital do Brasil é", você tem agora uma matriz 5 por 4096 de números, e é isso que entra na próxima etapa.

03 — O contexto

Como funciona o mecanismo de atenção em um LLM

●/03 — atenção · pumpkin labs
anim · 16:9 · t = 00:00.00
q · k → softmax(scores) → Σ wᵢ vᵢ
como funcionam llms · 03 / 05
Cinco tokens. Pra prever o próximo, quais importam?
0:00.00
1:05.00

Agora a parte que faz o LLM parecer entender contexto. O modelo precisa decidir o que vem depois de "é". Para isso, cada palavra da frase precisa olhar pras outras e decidir quanto cada uma importa pro contexto que está sendo construído.

Vamos focar no token "é", que é onde a previsão vai sair. Para prever o que vem depois dele, ele precisa de uma resposta clara para: quais palavras anteriores são mais relevantes? Intuitivamente, "capital" e "Brasil" são as que carregam a informação que define a resposta. "A", "do" e "é" mesmo carregam pouca coisa.

Para fazer essa escolha automaticamente, o modelo dá a cada palavra três vetores. A Query (Q) pode ser lida como "o que eu estou procurando agora?". A Key (K) é "como eu me anuncio pras outras me acharem?". O Value (V) é "se alguém me achar relevante, o que eu entrego?".

Pra calcular quanto "capital" importa pra "é", o modelo faz um produto escalar entre o Q de "é" e o K de "capital". Produto escalar é uma das contas mais simples da matemática: multiplica elemento por elemento e soma tudo. O resultado é um número que mede o quanto duas direções estão alinhadas. Se Q de "é" e K de "capital" apontam pro mesmo lado, número alto. Se apontam pra lados perpendiculares, perto de zero.

O modelo faz essa conta entre o Q de "é" e o K de cada uma das outras palavras. Os números resultantes passam por uma normalização chamada softmax, que vira o conjunto de scores em pesos que somam 1. "Capital" e "Brasil" pegam quase toda a massa. "A" e "do" ficam com quase nada.

Para terminar, o modelo soma os Values de todas as palavras, cada um multiplicado pelo seu peso. Essa soma é o novo vetor de "é". Ele agora "viu" a frase inteira, com mais peso vindo das palavras mais relevantes para prever o próximo token.

Isso é a atenção. Repetida em paralelo em várias "cabeças" — cada cabeça aprende um tipo diferente de relevância, como concordância gramatical, ligação de pronome, ou relação semântica — e empilhada em dezenas a centenas de camadas. Em cada camada, cada palavra refaz a operação com Q, K e V recém-projetados a partir da representação que saiu da camada anterior.

04 — A escala

O que são parâmetros: a multiplicação de matrizes por baixo

●/04 — logits · pumpkin labs
anim · 16:9 · t = 00:00.00
vetor final · unembedding · softmax → distribuição
como funcionam llms · 04 / 05
Depois de N camadas, sai um vetor final.
transformer · n camadas
camada 1atenção + ffn
camada 2atenção + ffn
camada 3atenção + ffn
camada 4atenção + ffn
camada 5atenção + ffn
camada 6atenção + ffn
camada 7atenção + ffn
camada 8← última
↓
vetor final · 4096 dimensões
"Estado do último token, depois de tudo."
↳ comprimido toda a frase nele.
↳ codifica o contexto inteiro.
↳ ainda é só 4096 números.
0:00.00
1:18.00

Tudo o que descrevi até agora é somente uma combinação de multiplicação de matrizes intercalada com algumas operações não lineares.

Pense numa matriz como uma máquina de transformar vetores. Você entrega um vetor de entrada, a matriz devolve um vetor de saída. Cada elemento do vetor de saída é uma combinação ponderada dos elementos do vetor de entrada, e os pesos dessa combinação são os números dentro da matriz.

Em termos práticos: se o vetor de entrada tem 4096 números e a matriz é 4096 por 4096, cada um dos 4096 elementos da saída é o resultado de uma "pergunta" diferente feita ao vetor de entrada. Uma linha da matriz pode estar perguntando "esse token parece um pronome?". Outra, "esse token está no começo de uma frase?". O modelo não escolhe essas perguntas, são embutidas durante seu processo de treinamento. Os números da matriz são ajustados durante o pré-treino para fazer com que essas combinações sejam úteis para prever a próxima palavra.

Cada matriz dentro do LLM é uma camada de perguntas aprendidas. Empilhar várias matrizes é inserir essas perguntas, cada nível mais abstrato que o anterior. O que parece raciocínio é, no fundo, essa cascata.

Esses números têm um nome: parâmetros. Quando você lê que o GPT-3 tem 175 bilhões de parâmetros, ou que o Llama 70B tem 70 bilhões, é literalmente isso — a soma total dos números dentro de todas as matrizes do modelo. Cada parâmetro é um peso que foi ajustado individualmente, durante o treino, para fazer o conjunto inteiro prever bem a próxima palavra.

Uma única matriz 4096 por 4096 já tem quase 17 milhões de parâmetros. Multiplica isso pelas dezenas a centenas de camadas que um LLM moderno empilha, soma as matrizes maiores que cobrem o vocabulário inteiro, e você chega na casa dos bilhões. Cada token que o modelo gera dispara trilhões de multiplicações usando esses parâmetros para atravessar todas as camadas. Não tem mágica. Tem escala o suficiente para parecer mágica.

05 — A decisão

Como o LLM escolhe a próxima palavra

Quando "A capital do Brasil é" termina de atravessar todas as camadas, o modelo tem um vetor final que carrega o "estado" condicionado em tudo que veio antes. É esse vetor que vai escolher a próxima palavra.

Ele é multiplicado por uma matriz gigante chamada matriz de unembedding. Ela tem 4096 linhas, igual à dimensão do vetor, e tantas colunas quanto o vocabulário tem entradas — digamos, 100 mil. A multiplicação devolve um vetor com 100 mil números. Cada número é o logit de um token possível, bruto, sem normalização: "quão atraente o modelo achou esse token agora?".

Esse vetor passa por softmax. O resultado é uma distribuição de probabilidade sobre o vocabulário inteiro. Cada token recebe uma probabilidade entre 0 e 1, e a soma das 100 mil probabilidades dá 1.

Para "A capital do Brasil é", a distribuição se concentra em poucos candidatos. Algo como "Bras" 0,82, "Rio" 0,09, "São" 0,04, "uma" 0,02, e cauda longa nos outros 99.996 tokens dividindo o que sobrou.

Esse é o ponto que muda tudo. O modelo nunca produz "uma resposta". Ele produz uma distribuição. A resposta nasce da escolha de um token a partir dessa distribuição.

06 — A amostragem

Temperatura, top-k e top-p: como o modelo amostra a resposta

●/05 — amostragem · pumpkin labs
anim · 16:9 · t = 00:00.00
distribuição → token · greedy · temperatura · top-k/p
como funcionam llms · 05 / 05
O modelo nunca produz uma resposta. Produz uma distribuição.
"A capital do Brasil é?"
71.0%
Brasília
9.0%
Rio
4.0%
a
3.0%
Brasilia
2.5%
São Paulo
2.0%
a maior
1.3%
formada
1.1%
uma
0.8%
nossa
5.3%
+ 99 991
↑ probabilidade
Σ pᵢ sobre os 100 000 tokens · soma = 1.000
0:00.00
1:05.00

Como o sistema escolhe um token a partir da distribuição? A estratégia mais simples se chama greedy: pega sempre o token de maior probabilidade. No nosso exemplo, greedy escolhe "Bras". Determinístico, mas tende a travar em loops quando aplicado em respostas longas.

A maioria dos sistemas usa amostragem com temperatura. Os logits são divididos por um número antes do softmax. Temperatura baixa concentra mais a massa no topo trazendo respostas mais conservadoras. Temperatura alta achata a distribuição gerando respostas mais criativas, ou seja, mais imprevisíveis. Com temperatura alta o suficiente, "Rio" pode sair em vez de "Bras", mesmo com bem menos probabilidade.

Outras técnicas — top-k e top-p — cortam a cauda da distribuição antes de amostrar, para evitar tokens muito improváveis. Só os candidatos mais prováveis entram no sorteio.

A consequência prática: a mesma pergunta, no mesmo modelo, com o mesmo prompt, pode gerar respostas diferentes em rodadas diferentes. A geração é estocástica por construção.

Escolhido um token, ele é colado no fim da sequência. "A capital do Brasil é" vira "A capital do Brasil é Bras". Tudo começa de novo: o novo conjunto de tokens passa pelas camadas, gera um novo vetor final, sai uma nova distribuição. Agora "ília" ganha quase toda a massa, porque a sequência inteira torna óbvio o que vem depois de "Bras". O modelo escolhe "ília", cola na sequência, e repete. Depois vem um ponto final, ou um token especial de "fim".

A resposta que você lê é o produto dessa repetição. Centenas ou milhares de decisões sequenciais, cada uma sendo uma amostragem de uma distribuição condicionada em tudo que veio antes.

07 — O treino

De onde vieram os pesos: pré-treino e RLHF

Tudo isso pressupõe que as matrizes do modelo já estão com os números certos. Esses números vieram do treino, em duas fases.

Pré-treino. Bilhões de páginas de texto, vindas de livros, internet, código, são jogadas no modelo. Pra cada janela de texto, o modelo é forçado a prever o próximo token. Os pesos das matrizes são ajustados, por gradiente descendente, pra minimizar o erro dessa previsão. Não tem nenhum sinal de "isso é verdade" ou "isso é falso" no pré-treino. O único sinal é "isso é estatisticamente comum no corpus".

Alinhamento (RLHF e variantes). Em cima do pré-treino, anotadores humanos comparam respostas do modelo a perguntas reais e dizem qual preferem. Um segundo modelo, chamado modelo de recompensa, aprende a aproximar essa preferência. O LLM original é então ajustado pra produzir respostas que o modelo de recompensa avalia bem. Isso o deixa mais útil, mais educado, e — detalhe importante — mais confiante. Humanos preferem respostas firmes a hesitantes, e o modelo aprende isso.

O que está dentro do LLM depois dessas duas fases não é um banco de fatos. É um corpus comprimido em pesos. Quando você pergunta "qual a capital do Brasil?", o modelo não consulta nada. Continua "a capital do Brasil é" da forma estatisticamente mais provável dado o que viu no corpus. Acerta porque "Brasília" segue essa frase em proporção esmagadora dos exemplos.

08 — A conclusão

Por que entender o mecanismo do ChatGPT importa

Voltando ao começo: você apertou enter em "Qual é a capital do Brasil?", e a resposta apareceu na tela token por token — "A", " capital", " do", " Brasil", " é", "Bras", "ília", ponto final. Cada um desses tokens disparou o pipeline inteiro: tokenização do contexto até ali, embedding, dezenas de camadas de atenção, uma multiplicação final pra ter logits sobre todo o vocabulário, softmax, amostragem. Cada palavra da resposta é uma rodada completa desse processo.

A resposta que você lê foi construída palavra por palavra, como a continuação mais provável da conversa. Quando essa continuação bate com a verdade — capital do Brasil, fórmula de Bhaskara, sintaxe de Python — o sistema parece um banco de conhecimento. Porém, quando não está alinhada — pedido do seu cliente, política interna da sua empresa, fato recente que não estava no corpus — o sistema continua respondendo do mesmo jeito, com a mesma fluência.

Esse é o mecanismo. Por que ele leva a alucinação, e o que fazer a respeito, é assunto de outro artigo.

FAQ — Perguntas frequentes

Como o ChatGPT gera uma resposta?

O ChatGPT gera respostas prevendo um token de cada vez. Cada token (palavra ou pedaço de palavra) é escolhido a partir de uma distribuição de probabilidade calculada sobre tudo o que veio antes na conversa. Esse processo se repete dezenas a milhares de vezes — uma vez por token gerado — até que o modelo produza um token especial de fim de resposta.

O que é tokenização em um LLM?

Tokenização é o processo de quebrar texto em unidades chamadas tokens, que o modelo converte em números. Um token pode ser uma palavra inteira, um pedaço de palavra ou um sinal de pontuação. Palavras comuns costumam virar um único token; palavras raras viram vários. O vocabulário de um LLM moderno tem entre 32 mil e 200 mil tokens distintos.

O que é um embedding em IA?

Embedding é a representação de um token como um vetor — uma lista de números (tipicamente 4096) que descreve uma posição num espaço multidimensional. Tokens com significados parecidos ficam geometricamente próximos nesse espaço. "Brasil" e "Argentina" caem perto; "Brasil" e "fotossíntese", longe. Essa geometria é o que permite o modelo saber o que cada palavra quer dizer.

O que é o mecanismo de atenção em um LLM?

Atenção é o mecanismo que permite cada palavra de uma sequência olhar pras outras e decidir quais são mais relevantes pro contexto. Em "A capital do Brasil é", o token "é" precisa dar mais peso a "capital" e "Brasil" do que a "A" e "do" pra prever o próximo token. Atenção calcula esses pesos automaticamente e roda em paralelo em várias cabeças e camadas.

O que são Query, Key e Value em um transformer?

Query (Q), Key (K) e Value (V) são três vetores que cada token recebe pra participar do mecanismo de atenção. Query representa o que o token está procurando, Key representa como o token se anuncia pros outros, e Value representa o que ele entrega quando é considerado relevante. O produto escalar entre Q de um token e K dos demais define a importância de cada um.

O que são parâmetros em um LLM?

Parâmetros são os números dentro das matrizes que compõem um LLM, ajustados durante o treinamento. Quando se diz que o GPT-3 tem 175 bilhões de parâmetros ou que o Llama 70B tem 70 bilhões, é literalmente a soma de todos esses pesos. Cada parâmetro contribui pra transformar o vetor de entrada na previsão da próxima palavra.

Como o LLM escolhe a próxima palavra?

O LLM nunca produz uma resposta única — produz uma distribuição de probabilidade sobre todo o vocabulário. A escolha do próximo token vem de uma amostragem dessa distribuição. Estratégias comuns são greedy (sempre o token mais provável), amostragem com temperatura, top-k e top-p. Por isso, a mesma pergunta pode gerar respostas diferentes em rodadas diferentes.

O que é temperatura em um LLM?

Temperatura é um parâmetro que controla o quão criativa ou conservadora é a resposta de um LLM. Temperaturas baixas concentram a probabilidade nos tokens mais prováveis, produzindo respostas previsíveis. Temperaturas altas achatam a distribuição, permitindo que tokens menos prováveis sejam escolhidos, gerando respostas mais variadas. Tecnicamente, a temperatura divide os logits antes do softmax.

Qual a diferença entre top-k e top-p?

Top-k limita a amostragem aos k tokens mais prováveis (por exemplo, os 50 melhores). Top-p, também chamado de nucleus sampling, limita aos tokens cuja probabilidade acumulada atinge p (por exemplo, 0,9). Top-k usa um número fixo de candidatos; top-p ajusta dinamicamente conforme a distribuição. Ambos cortam a cauda da distribuição pra evitar tokens muito improváveis.

Por que o ChatGPT dá respostas diferentes pra mesma pergunta?

Porque a geração de texto em LLMs é estocástica por construção. O modelo calcula uma distribuição de probabilidade sobre o vocabulário e amostra um token a partir dela. Com temperatura maior que zero, tokens diferentes podem ser sorteados em rodadas distintas, mesmo com o mesmo prompt. Só com temperatura zero (greedy) o resultado é determinístico.

O ChatGPT consulta a internet ou um banco de dados pra responder?

Por padrão, não. Um LLM não consulta nada quando gera uma resposta — ele simplesmente prevê o próximo token usando os pesos aprendidos no treinamento. O conhecimento está comprimido nos parâmetros do modelo, não num banco consultável. Ferramentas como busca na web ou RAG adicionam consulta externa, mas são camadas separadas, não parte do mecanismo base.

O que é pré-treino de um LLM?

Pré-treino é a fase em que o LLM aprende a prever o próximo token a partir de bilhões de páginas de texto vindas de livros, internet e código. Os pesos das matrizes são ajustados por gradiente descendente pra minimizar o erro de previsão. Não há sinal de verdadeiro ou falso no pré-treino — só de estatisticamente comum no corpus.

O que é RLHF?

RLHF (Reinforcement Learning from Human Feedback) é a técnica de alinhamento usada pra ajustar um LLM já pré-treinado às preferências humanas. Anotadores comparam respostas do modelo e dizem qual preferem; um modelo de recompensa aprende a aproximar essa preferência; o LLM é então treinado pra maximizar essa recompensa. RLHF deixa o modelo mais útil, mais educado e — efeito colateral — mais confiante nas respostas.
Continua na série: por que LLMs alucinam — e o que fazer a respeito.

Gostou do conteúdo?

Entre em contato conosco para descobrir como implementar essas soluções na sua empresa.