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