Проблема: на что смотреть в контексте

Перед тем как разбирать механизм внимания, поймём задачу, которую он решает: токену нужно избирательно «смотреть» на нужные слова контекста.

Внимание (attention) — механизм, позволяющий каждому токену собирать информацию с других токенов контекста, придавая важным больший вес.

Слово оживает только в контексте

Возьмём слово «ключ». В вакууме оно бессмысленно. «Потерял ключ от двери» — это металлический предмет. «Скрипичный ключ» — музыкальный знак. «Ключ к разгадке» — подсказка. Эмбеддинг из таблицы у токена «ключ» один и тот же во всех случаях. Чтобы понять, какой смысл нужен здесь, токену необходимо посмотреть на соседей — «двери», «скрипичный», «разгадке».

Но не на всех соседей одинаково

Ключевая мысль: для понимания «ключ» важны не все слова предложения, а конкретные. В «Я вчера, кажется, потерял ключ от входной двери» решающие слова — «потерял» и «двери», а «вчера» и «кажется» почти не влияют. Значит, модели нужен механизм, который для каждого токена решает, на какие именно другие токены обратить внимание и насколько сильно. Это и есть attention.

Почему это трудная задача

Раньше с этим плохо справлялись. N-граммы видели лишь пару соседних слов. RNN читали текст по порядку и накапливали «состояние», но к концу длинного предложения начало уже размывалось — связать «ключ» в начале с «дверью» в конце было тяжело. Нужен был способ связать любые два токена напрямую, независимо от расстояния между ними.

Примеры дальних связей

ЯвлениеПример
Согласование«Книги, которые я купил вчера, были интересны» — «были» зависит от «книги», а не от «вчера»
Разрешение местоимений«Кот увидел собаку и она убежала» — кто «она»?
Снятие омонимии«лук» — овощ или оружие? Решают соседние слова

Идея внимания в одном предложении

Для каждого токена модель вычисляет веса — насколько он должен «прислушаться» к каждому другому токену, — и собирает из них взвешенную смесь информации. Слова, которые сейчас важны, получают большой вес; остальные — почти нулевой. Так «ключ» вбирает в себя смысл «двери» и становится «ключом-от-двери». Как именно считаются эти веса (через query, key, value) — тема следующих уроков.

Итог

  • Смысл токена зависит от контекста, и понять его в одиночку нельзя.
  • Важны не все слова одинаково — нужен избирательный взгляд.
  • Внимание связывает любые два токена напрямую, независимо от расстояния.
  • Механизм считает веса важности и собирает взвешенную смесь информации с других токенов.
Проверьте себя
1. Какую главную проблему решает механизм внимания?
AУскоряет загрузку модели
BПозволяет токену избирательно собирать смысл с нужных слов контекста
CСжимает словарь токенов
DПереводит текст между языками
2. Почему RNN плохо справлялись с дальними связями?
AОни не использовали электричество
BК концу длинной последовательности информация о начале размывалась
CОни не умели читать текст
DУ них не было параметров
3. Что значит «не на всех соседей одинаково»?
AМодель всегда смотрит только на предыдущее слово
BДля каждого токена важны конкретные слова контекста, и им даётся больший вес
CВсе слова контекста учитываются с равным весом
DКонтекст вообще не используется
Поддержать проект