Что такое attention?
Что проверяют
Понимаете ли вы механизм, а не только название. От ML-инженера ждут, что attention он распишет формулой и объяснит, откуда берётся каждый множитель, потому что на этом стоит вся архитектура трансформера.
Как отвечать
Attention превращает набор векторов во взвешенную сумму, где веса считаются из самих данных. Каждый элемент последовательности проецируется тремя матрицами в запрос, ключ и значение. Схожесть запроса с ключами даёт логиты, softmax по ним даёт веса, взвешенная сумма значений и есть выход.
Attention(Q, K, V) = softmax(Q @ K.T / sqrt(d_k)) @ VДеление на корень из размерности ключа нужно, чтобы скалярные произведения не разъезжались по величине: без него softmax уходит в насыщение и градиент почти обнуляется.
Дальше разведите виды. Self-attention берёт запросы, ключи и значения из одной последовательности, cross-attention берёт запросы из декодера, а ключи и значения из энкодера. Маски бывают двух родов: padding-маска гасит добивку до одной длины, causal-маска запрещает смотреть вперёд при авторегрессионной генерации. Multi-head считает несколько независимых проекций параллельно и конкатенирует результат, чтобы разные головы ловили разные отношения.
Сильный финал: сложность квадратичная по длине последовательности и по времени, и по памяти на матрицу весов. Отсюда FlashAttention, разреженные и линейные схемы, а на инференсе KV-кэш, который не пересчитывает ключи и значения для уже сгенерированных токенов.
Где спотыкаются
Путают, из чего берутся веса, и говорят, что они считаются из значений. Вес это функция запроса и ключа, значения в расчёт весов не входят вовсе и только суммируются с готовыми коэффициентами.
Не могут объяснить нормировку на корень и произносят её как ритуальную строчку из статьи. Если кандидат не связывает её с насыщением softmax, видно, что формулу он запомнил, а не понял.
Забывают про позиционную информацию. Сам по себе attention инвариантен к перестановке входа: порядок слов приносят позиционные кодировки, без них модель видит мешок токенов.