Внимание в LLM · часть 2

Multi-head attention

Одна голова даёт слову одну картину связей. Но слово участвует сразу в нескольких отношениях: «она» отсылает к героине фразы и служит подлежащим; прилагательное связано с существительным, глагол — с объектом. Несколько голов позволяют учитывать эти отношения параллельно.

Одного распределения недостаточно

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

Между тем связей у слова много, и все они нужны сразу. «Она» относится к «кошке» (кореференция) и получает характеристику «голодна» (предикат). Глагол ищет свой объект, прилагательное — существительное, а отдельная голова может следить за соседним токеном слева. Эти отношения можно вычислять параллельно.

Параллельные проекции и объединение

Пусть у слоя h голов. Каждая получает свои проекции WQ(i),WK(i),WV(i), которые отображают токен не во всю размерность d, а в своё подпространство размера dk=d/h. Голова считает то же самое внимание, но в собственном подпространстве признаков:

headi=Attention(XWQ(i),XWK(i),XWV(i))

Меньшая размерность каждой головы сохраняет суммарную стоимость примерно на уровне одной полноразмерной головы.

Каждая голова возвращает вектор длины dk. Эти векторы объединяются в полный вектор длины d, который проходит через обучаемую матрицу WO. Она сводит результаты голов в новое представление:

H=Concat(head1,,headh)
MultiHead(X)=HWO

Три взгляда на одну фразу

Та же фраза, но теперь три головы, каждая смотрит в своё подпространство признаков — условно «кто», «что делает» и «связки». Выберите слово и сравните три распределения: каждая голова замечает в его окружении что-то своё.

Для запроса «она» найдите токен с наибольшим весом у каждой головы. Затем выберите «лакает», сохранив делитель оценок. Какие различия связаны со сменой запроса, а какие — с разными преобразованиями голов?

Несколько независимых взглядов

h = 3
Токен запроса
Резкость распределений
1,0
Распределения 3 голов для токена она
ктосущности и кореференция
кошка46%
лакает2%
молоко1%
потому1%
что1%
она32%
голодна16%
что делаетдействие и объект
кошка14%
лакает18%
молоко14%
потому13%
что13%
она14%
голодна14%
связкислужебные отношения
кошка10%
лакает10%
молоко10%
потому23%
что22%
она12%
голодна11%
Выход для «она»кто: кошка ⊕ что делает: лакает ⊕ связки: потому
Разные головы читают один контекст по-разномуГоловы используют разные преобразования одних и тех же токенов. В этом учебном примере их роли заданы вручную; это не обязательное распределение ролей в обученной модели.

Посмотрите на «она». Голова «кто» связывает местоимение с «кошкой», голова «что делает» выделяет «лакает», а голова «связки» — «потому». Эти три взгляда соединяются и проходят через WO, образуя обновлённое представление слова. Одной голове пришлось бы укладывать все связи в одно распределение внимания.

Обратите внимание и на «пустые» строки. Если слово не представлено в подпространстве головы, веса распределяются равномерно: ни одна позиция не получает предпочтения. Так специализация позволяет не выделять связь там, где она несущественна.