Desvendando os Transformers

Uma Jornada Visual pela Atenção e o Futuro da Modelagem de Linguagem

O Ponto de Partida: Superando Limitações

Modelos de linguagem tradicionais, como Cadeias de Markov e N-grams, revolucionaram o Processamento de Linguagem Natural (PLN) ao capturar dependências locais entre palavras. No entanto, sua "visão" é limitada pela Propriedade de Markov, que estabelece que o futuro depende apenas do presente, dificultando a compreensão de contextos distantes em textos longos. É como ter uma luneta que só enxerga o que está imediatamente à frente.

Este infográfico explora a evolução conceitual e matemática que levou à arquitetura Transformer, com foco no revolucionário mecanismo de **atenção**. Nossa jornada seguirá os seguintes "portos":

1. Limitações dos N-grams
2. Agregação de Pares
3. Mascaramento e Foco
4. Atenção Matricial (Q,K,V)
5. Rede Feed-Forward
6. O Impacto Transformer

A chave para entender os Transformers é a ideia de que cada palavra pode prestar atenção a qualquer outra palavra na sequência, independentemente da distância. Esta é a bússola da nossa exploração.

Desafio 1: A Miopia dos N-grams

Modelos N-gram consideram as $N-1$ palavras anteriores para prever a próxima: $P(w_t | w_{t-N+1}, ..., w_{t-1})$. Tentar capturar contextos longos aumentando $N$ esbarra em dois grandes obstáculos:

A Maldição da Dimensionalidade

Com um vocabulário $(|V|)$ de, digamos, 50.000 palavras:

  • Bigramas $(N=2)$: $50.000^2 = 2.5 \times 10^9$ combinações
  • Trigramas $(N=3)$: $50.000^3 = 1.25 \times 10^{14}$ combinações
  • Tetragramas $(N=4)$: $50.000^4 = 6.25 \times 10^{18}$ combinações

O número de possíveis N-grams cresce exponencialmente, tornando o espaço vasto e difícil de cobrir com dados.

Esparsidade de Dados e a Lei de Zipf

A Lei de Zipf afirma que poucas palavras são muito frequentes, enquanto a maioria é rara.

Representação conceitual da Lei de Zipf.

Isso significa que N-grams longos $(N \ge 4)$ raramente ou nunca aparecem em corpora de treinamento, mesmo os massivos. As estimativas de probabilidade se tornam zero ou muito baixas, exigindo técnicas de suavização complexas.

Tentativa de Solução: Agregação de Características de Pares

Para superar a visão local, uma ideia é considerar a influência de todos os pares de palavras $(w_i, w_t)$, onde $w_i$ é qualquer palavra anterior a $w_t$. Cada par $(w_i, w_t)$ "vota" em qual palavra $w_k$ deveria ser a próxima $(w_{t+1})$.

Considere as frases (peso 0.5 cada):

Para prever a palavra após "executado" em $D_1$: "...programa ... ele foi executado, ???":

Votos Hipotéticos para $w_{t+1}$ após `(wi, executado)` em $D_1$

Par $(w_i, \text{executado})$ (Característica) Voto para "por" Voto para "favor" Outros...
`(programa, executado)` 1.0 (Alta Confiança) 0.0 ...
`(foi, executado)` 0.8 (Plausível) 0.1 ...
`(o, executado)` 0.3 (Menos Informativo) 0.2 ...

O voto é calculado pela frequência relativa: $\text{Voto}(w_k | w_i, w_t) = \frac{C(w_i, w_t, w_k)}{\sum_{w'} C(w_i, w_t, w')}$. A predição final é a soma dos votos de todos os pares $(w_i, w_t)$ ativos na sequência.

Limitações desta Abordagem:

Aprimoramento: Mascaramento e Atenção Seletiva

Para combater a diluição do sinal, introduzimos uma **máscara**: um conjunto de pesos que destaca características (palavras anteriores) relevantes e atenua as irrelevantes.

Ao prever após `executado` na frase sobre `programa`, uma máscara ideal daria peso 1 para `programa` e `foi`, e 0 para outras menos distintivas.

Votos Originais (Exemplo Simplificado)

V(prog,exec)
V(foi,exec)
V(o,exec)
× (Hadamard)

Máscara

1
1
0
=

Votos Mascarados

V(prog,exec)
V(foi,exec)
0

A máscara é aplicada usando o Produto de Hadamard (multiplicação elemento a elemento). Isso foca a predição nas informações que realmente importam, levando ao conceito de **ATENÇÃO**.

O desafio: como essa máscara pode ser aprendida dinamicamente pelo modelo?

O Coração do Transformer: Atenção Matricial

A atenção nos Transformers é implementada eficientemente via operações matriciais. Cada palavra na sequência de entrada (representada por seu embedding $\mathbf{x}_i$) é transformada em três vetores:

Esses vetores são obtidos por transformações lineares aprendíveis: $\mathbf{Q = XW^Q}$, $\mathbf{K = XW^K}$, $\mathbf{V = XW^V}$.

Fluxo do Scaled Dot-Product Attention

1. Calcular Scores de Similaridade:

$\text{Scores}_{\text{raw}} = \mathbf{Q} \cdot \mathbf{K}^T$

(Mede o quão bem cada Query "combina" com cada Key)

⬇️

2. Escalonar Scores:

$\text{Scores} = \frac{\text{Scores}_{\text{raw}}}{\sqrt{d_k}}$

($d_k$ é a dimensão dos vetores Key/Query. Estabiliza gradientes.)

⬇️

3. Normalizar com Softmax (Obter Pesos de Atenção $\mathbf{A}$):

$\mathbf{A} = \text{softmax}(\text{Scores})$

(Converte scores em probabilidades que somam 1 por linha. Indica quanta atenção dar a cada palavra.)

⬇️

4. Calcular Vetor de Contexto Ponderado:

$\text{Output (Contexto)} = \mathbf{A} \cdot \mathbf{V}$

(Soma ponderada dos vetores Value, usando os pesos de atenção.)

Fórmula Completa: $\text{Attention}(Q, K, V) = \text{softmax}\left( \frac{QK^T}{\sqrt{d_k}} \right) V$

Este mecanismo permite que cada palavra "olhe" para todas as outras palavras na sequência (incluindo ela mesma - auto-atenção) e determine dinamicamente quais são mais relevantes, ponderando suas contribuições. As matrizes $\mathbf{W}^Q, \mathbf{W}^K, \mathbf{W}^V$ são aprendidas durante o treinamento.

Exemplo Numérico Simplificado (Ilustrativo):

Se $\mathbf{X}$ (embeddings, 3 palavras x 4 dims), $\mathbf{W}^Q, \mathbf{W}^K, \mathbf{W}^V$ (4 dims x 3 dims_k):

$\mathbf{X} \rightarrow \mathbf{Q}, \mathbf{K}, \mathbf{V}$

x11
x12
x13
x14
x21
x22
x23
x24
x31
x32
x33
x34

Aplicando $\mathbf{W}^Q, \mathbf{W}^K, \mathbf{W}^V$

$\mathbf{Q, K, V}$ (3 palavras x 3 dims_k)

q11
q12
q13
q21
q22
q23
q31
q32
q33

(Similar para K e V)

$\mathbf{A} = \text{softmax}(\frac{\mathbf{QK}^T}{\sqrt{d_k}})$ (3x3)

α11
α12
α13
α21
α22
α23
α31
α32
α33

Pesos de atenção

Saída Final: $\text{Output} = \mathbf{A} \mathbf{V}$ (3 palavras x 3 dims_k)

o11
o12
o13
o21
o22
o23
o31
o32
o33

Representações contextualizadas

Etapa Final do Bloco: Rede Feed-Forward (FFN)

Após o mecanismo de atenção calcular o vetor de contexto $\mathbf{C}_t$ para cada palavra (agora enriquecido com informações relevantes de toda a sequência), este vetor é processado por uma Rede Neural Feed-Forward (FFN). Essa FFN é aplicada independentemente a cada posição $t$.

Tipicamente: $\text{FFN}(\mathbf{C}_t) = \text{max}(0, \mathbf{C}_t \mathbf{W}_1 + \mathbf{b}_1) \mathbf{W}_2 + \mathbf{b}_2$
$\mathbf{C}_t$ (Contexto da Atenção)
⬇️
Linear 1 ($ \times \mathbf{W}_1 + \mathbf{b}_1 $) Expande Dimensão
⬇️
ReLU / GeLU (Não-linearidade)
⬇️
Linear 2 ($ \times \mathbf{W}_2 + \mathbf{b}_2 $) Projeta de Volta
⬇️
Saída do Bloco Transformer

A FFN adiciona capacidade de modelagem não-linear, permitindo que o Transformer aprenda transformações mais complexas sobre as representações contextualizadas fornecidas pela atenção. Os pesos $\mathbf{W}_1, \mathbf{b}_1, \mathbf{W}_2, \mathbf{b}_2$ são aprendidos.

O Impacto dos Transformers e Próximos Horizontes

Passamos das limitações dos N-grams, exploramos a agregação de pares, o mascaramento, e chegamos ao coração dos Transformers: o mecanismo de auto-atenção (Scaled Dot-Product Attention) seguido pela Rede Feed-Forward. Essa arquitetura, proposta em "Attention is All You Need", abandonou a recorrência em favor da atenção paralelizável, permitindo treinar modelos muito maiores e mais capazes, como BERT e GPT, que definem o estado-da-arte em PLN.

O Que Vem a Seguir no Universo Transformer?

A compreensão desses conceitos fundamentais é o mapa para navegar nas inovações contínuas em Inteligência Artificial e Processamento de Linguagem Natural.