Transformer
Энкодер
Входные данные кодируются в векторы эмбеддингов (например, через Word2Vec или обучаемые эмбеддинги). К ним добавляется Positional Encoding — компонент, кодирующий позицию слова в последовательности, так как Transformer сам по себе не имеет информации о порядке.
Single-Head Attention
Используются три обучаемые матрицы:
- Query (Q) — насколько текущее слово связано с другими.
- Key (K) — насколько другие слова связаны с текущим.
- Value (V) — информация о значении слова в контексте.
Вычисление attention:
\[\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V\]
Деление на \(\sqrt{d_k}\) стабилизирует градиенты при большой размерности.
Multi-Head Attention
Вместо одного набора \(Q, K, V\) обучаются несколько — головы. Каждая голова фокусируется на разных аспектах входа. Результаты конкатенируются и проецируются обучаемой матрицей:
\[\text{MultiHead}(Q,K,V) = \text{Concat}(\text{head}_1, \dots, \text{head}_h) W^O\]
Структура одного блока энкодера
- Multi-Head Attention.
- Add & Norm — остаточное соединение и Layer Normalization.
- Feed-Forward Network (FFN) с активацией ReLU.
- Add & Norm.
Декодер
Декодер отличается от энкодера наличием Masked Multi-Head Attention: маскируются будущие позиции, чтобы модель не могла заглядывать вперёд при генерации. Это реализуется через треугольную маску — зануление будущих позиций в матрице внимания.
Далее следует обычный Multi-Head Attention, Add & Norm, FFN, и на выходе — линейный слой с softmax для получения вероятностей слов.
Стратегии генерации текста
| Метод | Идея | Особенности |
|---|---|---|
| Greedy Search | На каждом шаге выбирается наиболее вероятное слово | Быстро, но субоптимально |
| Beam Search | На каждом шаге удерживается \(B\) наиболее вероятных последовательностей | Лучше качество, больше вычислений |
Применимость
Transformer изначально разработан для NLP, но сейчас является универсальной архитектурой: Vision Transformer (ViT) применяет тот же механизм к изображениям, разбивая их на патчи.