Объясните attention
Вопрос
Объясните, как работает self-attention, зачем нужны Q, K, V, масштабирование, несколько голов и маски.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Каждый токен проецируется в запрос, ключ и значение
Веса внимания: softmax от QKᵀ / √d_k по ключам; выход это взвешенная сумма V
Масштаб √d_k против насыщения softmax
Multi-head: разные подпространства и типы связей
Маски: причинная в декодере, паддинг; позиционное кодирование, так как attention не видит порядок
Сложность O(n²) и KV-кеш на генерации
Что могут спросить следом
- Почему attention без позиций инвариантен к перестановке?
- Как FlashAttention ускоряет вычисления, не меняя результат?
Разбор
Каждый токен через три обученные матрицы превращается в запрос q (что я ищу), ключ k (что во мне можно найти) и значение v (что я передам). Для токена считаю скалярные произведения его запроса со всеми ключами, делю на √d_k, иначе при большой размерности логиты слишком большие и softmax насыщается, и применяю softmax: получаю веса внимания, сумма 1. Выход токена это взвешенная сумма значений, то есть он собирает информацию от релевантных токенов. Матрично это softmax(QKᵀ/√d_k)V. Голов несколько: каждая со своими проекциями меньшей размерности, разные головы ловят разные связи, затем выходы склеиваются и проецируются. В декодере причинная маска запрещает смотреть в будущее, паддинг маскируется отдельно. Attention не знает порядок, поэтому добавляем позиционное кодирование, сейчас чаще RoPE. Сложность квадратичная по длине, а на генерации ключи и значения прошлых токенов хранятся в KV-кеше.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.