Математика глубокого обучения
Позиционные кодировки
Внимание не знает порядка — и почему синусоиды «относительны» только на бумаге
Почему без них нельзя
Из урока 070: формула внимания не содержит индексов позиций вовсе. Отсюда точное утверждение.
Доказывается в одну строку:
Это не недоработка, а свойство операции, и его нужно чем-то исправлять извне. Требования к исправлению:
| требование | почему |
|---|---|
| различать позиции | иначе порядок не восстановим |
| работать на любой длине | обучались на 2048, работаем на 8192 |
| ограниченность | кодировка не должна перебивать содержание |
| убывание влияния с расстоянием | локальный контекст важнее далёкого |
Синусоидальная кодировка
Исходное решение: вектор той же ширины, что и вход, прибавляемый к эмбеддингу.
с . Частоты образуют геометрическую прогрессию, поэтому длины волн покрывают несколько порядков сразу:
| пара (при ) | длина волны | |
|---|---|---|
Быстрые пары различают соседей, медленные — далёкие области. Это и есть ответ на «различать позиции на любой длине»: пока хотя бы одна пара не сделала полный оборот, позиции ещё различимы.
Половина правды про относительность
Обычно говорят: «синусоиды кодируют относительную позицию, потому что зависит только от ». Первая часть — вывод, вторая — факт, и факт верен:
по теореме сложения косинуса (блок 1, урок 100). Проверено численно при : при смещении произведение равно из позиции и из позиции , расхождение .
А вывод при этом неверен, и вот почему. Внимание считает не , а произведение сумм:
Относительно только последнее слагаемое. Два перекрёстных зависят от абсолютных позиций, и они не малы. Посмотрите на readout «разброс по якорям»: это максимальная разница оценок при одинаковом смещении, взятая по трём разным абсолютным позициям.
смещение j − i оценка
- размах оценок
- 0
- разброс по якорям
- 0.0e+0
- норма q после
- 1
Разброс по якорям равен машинному нулю: схема относительна не приблизительно, а тождественно.
Числа из одного прогона при и трёх якорях , , :
| схема | размах оценок | разброс по якорям | норма |
|---|---|---|---|
| без кодировки | |||
| синусоидальная | |||
| RoPE |
Вторая строка — суть урока. Разброс при размахе означает, что около двух третей изменчивости оценки объясняется абсолютной позицией, а не расстоянием. Синусоидальная кодировка относительна ровно в той мере, в какой перекрёстные слагаемые малы, — а они не малы.
Обучаемые кодировки
Альтернатива из BERT и GPT-2: таблица , обучаемая как обычные параметры. Проще, и на обучающей длине работает не хуже.
Цена ровно одна и она жёсткая: за пределами таблицы значений нет. Не «хуже экстраполирует» — их не существует, потому что позиция 4096 в таблице на 2048 строк не адресуется. Отсюда и вся история с расширением контекста: у синусоид и RoPE значение хотя бы определено при любой позиции, у таблицы — нет.
Что попробовали дальше
| схема | где живёт позиция | экстраполяция |
|---|---|---|
| абсолютная синусоидальная | в эмбеддинге, прибавляется | формально да, фактически плохо |
| обучаемая таблица | в эмбеддинге, прибавляется | невозможна |
| относительная (Shaw, T5) | слагаемое в оценке, зависит от | да |
| ALiBi | линейный штраф в оценке | да, и хорошо |
| RoPE | поворот и | да, и хорошо |
Общая линия видна: позиция переехала из входа в оценку. Как только она влияет прямо на , а не через прибавленный к содержанию вектор, перекрёстные слагаемые исчезают вместе с зависимостью от абсолютной позиции.
ALiBi — самый резкий пример: там вообще нет кодировки, только вычитание из оценки, по своему наклону на каждую голову. Работает, и это хороший аргумент в пользу того, что основное содержание позиционной информации — «насколько далеко», а не «где именно».
RoPE выбирает третий путь: не прибавить и не вычесть, а повернуть. Об этом урок 120.
Источники
- Vaswani и др. — Attention Is All You Need — Синусоидальные кодировки, раздел 3.5
- Shaw и др. — Self-Attention with Relative Position Representations — Первая относительная схема
- Press и др. — Train Short, Test Long (ALiBi) — Линейный штраф по расстоянию вместо кодировки
Проверки
0 из 2Что кодировка кодирует
Отметьте все верные утверждения о позиционных кодировках.
Зависит ли произведение только от смещения
Реализуйте
pe_probe(dimension, base, position, offset). Синусоидальная кодировка:где пробегает от до . Верните
[dot_at_position, dot_at_zero, difference, longest_wavelength]:dot_at_position= ;dot_at_zero= — то же смещение, но от начала;difference— разность первых двух. Если утверждение «произведение зависит только от смещения» верно, здесь обязан быть машинный нуль;longest_wavelength= — длина волны самой медленной пары, то есть расстояние, на котором кодировка ещё различает позиции.
Проверить себя можно так: при произведение обязано равняться , потому что каждая пара даёт .
Загрузка редактора…
Ctrl/⌘ + Enter