- В этом видео мы изучим архитектуру декодера.
Примером
популярной архитектуры только декодера является GPT-2.
Для того чтобы понять, как работают декодеры
мы рекомендуем посмотреть видео о кодерах.
Они чрезвычайно похожи на декодеры.
Декодер можно использовать
большинства тех же задач, что и кодер,
хотя, как правило, с небольшой потерей производительности.
Давайте воспользуемся тем же подходом, который мы использовали
с кодером, чтобы попытаться
понять архитектурные различия
между кодером и декодером.
Мы используем небольшой пример, используя три слова.
Мы пропускаем их через декодер.
Мы получаем числовое представление для каждого слова.
Здесь, например, декодер преобразует три слова.
"Welcome to NYC" в эти три последовательности цифр.
Декодер выдает ровно одну последовательность
чисел на каждое входное слово.
Это числовое представление может также
назвать вектором признаков или тензором признаков.
Давайте погрузимся в это представление.
Оно содержит один вектор
на каждое слово, прошедшее через декодер.
Каждый из этих векторов является числовым представлением
рассматриваемого слова.
Размерность этого вектора определяется
архитектурой модели.
Декодер отличается от кодера главным образом
своим механизмом самовнимания.
Он использует так называемое маскированное самовнимание.
Здесь, например, если мы сосредоточимся на слове "to"
мы увидим, что вектор абсолютно не изменен
словом "NYC".
Это происходит потому, что все слова справа, также известные
как правильный контекст слова, маскируются, а
вместо того чтобы извлекать пользу из всех слов слева и справа.
Таким образом, двунаправленный контекст.
Декодеры имеют доступ только к одному контексту
который может быть левым или правым контекстом.
Механизм маскированного самовнимания отличается
от механизма самовнимания тем,
что использует дополнительную маску, скрывающую контекст
по обе стороны от слова,
при этом на числовое представление слова не влияют
слова в скрытом контексте.
Так когда же следует использовать декодер?
Декодеры, как и кодеры, могут быть использованы как самостоятельные модели
поскольку они генерируют числовое представление.
Они также могут использоваться для решения самого широкого круга задач.
Однако сила декодера заключается в том, что
слово может иметь доступ только к своему левому контексту.
Они по своей природе хороши в генерации текста:
способности генерировать слово
или последовательность слов, учитывая известную последовательность слов.
Это известно как
каузальное языковое моделирование или генерация естественного языка.
Вот пример того, как работает каузальное языковое моделирование.
Мы начинаем с вводного слова, которым является "my",
используем его в качестве входного сигнала для декодера.
Модель выводит вектор чисел
и этот вектор содержит информацию о последовательности,
которая здесь является одним словом.
Мы применяем небольшое преобразование
к этому вектору так, чтобы он отображался
на все слова, известные модели, это отображение
которое, как мы увидим позже, называется "голова языкового моделирования".
Мы определили, что модель считает,
что наиболее вероятное следующее слово это "name".
Затем мы берем это новое слово и добавляем его
к начальной последовательности из "my", и теперь у нас есть "my name".
Именно здесь возникает авторегрессивный аспект.
Авторегрессионные модели
повторно используют свои прошлые выходы в качестве входов на следующих этапах.
И снова мы выполняем точно такую же операцию.
Мы пропускаем эту последовательность через декодер
и извлекаем наиболее вероятное следующее слово.
В данном случае это слово "is", мы повторяем операцию
пока не будем удовлетворены, начиная с одного слова.
Теперь мы сгенерировали полное предложение.
Мы решаем остановиться на этом, но могли бы продолжать еще какое-то время.
GPT-2, например, имеет максимальный размер контекста 1024.
В конечном итоге мы могли бы сгенерировать до 1024 слов,
и декодер все еще будет помнить о
первых словах в этой последовательности.