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