Что показывает вектор внимания в трансформерах
Что проверяют
Понимаете ли вы устройство механизма внимания, а не пересказываете определение. Ключевое: отличаете ли веса внимания, то есть распределение по позициям, от выхода слоя внимания.
Как отвечать
Сначала уточните, о чём речь: о строке матрицы весов после softmax или о векторе, который слой отдаёт дальше. Обе трактовки встречаются, и честное уточнение выглядит сильнее угадывания.
Механика: для каждого токена считаются запрос, ключ и значение как линейные проекции его представления. Веса для позиции получаются как softmax от скалярных произведений её запроса на все ключи, поделённых на корень из размерности ключа. Сумма весов по строке равна единице, это и есть распределение «куда смотрит» токен. Выход слоя для этой позиции это взвешенная сумма значений по этим весам, то есть контекстное представление.
Дальше стоит добавить:
- голов несколько, каждая даёт свою матрицу весов, результаты склеиваются и проходят линейное преобразование;
- в декодере маска запрещает смотреть вперёд, в паддинг тоже, замаскированные позиции получают вес около нуля;
- матрица весов имеет размер «длина на длину», отсюда квадратичный рост памяти и времени по длине контекста.
Где спотыкаются
Называют карту внимания объяснением решения модели. Она показывает, из чего собрана смесь значений на конкретном слое и голове, а не причину ответа: слоёв десятки, между ними остаточные связи и полносвязные блоки, и разные карты могут давать один и тот же выход.
Второе: забывают про деление на корень из размерности. Без него скалярные произведения растут вместе с размерностью, softmax насыщается, градиенты почти зануляются, и обучение стоит на месте.
Третье: путают внимание к себе и перекрёстное. В первом запросы, ключи и значения берутся из одной последовательности, во втором запросы приходят от декодера, а ключи и значения от энкодера. Из этой же путаницы растёт неверный ответ про то, где именно нужна маска.