Возьмите фразу: «Иван положил телефон на стол, потому что он был разряжен». Чтобы понять её, нужно связать «он» с телефоном, а не со столом и не с Иваном. Человек делает это мгновенно, опираясь на слово «разряжен». Механизм внимания — это способ, которым та же операция выполняется внутри модели.
#Как устроена операция
На каждой позиции модель строит три вектора из текущего представления токена:
- запрос (query) — «что мне сейчас нужно найти»;
- ключ (key) — «чем я могу быть полезен другим»;
- значение (value) — «что я передам тому, кто меня выберет».
Дальше запрос текущей позиции скалярно умножается на ключи всех предыдущих позиций. Получается по числу на каждую пару; эти числа нормируются в веса, дающие в сумме единицу. Итог — взвешенная сумма значений. На нашей фразе позиция слова «он» даёт высокий вес позиции «телефон» и низкий — позиции «стол».
Таких блоков в слое несколько (их называют головами), и каждый учится смотреть на своё: один отслеживает синтаксическую связь, другой — повтор именованной сущности, третий — расстояние. Слоёв тоже десятки, и на каждом операция повторяется поверх уже обогащённых представлений. Общая конструкция описана в справке про трансформер.
#Что из этого следует на практике
Веса внимания дают в сумме единицу — это ключевое ограничение. Внимание распределяется, а не добавляется. Чем больше позиций в контексте, тем на большее число кандидатов делится один и тот же «бюджет» веса, и тем труднее одному конкретному факту в середине текста получить достаточную долю.
Отсюда воспроизводимый эффект: модели заметно лучше извлекают информацию из начала и конца длинного контекста, чем из середины. Начало удерживается позиционными особенностями и системным блоком, конец — свежестью; середина проваливается. Явление разобрано отдельно в тексте про потерю информации в середине контекстного окна.
Практический вывод, который стоит применять сразу: важное кладите в начало и в конец промпта, а не в середину. Инструкция в самом низу запроса, после приложенных документов, работает надёжнее той же инструкции, погребённой между ними.
#Где путают
Заблуждение первое: внимание — это «модель внимательно читает». Метафора обманывает. Это арифметическая операция взвешивания, у неё нет ни усердия, ни выборочности в человеческом смысле. Она не может «перечитать» — каждый проход считает веса заново с нуля.
Заблуждение второе: длинный контекст улучшает извлечение фактов. Наоборот. При прочих равных, чем больше положено в окно, тем ниже шанс, что нужный фрагмент получит заметный вес. Пять точных фрагментов работают лучше пятидесяти приблизительных.
Заблуждение третье: веса внимания показывают, чем модель руководствовалась. Их можно визуализировать, но это не объяснение ответа: значимая часть работы происходит в полносвязных блоках, а вес внимания не равен вкладу в результат.
Заблуждение четвёртое: оптимизации внимания меняют результат. Не меняют по существу: приёмы вроде эффективной работы с памятью при вычислении внимания и сжатия кэша ускоряют вычисление и экономят память, а не переучивают модель. Что при этом реально теряется — в разборе Flash Attention и квантизации KV-кэша.
#Частые вопросы
#Чем self-attention отличается от attention?
Self-attention — случай, когда запросы, ключи и значения берутся из одной и той же последовательности, то есть текст смотрит сам на себя. В языковых моделях-собеседниках используется именно он, причём в причинном варианте: токен видит только предыдущие позиции, но не будущие.
#Почему у моделей стало меньше «голов» для ключей и значений?
Это оптимизация, при которой несколько голов запросов делят один набор ключей и значений. Она резко сокращает объём кэша при почти том же качестве — а объём кэша и есть главный ограничитель длинного контекста; арифметика — в справке про KV-кэш.
#Можно ли заставить модель обратить внимание на конкретный кусок текста?
Прямого рычага нет, но косвенные работают: разместить кусок ближе к концу промпта, выделить его явным заголовком, повторить ключевое требование после текста. Это не гарантия, а сдвиг вероятностей.
#Внимание — причина того, что длинный контекст такой дорогой?
Да, в части обработки промпта: сопоставление каждой позиции с каждой растёт быстрее длины. Скорость самой генерации от этого зависит слабо — там ограничивает пропускная способность памяти.
Остальные термины — в глоссарии терминов ИИ.