22 / 37 · Предобученные языковые модели
Энкодеры, декодеры и модели энкодер–декодер
Три компоновки трансформера различаются маской и наличием второй последовательности, а их цели предобучения различаются соответственно: маскированные токены, следующие токены или испорченные фрагменты. Заметка сравнивает, что даёт каждое семейство, для чего оно хорошо и почему одно из них стало господствовать.
BERT и маскированное языковое моделирование · GPT и авторегрессионное языковое моделирование
На этой странице 10
Две заметки уже обучили один и тот же блок в двух компоновках с двумя целями обучения: двунаправленный энкодер из заметки о BERT — на маскированных токенах, каузальный декодер из заметки о GPT — на следующих токенах. Энкодер–декодер из заметки о переводе обучался на задаче, а не предобучался, но и у него есть своя цель предобучения. Эта заметка ставит три семейства в ряд и делает сравнение, которого не дают одни названия архитектур: цель обучения, что модель вычисляет, в чём она сильна и сколько стоит.
Обозначения. Входные токены ; для энкодеров–декодеров — перевод (выходная последовательность) ; контекстный вектор на позицию; маска self-attention бывает полной (каждая позиция видит каждую) или каузальной (позиция видит ).
Отправная точка: название архитектуры как единственное описание#
«Только энкодер», «только декодер» и «энкодер–декодер» описывают, какие позиции могут смотреть на какие и есть ли вторая последовательность. Это определяет, что модель может вычислить. Что она вычисляет на деле, задаёт цель предобучения, и одно связано с другим: двунаправленный стек не может использовать цель предсказания следующего токена (ответ утекает), а каузальному стеку маскирование ничего не даёт.
Три семейства#
Три семейства как пары «маска + цель обучения»
Только энкодер: полная маска, цель — маскированные токены#
Каждая позиция видит весь вход. Предобучение скрывает 15% токенов и предсказывает их (MLM). Выход — один контекстный вектор на входной токен; механизма, порождающего последовательность новых токенов, нет. Представители: BERT, RoBERTa, DeBERTa и модели эмбеддингов предложений из заметки о семантическом поиске.
Для чего хорош: для всего, что отображает вход в метку, в метку на каждый токен или во фрагмент входа. Классификация, распознавание именованных сущностей, экстрактивные ответы на вопросы, эмбеддинги для поиска. Раздел задач NLP использует энкодер для всего этого, каждый раз с другим небольшим выходным слоем.
Только декодер: каузальная маска, цель — следующий токен#
Позиция видит . Предобучение предсказывает каждый токен по его префиксу. Выход в позиции — распределение следующего токена, поэтому модель порождает, сэмплируя и подавая результат обратно. Представители: серия GPT, Llama, Mistral, Qwen, Gemma.
Для чего хорош: для порождения и, через промптинг, для любой задачи, которую можно записать как «текст на входе — текст на выходе». Представление в позиции однонаправленное, поэтому для чистой задачи понимания модели нужно увидеть весь вход прежде, чем какая-нибудь выходная позиция сможет его подытожить; сводка живёт в последней позиции.
Энкодер–декодер: полная маска на источнике, каузальная на переводе, cross-attention между ними#
Энкодер читает в обе стороны; декодер порождает каузально, смотря на выход энкодера. Цели предобучения — порча фрагментов (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% позиций | всех позициях | выброшенных фрагментах |
| Выход | вектор на каждый входной токен | распределение следующего токена | распределение следующего токена для |
| Представление | двунаправленное | слева направо | двунаправленное |
| Умеет порождать | нет | да | да |
| Примеры | BERT, RoBERTa, DeBERTa | GPT, Llama, Mistral | T5, 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% после дообучения — и готовит методы адаптации следующего раздела.
Литература#
- C. Raffel, N. Shazeer, A. Roberts, K. Lee, S. Narang, M. Matena, Y. Zhou, W. Li, P. J. Liu. Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. JMLR, 21(140), 2020. T5, порча фрагментов и сравнение архитектур в §3.2.
- M. Lewis et al. BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension. ACL, 2020.
- J. Devlin, M.-W. Chang, K. Lee, K. Toutanova. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. NAACL, 2019.
- T. B. Brown et al. Language Models are Few-Shot Learners. NeurIPS, 2020.
- J. Kaplan et al. Scaling Laws for Neural Language Models. arXiv, 2020.
- T. Wang et al. What Language Model Architecture and Pretraining Objective Work Best for Zero-Shot Generalization?. ICML, 2022. Контролируемое сравнение трёх семейств и их целей обучения.