No history yet

Архитектура Transformer и Attention

Архитектура Transformer: За пределами основ

Архитектура Transformer, представленная в 2017 году в статье «Attention Is All You Need», стала стандартом для большинства современных моделей обработки естественного языка. В отличие от рекуррентных нейронных сетей (RNN), которые обрабатывают текст последовательно, слово за словом, Transformer обрабатывает все токены одновременно. Это стало возможным благодаря механизму внимания, который позволяет модели взвешивать важность каждого слова в последовательности относительно любого другого.

Фундаментальные принципы Transformer — self-attention, multi-head attention и position-wise feed-forward networks — оказались удивительно универсальными и эффективными в различных областях, закрепив за ним место одного из самых значительных архитектурных новшеств в глубоком обучении.

Давайте погрузимся в ключевые компоненты, которые делают эту архитектуру такой мощной.

Масштабированное скалярное произведение

В основе механизма внимания лежит операция, называемая Scaled Dot-Product Attention. Для каждого токена во входной последовательности мы создаем три вектора: Query (Запрос), Key (Ключ) и Value (Значение). Представьте себе поиск информации в базе данных. Вектор Query — это ваш запрос. Векторы Key всех токенов в последовательности — это своего рода «индексы» или «метки» для поиска. Векторы Value содержат фактическую информацию, связанную с каждым токеном.

Сначала модель вычисляет «оценку совместимости» между вашим запросом (Query) и каждым ключом (Key) в последовательности с помощью скалярного произведения. Чем выше оценка, тем более релевантен данный токен для текущего запроса.

Затем эти оценки масштабируются, проходят через функцию softmax для нормализации и используются как веса для суммирования векторов Value. В результате получается выходной вектор, который представляет собой взвешенную сумму значений, где веса определяют, на какие части входной последовательности следует «обратить внимание».

Attention(Q,K,V)=softmax(QKTdk)VAttention(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V

Многоголовое внимание (Multi-Head Attention)

Одной «головы» внимания часто недостаточно. Модели нужно уметь одновременно фокусироваться на разных аспектах информации. Например, при обработке предложения «Робот взял красный мяч» одна голова внимания может сфокусироваться на связи «взял» -> «мяч» (что было взято), а другая — на связи «красный» -> «мяч» (какой это был мяч).

Механизм решает эту задачу. Вместо одного набора векторов Q, K, V, мы используем несколько. Входные векторы линейно проецируются hh раз с разными, обучаемыми весовыми матрицами. Каждая из этих проекций («голова») выполняет операцию внимания параллельно. Затем их результаты конкатенируются и снова проходят через линейный слой. Это позволяет модели совместно учитывать информацию из разных подпространств представлений в разных позициях.

Lesson image

Позиция имеет значение

Поскольку Transformer обрабатывает все токены параллельно, он по своей природе не имеет информации о порядке слов. Для него предложения «собака укусила человека» и «человека укусила собака» изначально выглядят одинаково. Чтобы решить эту проблему, в модель необходимо добавить информацию о позиции каждого токена.

Изначально для этого использовались синусоидальные и косинусоидальные функции (Positional Encoding). Однако современные модели, такие как Llama и GPT-NeoX, используют более продвинутый метод — (RoPE). Вместо добавления позиционных векторов к эмбеддингам токенов, RoPE вращает векторы Query и Key в зависимости от их абсолютной позиции. Скалярное произведение между двумя повернутыми векторами зависит только от их относительного смещения, что позволяет модели лучше улавливать относительные позиционные зависимости.

Варианты архитектуры

Существует три основных типа архитектур на базе Transformer, каждая из которых оптимизирована для своих задач.

Тип архитектурыПримерыОсновное применениеОсобенности
Encoder-onlyBERT, RoBERTaЗадачи понимания языка (NLU): классификация текста, извлечение именованных сущностей.Двунаправленное внимание. Каждый токен может «видеть» все остальные токены в последовательности.
Decoder-onlyGPT, Llama, PaLMЗадачи генерации языка (NLG): написание текстов, чат-боты.Однонаправленное (каузальное) внимание. Каждый токен может «видеть» только предыдущие токены.
Encoder-DecoderT5, BART, исходный TransformerЗадачи последовательность-в-последовательность: машинный перевод, суммаризация текста.Энкодер обрабатывает входную последовательность, а декодер генерирует выходную, обращая внимание на выход энкодера.

В дополнение к вниманию, каждый блок энкодера и декодера содержит полносвязную нейронную сеть (Feed-Forward Network) и слои нормализации (LayerNorm). LayerNorm играет критическую роль в стабилизации процесса обучения глубоких моделей. Современные архитектуры часто используют более эффективные функции активации, такие как GeLU (Gaussian Error Linear Unit) или SwiGLU, вместо стандартной ReLU.

Оптимизация для генерации

При генерации текста в моделях типа decoder-only (как GPT) на каждом шаге добавляется только один новый токен. Пересчитывать всю матрицу внимания для уже обработанных токенов было бы крайне неэффективно. Здесь на помощь приходит (KV Caching).

Идея заключается в том, чтобы сохранять вычисленные векторы Key и Value для всех предыдущих токенов в кэше. На следующем шаге генерации модели нужно вычислить Q, K, V только для нового токена, а затем использовать сохраненные K и V из кэша для расчета внимания. Это превращает процесс генерации из квадратичного по сложности (O(n2)O(n^2)) в линейный (O(n)O(n)) на каждом шаге, что делает возможной быструю генерацию длинных текстов.

Quiz Questions 1/5

В чем заключается ключевое отличие архитектуры Transformer от рекуррентных нейронных сетей (RNN) в обработке последовательностей?

Quiz Questions 2/5

Какие три вектора создаются для каждого токена в механизме Scaled Dot-Product Attention?

Понимание этих компонентов — от математики внимания до архитектурных различий и оптимизаций — является ключом к пониманию того, как работают и развиваются современные большие языковые модели.