Архитектура трансформера и attention

Кратко разбираем, как устроен трансформер и почему механизм внимания изменил NLP.

Трансформер — архитектура нейросети, в основе которой лежит механизм внимания (attention), позволяющий каждому токену «смотреть» на все остальные.

Идея внимания

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

Это связь с курсом LLM, где attention разбирается подробно. Здесь — короткая интуиция, достаточная для работы с моделями.

Из чего состоит блок трансформера

токены
  |
  v
[ self-attention ]   токены обмениваются информацией
  |
  v
[ feed-forward   ]   каждый токен обрабатывается отдельно
  |
  v
новые представления   (и так N блоков подряд)

Блоки складывают стопкой (например, 12 или 24 раза). С каждым блоком представления становятся «осмысленнее». Поскольку attention видит все токены сразу (а не по очереди, как RNN), трансформеры отлично параллелятся на GPU — это и сделало возможным обучение огромных моделей.

Позиционные эмбеддинги

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

Как работает под капотом

В self-attention каждый токен порождает три вектора: query (что я ищу), key (что я предлагаю) и value (что я несу). Похожесть query одного токена и key другого даёт вес: чем выше, тем сильнее первый токен учитывает value второго. Сумма value с этими весами и есть новое представление. Обычно таких «голов внимания» несколько (multi-head) — каждая улавливает свой тип связей (синтаксис, кореференцию и т.п.).

Частые ошибки

  • Считать, что трансформер «понимает» текст как человек. Это статистическая модель связей между токенами.
  • Забывать про позиционную информацию. Без неё порядок слов теряется.
  • Путать число слоёв и число голов внимания. Это разные гиперпараметры.

Итог

  • Трансформер строится из блоков self-attention и feed-forward.
  • Attention позволяет каждому токену собирать информацию со всех остальных.
  • Позиционные эмбеддинги добавляют информацию о порядке слов.
  • Параллельность attention сделала возможным обучение огромных моделей.
Проверьте себя
1. Что делает механизм внимания (attention)?
AСжимает модель
BПозволяет каждому токену собирать информацию со всех остальных токенов
CПереводит текст
DУдаляет стоп-слова
2. Зачем трансформеру позиционные эмбеддинги?
AДля ускорения GPU
BЧтобы модель различала порядок слов
CДля сжатия словаря
DДля перевода
3. Почему трансформеры хорошо параллелятся на GPU?
AОни меньше по размеру
BAttention обрабатывает все токены сразу, а не по очереди
CОни не используют матрицы
DОни работают только на CPU