Как устроен механизм внимания в трансформерах и почему он лучше запоминает информацию по сравнению с RNN и CNN
Что проверяют
Понимаете ли вы механику внимания на уровне формулы, а не метафоры «модель фокусируется на важном». Следом почти всегда спрашивают про цену: как растёт сложность с длиной контекста и почему трансформер без позиционного кодирования не отличает порядок слов.
Как отвечать
Начните с формулы scaled dot-product attention: softmax(QKᵀ / √d_k) · V. Каждый токен проецируется в три вектора, дальше идут детали:
- Query: что токен ищет в остальной последовательности;
- Key: по чему этот токен находят другие;
- Value: что токен отдаёт, если на него обратили внимание;
- деление на √d_k: без него скалярные произведения растут с размерностью, softmax насыщается, и градиенты почти пропадают;
- multi-head: несколько голов с разными проекциями ловят разные связи, например синтаксис и кореференцию, затем выходы склеиваются.
Сравнение с RNN стройте на длине пути между токенами. В RNN информация от первого слова к сотому проходит через сто последовательных шагов и размывается, градиент затухает. LSTM и GRU это смягчают, но не убирают. Во внимании любые два токена связаны за одну операцию, путь O(1), а вся последовательность обрабатывается параллельно, отсюда быстрое обучение на GPU.
У CNN рецептивное поле ограничено ядром и растёт только с глубиной: чтобы связать далёкие токены, нужен стек слоёв или дилатация. Внимание смотрит на весь контекст сразу, а веса зависят от содержимого, а не от фиксированного окна.
Цена: память и вычисления растут как O(n²) по длине последовательности. Отсюда FlashAttention, разреженное внимание и скользящее окно, а на инференсе KV-кэш.
Где спотыкаются
Говорят, что трансформер «запоминает» лучше. Памяти у него нет: он видит только то, что влезло в окно контекста, а за его пределами не знает ничего. Точнее сказать, что у него прямой доступ ко всем токенам окна.
Забывают, что внимание само по себе не знает порядка, это операция над множеством. Порядок вносят позиционные кодирования: синусоидальные, обучаемые или RoPE.
Не упоминают маскирование: в декодере causal mask запрещает смотреть на будущие токены, без неё обучение на предсказание следующего слова теряет смысл.