Carregando
0xE0Lição 15 de 18

Adicione contexto: de vetores de palavras a Transformers

Veja por que um vetor por palavra não é suficiente e como os Transformers constroem representações sensíveis ao contexto.

20 min Questionário com 6 perguntas 1 exercício de código
Ao final desta lição, você saberá
  • Explique por que um único vetor fixo por palavra é insuficiente
  • Descreva o que uma camada Transformer e autoatenção acrescentam
  • Explique como um modelo de linguagem gera texto, um token por vez

Um modelo no estilo word2vec fornece ao banco um vetor. Mas “sentamos na margem do rio” e “depositei dinheiro no banco” têm significados muito diferentes. Um vetor fixo (estático) deve fazer a média deles. Os modelos modernos produzem embeddings contextuais: o vetor para banco muda dependendo das palavras ao seu redor.

Experimente

Até 15 XP

Qual banco?

Leia cada frase e decida qual significado de banco ela usa. Pergunte a si mesmo quais outras palavras revelaram isso - essas são exatamente as palavras às quais um modelo contextual presta atenção.

0 de 4 classificadosPontuação 0/0
  • “Fizemos um piquenique na margem do rio.”

  • “O banco aprovou seu empréstimo.”

  • “Peixes reunidos perto da margem lamacenta.”

  • “Ele abriu uma conta no banco do centro.”

O Transformer em uma imagem

O Transformer (Vaswani et al., 2017) é a arquitetura por trás dos modelos de linguagem atuais. Muito aproximadamente:

  1. Cada token se torna uma embedding, mais informações posicionais (a atenção por si só não conhece a ordem das palavras).
  2. Uma pilha de camadas executa a autoatenção (cada token coleta informações dos outros) e uma pequena rede de feed-forward.
  3. Depois de muitas camadas, o vetor de cada token reflete todo o seu contexto.

Um modelo de linguagem estilo decodificador usa os vetores finais para prever o próximo token, anexa-o e repete - o mesmo jogo de palavras seguintes do modelo bigrama, mas com um contexto de milhares de tokens e representações aprendidas em vez de contagens.

cosine.py
1import math
2a = [1, 0]
3b = [0.8, 0.6]
4dot = sum(x * y for x, y in zip(a, b))
5cosine = dot / (math.sqrt(sum(x * x for x in a)) * math.sqrt(sum(y * y for y in b)))
6print(round(cosine, 2))
Saída
0.8

Principais conclusões

  • Vetores estáticos dão um significado a uma palavra; embeddings contextuais mudam com as palavras ao redor.

  • Os transformadores empilham camadas de autoatenção, além de informações posicionais para ordem das palavras.

  • Os modelos de linguagem são gerados prevendo repetidamente o próximo token - fluente, mas não garantido como verdadeiro.

Quiz da aula

6 perguntas · aprovação com 5 acertos · até 50 XP

Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.

Pratique: aplique NLP com Python

Experimente cada ideia de processamento de texto em Python, execute com entradas de exemplo e use os resultados para ver onde o método funciona ou falha.

Exercício 1

Compare dois vetores

+25 XP

Leia dois vetores diferentes de zero, separados por espaço, de comprimento igual, em linhas separadas. Calcule a similaridade do cosseno e imprima-a com duas casas decimais.

  • Vetores perpendiculares
  • Vetores semelhantes
main.py
Carregando editor…

O Python é executado em um ambiente isolado no navegador, com limite de 60 segundos. O runtime é carregado pelo CDN do Pyodide; seu código permanece neste navegador.

Dúvidas sobre esta lição

Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.

Carregando publicações…