DEV Community

Von Grossi
Von Grossi

Posted on • Originally published at Medium

Fazendo um LLM do Zero #03: Atenção é Tudo o que Você Precisa? 🎯👀

Fazendo um LLM do Zero #03: Atenção é Tudo o que Você Precisa? 🎯👀 Você já parou para pensar em como é difícil entender uma frase isolada?

Imagine que eu chego para você e digo:

“Eu estou indo para o banco.”

Você pensaria em dinheiro 💰 ou em um parque 🌳?

Sem o resto da conversa, é impossível saber. A palavra “banco” é ambígua. O que define o significado dela não são as letras B-A-N-C-O, mas sim as palavras que estão ao redor dela.

Se a frase fosse “Sentei no banco da praça”, a palavra “banco” absorve o significado de “praça”.

Se fosse “Saquei dinheiro no banco”, ela absorve o significado de “dinheiro”.

Esse “superpoder” de misturar significados baseados no contexto é algo que nós fazemos naturalmente. Mas, para computadores, isso sempre foi um pesadelo. Até 2017.

Bem-vindo ao nossa 3a jornada, onde vamos desvendar o Self-Attention (Autoatenção), o mecanismo que transformou papagaios digitais em modelos capazes de manter uma conversa coerente.

1. O Problema da Tradução “Robótica”

Antigamente, modelos de linguagem liam texto como um cavalo com antolhos: focados apenas na palavra atual ou na anterior.

O resultado? Traduções literais e frases sem nexo. Veja este exemplo clássico de tradução do Alemão para o Inglês:

Image 13

Contexto importa na tradução

Para traduzir corretamente, a palavra final da frase depende de uma palavra que apareceu lá no começo. Se o modelo não tiver “memória” ou “visão periférica”, ele erra.

2. A Intuição: Todo Mundo Olhando para Todo Mundo

A grande sacada do paper “Attention Is All You Need” foi dizer: e se cada palavra pudesse “olhar” para todas as outras palavras da frase e decidir quais são importantes para ela?

Na frase “O gato que estava no telhado miou”, quando processamos a palavra “miou”, o modelo deve prestar muita atenção em “gato” (quem miou?) e pouca atenção em “telhado” (onde estava).

Image 14

Isso cria uma teia de conexões semânticas. O modelo aprende quem fez o quê, onde e como, apenas ajustando o foco da atenção.

3. O Coquetel de Informações

Matematicamente, o que acontece é que a palavra “banco” deixa de ser um vetor estático. Ela se torna uma mistura ponderada de todas as palavras da frase.

Se a palavra “dinheiro” está na frase, ela “doa” um pouco do seu significado para “banco”.

Image 15

O resultado final (o vetor de contexto) é uma representação muito mais rica. É a diferença entre um dicionário (significado estático) e uma conversa (significado contextual).

4. O Mecanismo: Query, Key e Value (A Busca no Spotify)

Aqui a coisa fica técnica (e genial). Como o modelo decide quanto foco dar para cada palavra?

Ele usa um sistema de busca parecido com o do YouTube ou Spotify.

Join Medium for free to get updates from this writer.

Para cada palavra, criamos três vetores:

1. Query (Q — A Pergunta): O que eu estou procurando?

2. Key (K — A Etiqueta): O que eu tenho a oferecer?

3. Value (V — O Conteúdo): Se você gostar de mim, leve esta informação.

Image 16

A “Atenção” nada mais é do que o casamento (produto escalar) entre a Pergunta (Query) de uma palavra e a Etiqueta (Key) de outra. Se elas combinam, a afinidade é alta, e o modelo absorve muito do Conteúdo (Value).

Mas esses vetores Q, K e V não são fixos! Eles são aprendidos. O modelo possui matrizes de pesos treináveis que ele ajusta durante o treinamento para aprender como prestar atenção melhor.

Image 17

5. Regras do Jogo: Sem Spoilers e Sem Decorar

Para criar um GPT (que gera texto), temos uma regra de ouro: você não pode ler o futuro.

Se o modelo pudesse ver a próxima palavra durante o treino, ele apenas copiaria a resposta em vez de aprender a prever.

Para impedir essa “cola”, aplicamos uma Máscara Causal. Ela zera a atenção para qualquer palavra que venha depois da atual. É como colocar uma cortina no futuro.

Image 18

Além disso, para evitar que o modelo “decore” frases específicas, usamos o Dropout. Desligamos aleatoriamente algumas conexões de atenção durante o treino. Isso força o modelo a ser robusto e aprender caminhos alternativos para entender o contexto.

Image 19

6. Multi-Head Attention: Vários Pontos de Vista

Linguagem é complexa. Uma frase pode ter uma estrutura gramatical difícil E um tom emocional sutil. É difícil focar nas duas coisas ao mesmo tempo.

A solução? Multi-Head Attention (Atenção com Múltiplas Cabeças).

Em vez de fazer esse processo uma vez, fazemos 4, 8 ou 12 vezes em paralelo.

Head 1 (Cabeça 1) foca na gramática (quem é o sujeito?).

Head 2 (Cabeça 2) foca na relação temporal (aconteceu antes ou depois?).

Head 3 (Cabeça 3) foca no vocabulário específico.

Image 20

No final, juntamos tudo e temos uma compreensão super-humana do texto.

7. Onde isso tudo se encaixa?

A Atenção é o coração, mas precisa de um corpo. Ela é o primeiro grande bloco dentro da arquitetura do Transformer que estamos construindo.

Image 21

Depois de entender o contexto com a Atenção, a informação flui para as redes neurais (Feed Forward) que processam esse significado.

🚀 Mão na Massa

A teoria é linda, mas implementar o Self-Attention do zero, multiplicando matrizes na mão, é onde você realmente entende a mágica. E é exatamente isso que fazemos no notebook deste capítulo. Nada de import attention. Nós criamos a classe MultiHeadAttention linha por linha.

Quer ver como transformar essa teoria em código Python puro?

👇 Acesse agora:

📓 Notebook no Google Colab:Rodar no colab

📂 Código no GitHub: Ver repositório:vongrossi/fazendo-um-llm-do-zero

No proximo post, vamos pegar esses blocos de atenção e finalmente construir o corpo do GPT. Prepare-se, porque o monstro vai ganhar vida.

🧟‍♂️🤖

Top comments (0)