Fazendo um LLM do Zero #02: Como Transformar Palavras em Números (Sem Perder a Alma) 🔢✨
Se você abrir o cérebro de um computador, não vai encontrar letras, palavras ou poesias. Você vai encontrar eletricidade. Zeros e uns.
Isso cria um problema fundamental para quem quer criar Inteligência Artificial: como ensinar uma máquina a ler, se a linguagem nativa dela é matemática pura?
A abordagem ingênua seria criar uma tabela gigante: “Abacate” = 1, “Bola” = 2, “Casa” = 3.
Funciona? Sim. O computador consegue ler.
Mas ele perde o significado. Para ele, “Abacate” e “Bola” são apenas números vizinhos, sem nenhuma relação real.
Nesta sessão, resolvemos esse problema. Descobrimos a alquimia que transforma texto em vetores ricos de significado.
1. O Abismo entre Texto e Máquina
Tudo o que é “dado bruto” no mundo real (texto, áudio, vídeo) precisa ser convertido para uma representação numérica densa antes de entrar em uma rede neural.
Não queremos apenas números soltos. Queremos Embeddings.
Um Embedding não é apenas um número. É uma lista de números (um vetor) que funciona como uma coordenada de GPS.
2. O GPS das Palavras (Espaço Vetorial)
Imagine um mapa gigante.
Nesse mapa, a palavra “Rei” mora em uma coordenada. A palavra “Rainha” mora bem pertinho dela.
Já a palavra “Maçã” mora do outro lado do mapa, longe da realeza, mas vizinha de “Banana”.
Isso é o Espaço Vetorial.
Quando treinamos um LLM, ele aprende a organizar esse mapa sozinho. Ele descobre que “cachorro” e “gato” compartilham muitas características, então ele os coloca próximos geometricamente. É assim que a matemática captura a semântica.
3. Quebrando o Texto: Tokenização
Mas espere… o modelo lê palavras inteiras?
Na verdade, não.
Se o modelo tivesse que decorar todas as palavras do dicionário (mais gírias, nomes, erros de digitação), o vocabulário seria infinito.
Para resolver isso, usamos a Tokenização. Nós quebramos o texto em pedacinhos chamados Tokens.
1. Lemos o texto.
2. Identificamos os pedaços únicos.
3. Criamos um vocabulário numérico.
4. O Tradutor Universal (Encode e Decode)
Join Medium for free to get updates from this writer.
Uma vez que temos o vocabulário, criamos uma ponte de duas vias.
O Encode transforma a frase “Olá Mundo” em [245, 981].
O Decode pega [245, 981] e devolve “Olá Mundo”.
É essa interface que permite que nós (humanos) e o modelo (máquina) conversemos.
5. O Lego das Palavras (BPE — Byte Pair Encoding)
E se aparecer uma palavra que o modelo nunca viu? Tipo “Supercalifragilisticexpialidocious”?
Se usássemos palavras inteiras, o modelo travaria (o temido erro “Out of Vocabulary”).
A solução moderna é genial: Subwords (Sub-palavras).
Se o modelo não conhece a palavra inteira, ele a quebra em pedaços que ele conhece.
“Infelizmente” vira: In + feliz + mente.
Com essa técnica (chamada BPE), o modelo consegue ler e escrever qualquer palavra em qualquer língua, usando apenas um conjunto limitado de peças de Lego.
6. Ensinando com Flashcards (Janela Deslizante)
Como preparamos esses dados para o treino?
Um LLM aprende a prever o futuro olhando para o passado.
Nós pegamos um texto e criamos janelas deslizantes.
Entrada: “O gato” -> Alvo: “subiu”
Entrada: “O gato subiu” -> Alvo: “no”
É assim que criamos milhões de exemplos de treinamento a partir de um único livro.
7. O Pipeline Completo: Da Letra ao Cérebro
Juntando tudo, temos o pipeline de entrada do nosso GPT.
É uma linha de montagem de dados:
Texto Bruto ➡️ Tokenização ➡️ IDs ➡️ Embeddings de Palavra + Embeddings de Posição ➡️ Entrada no Modelo.
🚀 Mão na Massa
Neste capítulo, não ficamos só na teoria. No notebook, nós implementamos:
Um Tokenizador do zero.O algoritmo BPE (sim, escrevemos a lógica de merge de tokens!).
A camada de Embeddings no PyTorch.
Quer ver como transformar Shakespeare em tensores matemáticos?
👇 O código está pronto para rodar:
📓 Notebook no Google Colab:Acessar o notebook
📂 Repositório GitHub:vongrossi/fazendo-um-llm-do-zero
Agora que transformamos texto em números, estamos prontos para a parte mais “humana” da IA. No próximo post: Atenção. 👀







Top comments (0)