Skip to main content

📝 pt-br ~ 10 min read ~ ☕

Como LLMs Funcionam: A Jornada do Texto ao Token (e de Volta)

Share this post

“Ninguém entende realmente a IA moderna. Cada pequeno pedaço de texto produzido pelo ChatGPT é o resultado de centenas de bilhões de cálculos separados.”

Quando você digita “Qual é a capital da França?” no ChatGPT e recebe “Paris” como resposta, o que exatamente acontece entre esses dois momentos? A resposta envolve tokenização, vetores de embeddings, mecanismos de atenção, redes neurais profundas e amostragem probabilística. Vamos desmontar essa caixa preta, peça por peça.

O Pipeline Completo

Antes de mergulharmos nos detalhes, vamos ter uma visão geral do processo:

🔄 Pipeline Completo: Da Entrada à Saída

📝
Entrada
🔤
Tokenização
🌐
Embedding
👁️
Atenção
🧠
MLP
📊
Softmax
🎲
Amostragem
Saída

Cada pedaço de texto que você envia para um LLM passa por todas essas etapas. O modelo não “entende” texto da forma que humanos entendem — ele processa padrões numéricos. Vamos explorar cada etapa.


1. Tokenização: Quebrando o Texto

O primeiro passo é transformar texto legível em algo que o computador possa processar. Mas LLMs não trabalham com letras individuais nem com palavras completas — eles usam tokens.

🔤 Tokenização

Olá, mundo!
Tokens:
"Ol"
ID: 1847
"á"
ID: 225
","
ID: 11
" mund"
ID: 23456
"o"
ID: 78
"!"
ID: 0
💡 O que acontece: O texto é dividido em pedaços chamados tokens. Cada token recebe um ID numérico único do vocabulário do modelo (geralmente 50.000-200.000 tokens). Note que "Olá" foi dividido em "Ol" + "á" - isso é comum em tokenizadores!

2. Codificação One-Hot: Números para o Modelo

Computadores não entendem texto — apenas números. Cada token é convertido em um vetor onde apenas uma posição está “ligada”:

🎯 Codificação One-Hot

Vetor one-hot (vocabulário simplificado de 8 tokens):
[
0
0
1
0
0
0
0
0
]
0
1
2
3
4
5
6
7
💡 O que acontece: Cada token é representado como um vetor onde apenas UMA posição está "ligada" (valor 1) e todas as outras estão "desligadas" (valor 0). O token "Ol" tem ID 2, então a posição 2 está ativa.

Esses vetores são extremamente esparsos (quase todos zeros). Se o vocabulário tem 100.000 tokens, cada vetor one-hot tem 99.999 zeros e apenas um único 1.

🏊 A matemática por trás

Se temos um vocabulário VV com V|V| tokens, um vetor one-hot x\mathbf{x} para o token ii é:

xj={1se j=i0caso contraˊrio\mathbf{x}_j = \begin{cases} 1 & \text{se } j = i \\ 0 & \text{caso contrário} \end{cases}

Isso cria vetores de dimensão V|V|, que para modelos modernos significa vetores com 100.000+ dimensões onde apenas uma é não-zero.


3. Embeddings: Significado em Vetores Densos

Vetores one-hot são ineficientes e não capturam relacionamentos entre palavras. A matriz de embedding transforma cada vetor esparso em um vetor denso de números reais:

🌐 Matriz de Embeddings

Vetores One-Hot
Ol
1
0
0
0
0
0
á
0
1
0
0
0
0
,
0
0
1
0
0
0
×
Matriz de Embedding (aprendida)
0.6
0.6
-0.5
0.3
0.8
-0.7
0.7
0.5
-0.1
0.7
-0.9
-0.6
-0.7
-0.4
0.8
1.0
-0.1
0.2
0.4
0.9
0.4
0.2
-0.4
-0.4
=
Vetores de Embedding
Ol
0.23
-0.45
0.78
0.12
á
-0.56
0.34
0.01
-0.89
,
0.67
0.11
-0.33
0.45
💡 O que acontece: Os vetores one-hot (esparsos) são multiplicados pela matriz de embedding para produzir vetores densos de números reais. Esses vetores capturam o significado semântico de cada token - palavras similares terão vetores similares!

Os embeddings do GPT-4 têm 12.288 dimensões. Cada token é representado por 12.288 números de ponto flutuante que capturam seu “significado” em relação a todos os outros tokens.


4. Atenção: “A Quem Devo Prestar Atenção?”

Aqui está o coração dos Transformers: o mecanismo de atenção. Cada token pode “olhar” para tokens anteriores e decidir quais são relevantes para o contexto atual:

👁️ Mecanismo de Atenção (Self-Attention)

Passe o mouse sobre um token para ver a quais tokens anteriores ele "presta atenção":

O
gato
sentou
no
tapete
Matriz de Atenção:
O
gato
sent
no
tape
O
1.0
-
-
-
-
gato
0.3
0.7
-
-
-
sentou
0.1
0.6
0.3
-
-
no
0.1
0.1
0.1
0.7
-
tapete
0.1
0.4
0.2
0.1
0.2
💡 O que acontece: A atenção permite que cada token "olhe" para tokens anteriores e decida quais são relevantes. Note que "tapete" presta muita atenção em "gato" (0.4) - o modelo está aprendendo que gatos frequentemente se relacionam com tapetes!

⚠️ Máscara causal: Os tokens só podem ver tokens anteriores (os "-" na matriz), não tokens futuros. Isso permite geração autorregressiva.
🏊 Self-Attention: A Matemática

Para cada token, calculamos três vetores através de matrizes aprendidas:

  • Query (Q): “O que estou procurando?”
  • Key (K): “O que eu ofereço?”
  • Value (V): “Qual é meu conteúdo?”

A atenção é calculada como:

Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V

Onde dkd_k é a dimensão dos vetores de key. A divisão por dk\sqrt{d_k} estabiliza os gradientes durante o treinamento.

Multi-Head Attention

Modelos reais usam múltiplas “cabeças” de atenção em paralelo, cada uma aprendendo a focar em diferentes tipos de relacionamentos:

  • Uma cabeça pode aprender relações sintáticas (sujeito-verbo)
  • Outra pode aprender referências pronominais
  • Outra pode capturar padrões de longa distância

O GPT-4 usa 96 cabeças de atenção em cada uma de suas 96+ camadas!


5. MLP: Processamento Não-Linear

Após a atenção, cada token passa por um bloco MLP (Multi-Layer Perceptron):

🧠 Bloco MLP (Multi-Layer Perceptron)

EntradaCamada Oculta (4x maior)SaídaAtivação: GELU(x)
💡 O que acontece: O MLP primeiro expande a representação (tipicamente 4x), aplica uma função de ativação não-linear (GELU), e depoiscomprime de volta. Isso permite ao modelo aprender padrões complexos e não-lineares. Cada neurônio pode "especializar-se" em detectar padrões específicos!

O MLP expande a representação (tipicamente 4x), aplica uma função de ativação não-linear, e comprime de volta. Isso permite ao modelo:

  1. Armazenar conhecimento factual — neurônios específicos ativam para conceitos específicos
  2. Realizar transformações complexas — combinar informações de maneiras não-lineares
  3. Especializar-se — diferentes neurônios “aprendem” diferentes padrões

6. Camadas Empilhadas

Um transformer moderno empilha dezenas (ou centenas) de blocos Atenção + MLP:

Entrada → Embedding → [Atenção → MLP] × N → Saída
ModeloCamadasParâmetros
GPT-212-48117M - 1.5B
GPT-396175B
GPT-4~120 (estimado)~1.7T (estimado)
Claude 3.5DesconhecidoDesconhecido
Llama 3.180-1288B - 405B

Cada camada refina progressivamente a representação, de padrões superficiais (sintaxe) para conceitos abstratos (semântica, raciocínio).


7. Saída: De Vetores para Probabilidades

Após passar por todas as camadas, o vetor final é multiplicado por uma matriz de unembedding (o inverso do embedding), produzindo um logit para cada token do vocabulário:

logits=Wunembedhfinal\text{logits} = W_{\text{unembed}} \cdot h_{\text{final}}

Esses logits são convertidos em probabilidades via softmax:

P(tokeni)=elogitijelogitjP(\text{token}_i) = \frac{e^{\text{logit}_i}}{\sum_j e^{\text{logit}_j}}

🎲 Temperatura e Amostragem

Prompt: "A capital da França é ___"

Paris
36.6%
Londres
30.0%
Roma
18.2%
Berlim
5.0%
Madrid
4.1%
Lisboa
3.3%
Viena
1.8%
Praga
1.1%
⚖️ Temperatura Média: Um equilíbrio entre determinismo e criatividade.

Por Que LLMs Não São Determinísticos

Aqui está algo que confunde muita gente: se LLMs são baseados em matemática pura, por que dão respostas diferentes para o mesmo prompt?

🎰 Por Que LLMs Não São Determinísticos

Mesmo prompt: "Qual é a capital da França? Responda brevemente."

🎲 Por que isso acontece?

1. Amostragem probabilística: O modelo calcula probabilidades para cada token possível, mas sorteia o próximo token baseado nessas probabilidades (não escolhe sempre o mais provável).

2. Efeito cascata: Uma pequena diferença no primeiro token propagado muda todo o contexto para os tokens seguintes.

3. Paralelismo de GPU: Operações de ponto flutuante em GPUs podem ter pequenas variações devido à ordem de execução paralela.

Nota: Com temperatura=0 e seed fixa, o modelo pode ser determinístico, mas perde criatividade.

As Três Fontes de “Aleatoriedade”

  1. Amostragem Probabilística: O modelo não escolhe sempre o token mais provável. Ele sorteia baseado na distribuição de probabilidades. Com temperatura > 0, tokens menos prováveis têm chance de serem escolhidos.

  2. Efeito Cascata: Uma pequena diferença no primeiro token muda o contexto inteiro. “Paris, a” vs “Paris é” leva a continuações completamente diferentes.

  3. Aritmética de Ponto Flutuante: GPUs executam operações em paralelo, e a ordem de execução pode variar. Somas de números de ponto flutuante não são comutativas em precisão finita: (a+b)+ca+(b+c)(a + b) + c \neq a + (b + c) em floats!


Alucinação: Por Que LLMs “Inventam” Coisas

Esta é talvez a pergunta mais importante: por que modelos treinados em trilhões de tokens ainda “inventam” informações falsas?

👻 Alucinação: Por Que LLMs "Inventam" Coisas

Albert
95%
Einstein
92%
nasceu
88%
em
91%
1879
73%
✓ Por que isso funciona: O modelo viu milhões de textos sobre Einstein durante o treinamento. Existe um padrão estatístico forte: "Albert Einstein nasceu em 1879" aparece consistentemente nos dados. Cada token tem alta probabilidade dado o contexto.

A Raiz do Problema

LLMs são treinados para um único objetivo: prever o próximo token mais provável dado o contexto. Eles não são treinados para:

  • Dizer “eu não sei”
  • Verificar fatos
  • Distinguir verdade de ficção
  • Raciocinar sobre sua própria certeza

Quando você pergunta sobre algo que não estava nos dados de treinamento (ou estava de forma ambígua), o modelo faz o que foi treinado para fazer: continua gerando texto que parece plausível.

Por Que Parece Tão Convincente?

O modelo aprendeu padrões como:

  • “O presidente de [país] foi [nome]”
  • “A capital de [país] é [cidade]”
  • “[Pessoa famosa] nasceu em [data]”

Quando encontra “O primeiro presidente de Gondwana foi ___”, ele preenche com algo que se encaixa no padrão, mesmo que Gondwana seja um supercontinente pré-histórico!


Grokking: Quando Modelos Realmente “Entendem”

Um fenômeno fascinante descoberto por acidente na OpenAI: grokking é quando um modelo subitamente generaliza após parecer ter apenas memorizado os dados.

🧩 Grokking: Quando Modelos "Entendem" de Verdade

Step 0Step 0Step 10000
Acurácia Treino
0%
Acurácia Teste
0%
Início
Modelo inicializado com pesos aleatórios

A História do Grokking

Em 2021, um pesquisador da OpenAI saiu de férias e esqueceu um modelo treinando. Quando voltou, descobriu algo incrível:

  1. O modelo tinha atingido 100% de acurácia no treino após ~200 steps
  2. Por milhares de steps, a acurácia de teste ficou péssima (~20%)
  3. De repente, após ~7000 steps, a acurácia de teste saltou para 100%!

O Que Estava Acontecendo Internamente?

Pesquisadores analisaram as ativações internas e descobriram que o modelo estava silenciosamente construindo representações baseadas em senos e cossenos!

Para resolver aritmética modular (a+bmodpa + b \mod p), o modelo aprendeu:

  1. Calcular sin(2πa/p)\sin(2\pi a/p) e cos(2πa/p)\cos(2\pi a/p)
  2. Calcular sin(2πb/p)\sin(2\pi b/p) e cos(2πb/p)\cos(2\pi b/p)
  3. Usar a identidade trigonométrica: cos(a+b)=cos(a)cos(b)sin(a)sin(b)\cos(a+b) = \cos(a)\cos(b) - \sin(a)\sin(b)
  4. Converter de volta para a resposta

O modelo redescobriu uma identidade matemática fundamental sem nunca ter sido ensinado trigonometria!

🏊 Implicações Profundas

Grokking sugere que:

  1. Métricas de treino mentem: Performance perfeita no treino pode esconder que o modelo apenas memorizou.

  2. Aprendizado real leva tempo: A generalização pode exigir muito mais passos que a memorização.

  3. Estruturas internas importam: Não basta olhar as saídas — precisamos entender as representações internas.

  4. Regularização ajuda: Weight decay e dropout aceleram grokking ao penalizar memorização.


O Manifold de 6 Dimensões do Claude

Uma descoberta recente da Anthropic ilustra o quão alienígenas são essas representações internas.

Pesquisadores investigaram como o Claude Haiku decide quando criar quebras de linha. Descobriram que o modelo representa a contagem de caracteres e a largura da linha em um manifold de 6 dimensões!

As representações formam hélices que giram uma em relação à outra nas camadas de atenção (um “QK twist”). Quando a contagem se aproxima da largura da linha, os pontos ficam próximos no espaço de embedding, ativando a geração de uma nova linha.


Conclusão: A Caixa Preta Transparente

LLMs são, ao mesmo tempo, uma das tecnologias mais impressionantes já criadas e uma das menos compreendidas. Sabemos o que fazem (prever o próximo token) e como fazem (transformers, atenção, MLPs), mas ainda não entendemos completamente por que funcionam tão bem.

Algumas reflexões finais:

  1. Não são bases de dados: LLMs não “armazenam” fatos de forma recuperável. Eles codificam padrões estatísticos.

  2. Não são determinísticos: A mesma pergunta pode gerar respostas diferentes devido a amostragem e variações computacionais.

  3. Não sabem que não sabem: Foram treinados para sempre gerar o próximo token, nunca para dizer “eu não sei”.

  4. São alienígenas: As representações internas que desenvolvem são funcionais mas frequentemente incompreensíveis.

À medida que modelos ficam maiores e mais capazes, entender suas mecânicas internas torna-se cada vez mais crítico — não apenas para melhorá-los, mas para garantir que sejam seguros e alinhados com valores humanos.


Referências e Leitura Adicional


Este post foi inspirado pelo excelente vídeo do Welch Labs sobre grokking e interpretabilidade mecanística. Se você quer ir mais fundo, recomendo assistir o vídeo completo e explorar os papers linkados acima.

Share this post

Comentários

Favorite Books

Links are Amazon affiliate links.