
Generalized Language Models: ELMo, GPT и BERT
Что такое обобщённые языковые модели? Разбираем ELMo, GPT и BERT: архитектуры, pre-training, fine-tuning и практическое применение в NLP.
Generalized Language Models: как ELMo, GPT и BERT изменили обработку языка
Представьте, что вы обучили нейросеть читать всю Википедию и миллиарды страниц текста — а потом попросили её за несколько минут «дообучиться» на задаче классификации отзывов. Именно эта идея лежит в основе обобщённых языковых моделей (Generalized Language Models). Она перевернула NLP так же радикально, как ImageNet перевернул компьютерное зрение.
В этой статье разберём, что такое обобщённые языковые модели, как работает парадигма pre-training → fine-tuning, чем отличаются три ключевых архитектуры — ELMo, GPT и BERT — и почему это знание остаётся фундаментальным даже в эпоху GPT-4 и Claude.
Что такое языковая модель и зачем её «обобщать»
Языковые модели существуют с 1980-х годов как инструмент статистического моделирования свойств естественного языка. По набору текстов такая модель вычисляет статистические свойства: частоты слов, вероятности в контексте — и использует их для понимания (NLU), генерации (NLG), рассуждения (NLR) и обработки (NLP).
Традиционные модели были задачно-специфичными: отдельная система для перевода, отдельная — для тональности, ещё одна — для вопросно-ответных систем. Каждую приходилось обучать с нуля на размеченных данных, которых всегда не хватало.
Обобщённая языковая модель — это модель, предобученная на огромном корпусе текстов без разметки, а затем адаптируемая к конкретным задачам с минимальными усилиями.
До появления этой парадигмы требовались большие объёмы размеченных обучающих данных для каждой конкретной задачи, чтобы избежать переобучения. Такие данные сложно и дорого собирать. Кроме того, обученные таким образом модели были задачно-специфичны и лишены обобщаемости.
Парадигма pre-training + fine-tuning предполагает обучение на масштабных неразмеченных данных (самообучение), а затем дообучение на небольших задачно-специфичных наборах, что позволяет адаптироваться к различным downstream-задачам.
Три кита: ELMo, GPT и BERT
В 2018–2019 годах вышли три модели, заложившие основу современного NLP. Каждая решала проблему по-своему.
ELMo — контекстуализированные эмбеддинги
ELMo (Embeddings from Language Model) обучает контекстуализированные представления слов путём предобучения языковой модели без учителя.
ELMo использует двунаправленную языковую модель (biLM), предобученную на большом текстовом корпусе, для изучения как слов (синтаксис и семантика), так и лингвистического контекста (моделирование полисемии). BiLM захватывает контекстно-зависимые аспекты значения слова.
ELMo создаёт контекстуализированные представления на основе 2-слойного двунаправленного LSTM. Это отличает его от статичных эмбеддингов (Word2Vec, GloVe): слово «банк» в контексте «берег реки» и «финансовая организация» получает разные векторы.
Представления ELMo легко добавляются в существующие модели и значительно улучшают результаты в шести сложных задачах NLP, включая ответы на вопросы, текстовую импликацию и анализ тональности.
Стратегия применения: feature-based — эмбеддинги ELMo используются как признаки поверх существующей архитектуры, сама модель не дообучается.
GPT — авторегрессивное предобучение
GPT-2 — крупная языковая модель на основе трансформера с генеративным предобучением на разнообразном корпусе неразмеченных текстов, за которым следует дискриминативное дообучение под каждую конкретную задачу.
GPT применяет контролируемое дообучение и неконтролируемое предобучение для получения общих представлений, которые переносятся с минимальной адаптацией на многие задачи NLP. При этом домен целевого датасета не обязательно должен совпадать с доменом неразмеченных данных.
На первом этапе генеративное предобучение языковой модели поглощает максимально возможный объём свободного текста. Затем на втором этапе модель дообучается на конкретных задачах с небольшим размеченным датасетом.
Стратегия применения: fine-tuning — вся модель дообучается под задачу.
Ограничение GPT: BERT является глубоко двунаправленным, GPT — однонаправленным, а ELMo — поверхностно двунаправленным. GPT читает текст только слева направо, что ограничивает понимание контекста.
BERT — двунаправленный трансформер
В отличие от предшествующих моделей языковых представлений, BERT разработан для предобучения глубоких двунаправленных представлений из неразмеченного текста путём совместного учёта левого и правого контекста во всех слоях.
BERT обучается на двух задачах без учителя: (1) MLM — маскированное языковое моделирование, при котором 15% токенов случайно маскируются и модель предсказывает их; (2) NSP — предсказание следующего предложения, при котором модель определяет, следует ли второе предложение за первым.
При предобучении BERT тренируется на крупномасштабном неразмеченном корпусе (3,3 млрд слов из BooksCorpus и английской Википедии).
В результате предобученную модель BERT можно дообучить, добавив всего один дополнительный выходной слой, для создания моделей уровня SOTA для широкого спектра задач — ответов на вопросы и языкового вывода — без существенных архитектурных изменений под задачу.
BERT получил новые результаты уровня SOTA на 11 задачах NLP, в том числе поднял GLUE score до 80,5, точность на MultiNLI — до 86,7%, F1 на SQuAD v1.1 — до 93,2 и F1 на SQuAD v2.0 — до 83,1.
- ELMo — добавляет контекстуализированные признаки в существующие модели (feature-based)
- GPT — однонаправленное предобучение + fine-tuning всей модели
- BERT — двунаправленное предобучение + fine-tuning с минимальными изменениями архитектуры
Архитектурные различия: взгляд изнутри
graph TD
A[Входной текст] --> B{Тип модели}
B --> C[ELMo\nbiLSTM 2-слойный\nFeature-based]
B --> D[GPT\nTransformer Decoder\nОднонаправленный]
B --> E[BERT\nTransformer Encoder\nДвунаправленный]
C --> F[Эмбеддинги\nдобавляются в модель]
D --> G[Fine-tuning\nвсей модели]
E --> H[Fine-tuning +\nодин выходной слой]
F --> I[Downstream задача]
G --> I
H --> I
Токенизация в BERT
BERT использует три типа эмбеддингов на входе:
Вместо натурально разделённых английских слов используются более мелкие субсловные единицы (WordPiece), что эффективнее работает с редкими или неизвестными словами.
Если вход содержит два предложения, они получают эмбеддинги предложения A и предложения B соответственно и разделяются специальным символом [SEP]; если вход содержит одно предложение, используются только эмбеддинги предложения A.
Позиционные эмбеддинги обучаются, а не задаются жёстко.
Сравнительная таблица архитектур
| Параметр | ELMo | GPT | BERT |
|---|---|---|---|
| Базовая архитектура | biLSTM | Transformer Decoder | Transformer Encoder |
| Направленность | Двунаправленная (поверхностная) | Однонаправленная (→) | Двунаправленная (глубокая) |
| Стратегия применения | Feature-based | Fine-tuning | Feature-based + Fine-tuning |
| Задача предобучения | Предсказание следующего токена | Авторегрессия | MLM + NSP |
| Год выхода | 2018 | 2018 | 2019 |
| Контекст | Полный (через biLM) | Только левый | Полный (совместный) |
Transfer Learning: почему это работает
Исследователи обнаружили, что глубокие сети обучают иерархические представления признаков. Нижние слои обученной сети с обобщёнными признаками можно скопировать и перенести для использования в другой сети с иной задачей. Вскоре стало общепринятой практикой скачивать предобученную сеть и быстро дообучать её под новую задачу или добавлять дополнительные слои — что значительно выгоднее дорогостоящего обучения с нуля.
Для многих исследователей появление глубоких предобученных языковых моделей в 2018 году (ELMo, BERT, ULMFiT, Open-GPT) ознаменовало тот же переход к transfer learning в NLP, который компьютерное зрение пережило ранее.
Процесс fine-tuning BERT выглядит так:
from transformers import BertForSequenceClassification, BertTokenizer
import torch
# Загружаем предобученный BERT
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained(
'bert-base-uncased',
num_labels=2 # бинарная классификация
)
# Токенизируем вход
inputs = tokenizer(
"Этот фильм был невероятным!",
return_tensors='pt',
padding=True,
truncation=True
)
# Forward pass
outputs = model(**inputs)
logits = outputs.logits
print(logits) # предсказание: [негатив, позитив]
В этой схеме два шага: предобучение и дообучение. Модель обучается на неразмеченных данных в процессе предобучения. Перед дообучением модель BERT инициализируется предобученными параметрами, а затем каждый параметр дообучается на размеченных данных из downstream-задач.
Многоязычность и обобщение через языки
Одним из важнейших достижений стало распространение парадигмы на множество языков.
По мере расширения развёртывания LLM возможность работы на нескольких языках и обобщения в кросс-языковых контекстах стала определяющей чертой, отличающей современные LLM от более ранних NLP-моделей. Многоязычные и кросс-языковые возможности обеспечивают инклюзивный доступ, распространение знаний и равноправное применение ИИ в разных языковых сообществах.
Ранние модели — Word2Vec и GloVe — были языково-специфичными и не обладали способностью к многоязычным рассуждениям. Введение многоязычного BERT (mBERT) стало переломным моментом: он позволил одной модели-трансформеру обслуживать более 100 языков без явного обучения с учителем.
От ELMo к современным LLM: эволюция парадигмы
LLM трансформировали обработку естественного языка, достигая результатов уровня SOTA в таких задачах, как машинный перевод, реферирование и ответы на вопросы. Они способны захватывать сложные лингвистические паттерны и предоставлять обобщаемые решения в широком диапазоне приложений. Изначально ориентированные на задачно-специфичные задачи, LLM эволюционировали через всё более сложные архитектуры и методы обучения.
timeline
title Эволюция языковых моделей
2013 : Word2Vec
: Статичные эмбеддинги слов
2014 : GloVe
: Глобальные векторы слов
2018 : ELMo
: Контекстуализированные biLSTM
2018 : GPT
: Авторегрессивный трансформер
2019 : BERT
: Двунаправленный трансформер
2020 : GPT-3
: 175B параметров, few-shot
2022 : ChatGPT
: RLHF, диалоговый интерфейс
2024 : GPT-4o / Claude 3
: Мультимодальность, агенты
Успех BERT привёл к дальнейшим исследованиям предобученных языковых моделей и появлению новых архитектур. Сегодня мы видим GPT-4o, Claude, Gemini — все они стоят на фундаменте, заложенном ELMo, GPT и BERT.
Современная таксономия включает два основных подхода: парадигму замороженных параметров (parameter-frozen) и парадигму дообучения параметров (parameter-tuning) — оба унаследованы от исходной концепции обобщённых языковых моделей.
Заключение
Обобщённые языковые модели — это не просто технический приём, а концептуальный сдвиг в подходе к обработке языка. Вместо десятков узкоспециализированных систем — одна мощная модель, способная адаптироваться к любой задаче.
Ключевые выводы:
- ELMo первым предложил контекстуализированные эмбеддинги через biLSTM — слово получает разное представление в зависимости от контекста.
- GPT показал, что авторегрессивное предобучение на огромных корпусах + fine-tuning бьёт узкоспециализированные модели.
- BERT совершил прорыв благодаря глубокой двунаправленности и маскированному языковому моделированию, установив SOTA на 11 задачах NLP.
- Парадигма pre-training → fine-tuning стала стандартом отрасли и лежит в основе всех современных LLM.
- Понимание этих архитектур критически важно для правильного выбора модели под конкретную задачу и её эффективного дообучения.
Если вы работаете с текстовыми данными — будь то классификация, генерация, поиск или вопросно-ответные системы — знание принципов обобщённых языковых моделей поможет вам делать осознанный выбор инструментов и архитектур, а не просто копировать чужой код.