Содержание курса 22 / 37

22 / 37 · Предобученные языковые модели

Энкодеры, декодеры и модели энкодер–декодер

Три компоновки трансформера различаются маской и наличием второй последовательности, а их цели предобучения различаются соответственно: маскированные токены, следующие токены или испорченные фрагменты. Заметка сравнивает, что даёт каждое семейство, для чего оно хорошо и почему одно из них стало господствовать.

На этой странице 10

Две заметки уже обучили один и тот же блок в двух компоновках с двумя целями обучения: двунаправленный энкодер из заметки о BERT — на маскированных токенах, каузальный декодер из заметки о GPT — на следующих токенах. Энкодер–декодер из заметки о переводе обучался на задаче, а не предобучался, но и у него есть своя цель предобучения. Эта заметка ставит три семейства в ряд и делает сравнение, которого не дают одни названия архитектур: цель обучения, что модель вычисляет, в чём она сильна и сколько стоит.

Обозначения. Входные токены xx; для энкодеров–декодеров — перевод (выходная последовательность) yy; контекстный вектор hth_t на позицию; маска self-attention бывает полной (каждая позиция видит каждую) или каузальной (позиция tt видит ≤t\le t).

Отправная точка: название архитектуры как единственное описание#

«Только энкодер», «только декодер» и «энкодер–декодер» описывают, какие позиции могут смотреть на какие и есть ли вторая последовательность. Это определяет, что модель может вычислить. Что она вычисляет на деле, задаёт цель предобучения, и одно связано с другим: двунаправленный стек не может использовать цель предсказания следующего токена (ответ утекает), а каузальному стеку маскирование ничего не даёт.

Три семейства#

Рисунок

Три семейства как пары «маска + цель обучения»

Маски внимания и цели обучения трёх семействТри матрицы маски. Только энкодер: все клетки 5 на 5 открыты; цель — восстановить cat в «the [MASK] sat on the». Только декодер: открыта нижняя треугольная часть; вход «the cat sat on», цель «cat sat on the». Энкодер–декодер: 6 на 6, источник видит только источник, перевод видит весь источник через cross-attention и свои прошлые позиции; вход «the ⟨X⟩ on the mat», цель «⟨X⟩ cat sat».только энкодерполная маскаMLMвход:the [MASK] sat on theцель:catтолько декодеркаузальная маскаследующий токенвход:the cat sat onцель:cat sat on theэнкодер–декодеристочник 3 + перевод 3порча фрагментоввход:the ⟨X⟩ on the matцель:⟨X⟩ cat satself-attentioncross-attentionзакрыто маскойстроки — запросы, столбцы — ключиМаски внимания и цели обучения трёх семействТри матрицы маски. Только энкодер: все клетки 5 на 5 открыты; цель — восстановить cat в «the [MASK] sat on the». Только декодер: открыта нижняя треугольная часть; вход «the cat sat on», цель «cat sat on the». Энкодер–декодер: 6 на 6, источник видит только источник, перевод видит весь источник через cross-attention и свои прошлые позиции; вход «the ⟨X⟩ on the mat», цель «⟨X⟩ cat sat».только энкодерполная маскаMLMвход:the [MASK] sat on theцель:catтолько декодеркаузальная маскаследующий токенвход:the cat sat onцель:cat sat on theэнкодер–декодеристочник 3 + перевод 3порча фрагментоввход:the ⟨X⟩ on the matцель:⟨X⟩ cat satself-attentioncross-attentionзакрыто маской
Матрицы показывают, какие позиции (столбцы) может видеть каждая позиция (строка). Энкодер видит всё в обе стороны и предобучается восстанавливать скрытые токены. Декодер видит только себя и прошлое и предобучается предсказывать следующий токен в каждой позиции: целью служит тот же текст, сдвинутый на один. Энкодер–декодер читает источник полной маской, пишет перевод каузальной маской и смотрит из перевода на весь источник через cross-attention (зелёный блок); T5 предобучается восстанавливать фрагменты, заменённые сторожевыми токенами ⟨X⟩. Маска определяет, какой контекст доступен, цель обучения — чему модель учится по нему.

Только энкодер: полная маска, цель — маскированные токены#

Каждая позиция видит весь вход. Предобучение скрывает 15% токенов и предсказывает их (MLM). Выход — один контекстный вектор на входной токен; механизма, порождающего последовательность новых токенов, нет. Представители: BERT, RoBERTa, DeBERTa и модели эмбеддингов предложений из заметки о семантическом поиске.

Для чего хорош: для всего, что отображает вход в метку, в метку на каждый токен или во фрагмент входа. Классификация, распознавание именованных сущностей, экстрактивные ответы на вопросы, эмбеддинги для поиска. Раздел задач NLP использует энкодер для всего этого, каждый раз с другим небольшим выходным слоем.

Только декодер: каузальная маска, цель — следующий токен#

Позиция tt видит ≤t\le t. Предобучение предсказывает каждый токен по его префиксу. Выход в позиции tt — распределение следующего токена, поэтому модель порождает, сэмплируя и подавая результат обратно. Представители: серия GPT, Llama, Mistral, Qwen, Gemma.

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

Энкодер–декодер: полная маска на источнике, каузальная на переводе, cross-attention между ними#

Энкодер читает xx в обе стороны; декодер порождает yy каузально, смотря на выход энкодера. Цели предобучения — порча фрагментов (span corruption; T5, Raffel et al., 2020): выбросить из входа случайные фрагменты, заменить каждый сторожевым токеном (sentinel) и обучить декодер выдавать выброшенные фрагменты по порядку; или шумоподавление (denoising; BART, Lewis et al., 2020): испортить вход маскированием, удалением, перестановкой и вставкой и восстановить оригинал. Обе цели — «восстановить испорченное»: энкодер работает с испорченным текстом, декодер — с починкой.

Для чего хорош: для задач с отдельным входом и порождаемым выходом. Перевод, суммаризация, порождение вопросов. Заметка о суммаризации дообучает модель T5; T5 оформляет каждую задачу, включая классификацию, как «текст в текст» (summarize: …, translate English to German: …).

Только энкодерТолько декодерЭнкодер–декодер
Маска self-attentionполнаякаузальнаяполная (источник) + каузальная (перевод)
Вторая последовательностьнетнет (промпт — часть одной последовательности)да, через cross-attention
Цель предобучениямаскированные токеныследующий токениспорченные фрагменты / шумоподавление
Обучается на15% позицийвсех позицияхвыброшенных фрагментах
Выходвектор на каждый входной токенраспределение следующего токенараспределение следующего токена для yy
Представление xxдвунаправленноеслева направодвунаправленное
Умеет порождатьнетдада
ПримерыBERT, RoBERTa, DeBERTaGPT, Llama, MistralT5, BART, mT5

Чему учат разные цели обучения#

MLM даёт самое богатое представление каждого токена, потому что каждое предсказание использует обе стороны, и самое бедное порождение, потому что последовательности модель не выдаёт никогда. За один проход она обучается на меньшинстве позиций.

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

Порча фрагментов лежит между ними: энкодер учит двунаправленные представления, декодер учится порождать, а механизм сторожевых токенов учит декодер выдавать короткие прицельные выходы, а не целые документы. Цена — два стека и cross-attention.

Выход энкодера — представление входа; выход декодера — представление того, что будет дальше. Это практическое правило выбора: когда интересующая величина — свойство входа (его класс, его сущности, его сходство с другим текстом), правильные признаки — векторы энкодера, и они дешевле, потому что один прямой проход даёт их все без цикла декодирования. Когда интересующая величина — новый текст, нужен декодер.

Почему стали господствовать модели из одного декодера#

Три причины, все эмпирические.

Масштабирование. Предсказание следующего токена использует каждый токен каждого документа как обучающий сигнал и не нуждается в механике маскирования или фрагментов; оно масштабировалось до триллионов токенов с наименьшими инженерными усилиями, и законы масштабирования измерялись именно на нём (Kaplan et al., 2020).

Унификация. Достаточно большой декодер решает классификацию, извлечение и перевод промптингом, без нового выходного слоя. Одна модель заменяет целый зоопарк дообученных энкодеров ценой вычислений при инференсе: декодеру нужно порождать метку токен за токеном там, где энкодер считывал её с линейного слоя.

Обучение в контексте (in-context learning). Получив несколько примеров в промпте, большой декодер выполняет задачу без обновления параметров (Brown et al., 2020); у энкодеров сравнимого механизма нет, потому что у них нет выходной последовательности, куда можно поместить ответ.

Чего это господство не означает: энкодеры не устарели. Для фиксированной задачи с метками и бюджетом на задержку распространённое практическое правило таково: дообученный энкодер на 110 млн параметров часто не уступает в точности декодеру с промптом, намного дешевле в работе (один прямой проход, никаких порождаемых токенов) и проще в оценке. Это опыт, а не измерение этого курса: заметка о переносе обучения сравнивает на AG News дообученный BERT с BERT, которому задают промпт через его собственный выходной слой MLM, а не с декодером с промптом, и ни задержка, ни соотношение стоимости не измерялись. Чтобы назвать соотношение стоимости числом, нужны одна и та же задача, оборудование и целевое качество для обеих моделей. Каждая поисковая система в разделе о системах на LLM работает на энкодерах.

Как выбирать на практике#

НужноВыбратьПочему
Присвоить метку входу или каждому его токену, когда есть размеченные данныеЭнкодер, дообученныйЛучшая точность на параметр; один проход; без декодирования
Получить эмбеддинги текстов для поиска или сходстваЭнкодер (вариант для эмбеддингов предложений)Двунаправленные векторы, обученные для косинусного сравнения
Порождать свободный текст, вести диалог, следовать инструкциямОбычно декодерПривычный выбор для открытого продолжения текста и диалога; энкодер–декодеры, обученные на инструкциях, тоже принимают промпт и порождают ответ
Преобразовать вход в выход (перевести, суммаризировать) при наличии обучающих парЭнкодер–декодер или декодерЭнкодер–декодер — классический выбор; большие декодеры догоняют его промптингом
Решать много задач без метокДекодер, обученный на инструкцияхПромптинг и обучение в контексте

Решение связано с режимом обучения из следующего раздела: дообучение благоприятствует небольшим энкодерам, параметрически эффективное дообучение и промптинг — большим декодерам.

Ограничения#

  • Таблица — про предобученные контрольные точки, а не про возможности. Любую компоновку можно обучать с любой целью, которая не даёт утечки; декодер можно дообучить выдавать эмбеддинги, а энкодеры — собрать в порождающую модель.
  • «Двунаправленность» не бесплатна. Энкодер должен заново кодировать вход, когда тот меняется; декодер с KV-кэшем просто дописывает.
  • Сравнение эмпирическое и меняется. Какое семейство выигрывает на задаче, зависит от размера модели, данных и года; остаются структурные факты: что разрешает каждая маска и чему учит каждая цель.

Что нужно запомнить#

  • Энкодер: полная маска, MLM, вектор на токен, порождения нет. Декодер: каузальная маска, следующий токен, порождает. Энкодер–декодер: оба, соединённые cross-attention, обучается порчей фрагментов или шумоподавлением.
  • Энкодер представляет вход; декодер представляет то, что будет дальше. Выбирать по тому, является ли ответ свойством входа или новым текстом.
  • Декодеры господствуют, потому что предсказание следующего токена масштабируется проще всего, одна модель промптингом обслуживает много задач, а обучению в контексте нужна выходная последовательность.
  • Энкодеры остаются эффективным выбором для классификации с метками, разметки, извлечения и эмбеддингов для поиска.

Ноутбук#

Отдельного ноутбука для этого сравнения нет; три семейства появляются в ноутбуках своих заметок. Архитектуры рядом: week06_BERT.ipynb, ячейка 9 (энкодер), week08_modern_LLM.ipynb, ячейка 18 (декодер), и ноутбук о суммаризации (part 2 ноутбука задач), ячейки 41–52 (T5 с префиксом задачи summarize: и AutoModelForSeq2SeqLM). Номера ячеек считают все ячейки, включая текстовые, начиная с 1. Приведённые числа взяты из прогона, сохранённого в курсе; у ячеек, изменённых с тех пор под текущие версии библиотек, сохранённого выхода нет.

Дальше#

Предобученная модель любого семейства — отправная точка, и вопрос в том, как использовать её для задачи: читать её векторы как признаки, промптить без обучения или обучать дальше. Следующая заметка измеряет все три пути на одной и той же задаче AG News с одним и тем же энкодером — от 61% в zero-shot до 95% после дообучения — и готовит методы адаптации следующего раздела.

Литература#