Что такое masked language modeling?
Masked Language Modeling (MLM) — это метод обучения языковых моделей, при котором часть токенов во входной последовательности заменяется специальным маскирующим токеном (чаще всего [MASK]), и задача модели — предсказать исходные токены по контексту. Данный подход используется, в частности, в модели BERT и других двунаправленных трансформерах.
Основная идея
MLM позволяет обучить модель захватывать двунаправленный контекст, в отличие от автопредиктивных моделей (таких как GPT), которые видят только предшествующий текст (левый контекст).
Пример:
Вход: "Моя [MASK] любит гулять по парку."
Цель: "[MASK]" → "собака"
Модель должна, опираясь на слова "Моя", "любит", "гулять", "по", "парку", предсказать, что маской скрыто слово "собака".
Как работает MLM
1. Маскирование токенов
Во время обучения:
-
Случайные 15% токенов из входа выбираются для предсказания.
-
Из них:
-
80% заменяются на [MASK]
-
10% заменяются на случайный токен из словаря
-
10% остаются без изменения
-
Этот подход улучшает обобщающую способность модели, не давая ей «подсматривать» конкретную позицию и фиксироваться только на [MASK].
2. Формирование эмбеддингов
Маскированная последовательность подаётся в трансформер:
-
[CLS] Моя [MASK] любит гулять по парку [SEP]
-
На выходе для каждого токена создается вектор признаков (embedding)
3. Проекция на словарь
Выходные эмбеддинги токенов, соответствующих маскам, подаются на линейный слой + softmax:
- Предсказывается вероятность для каждого слова из словаря.
4. Функция потерь (Loss Function)
Используется кросс-энтропия между предсказанным распределением и правильным словом:
LMLM=−∑i∈MlogP(wi∣контекст)\\mathcal{L}\_{MLM} = - \\sum_{i \\in M} \\log P(w_i \\mid \\text{контекст})
где MM — позиции маскированных токенов, wiw_i — правильные токены.
Пример на практике
from transformers import BertTokenizer, BertForMaskedLM
import torch
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
model = BertForMaskedLM.from_pretrained("bert-base-uncased")
text = "The cat sat on the \[MASK\]."
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
outputs = model(\*\*inputs)
predictions = outputs.logits
masked_index = (inputs.input_ids == tokenizer.mask_token_id)\[0\].nonzero(as_tuple=True)\[0\]
predicted_token_id = predictions\[0, masked_index\].argmax(dim=-1)
print(tokenizer.decode(predicted_token_id))
Это вернёт, например, mat, sofa, floor — в зависимости от вероятностей и контекста.
Преимущества MLM
-
Бидирекциональность: каждый токен может учитывать как левый, так и правый контекст.
-
Подходит для feature extraction: BERT и его потомки (RoBERTa, DistilBERT и др.) показывают отличные результаты в задачах классификации, NER, QA.
-
Контекстная гибкость: модель учится представлять слово с учётом окружающих слов, что особенно важно для многозначных выражений.
Ограничения и решения
-
**[MASK]-токен не используется при инференсе
**-
В тестовых данных (например, при классификации текста) [MASK] не встречается. Это вызывает рассогласование между обучением и применением.
-
Решения:
-
RoBERTa: убирает NSP и улучшает стратегию маскирования.
-
ELECTRA: предлагает альтернативу MLM (заменяет предсказание маски на задачу классификации: реальное или подменённое слово).
-
-
-
**Слабая генеративность
**-
MLM не подходит для генерации текста, так как не обучен предсказывать следующий токен по предыдущим.
-
GPT и другие автогрегрессионные модели решают это лучше.
-
-
**Маскирование приводит к разреженности
**-
Только 15% токенов участвуют в вычислении loss.
-
Некоторые варианты (SpanBERT, MASS) предлагают маскировать целые фразы или последовательности.
-
Связанные методы
Метод | Описание |
---|---|
Causal LM | Используется в GPT: предсказывает следующий токен (правый контекст не используется). |
--- | --- |
ELECTRA | Вместо предсказания замаскированного токена — определяет, заменено ли слово. |
--- | --- |
SpanBERT | Маскирует не отдельные слова, а целые фразы (спаны). |
--- | --- |
T5 Pretraining | Преобразует задачи в формат "текст-в-текст", включая маскирование. |
--- | --- |
Использование в практике
MLM часто используется в pretraining:
-
На больших коллекциях текстов (Wikipedia, BookCorpus)
-
Затем дообучается (fine-tuning) под конкретную задачу (например, классификация отзывов, распознавание именованных сущностей, ответы на вопросы).
В fine-tuning этапе обычно MLM не используется, но эмбеддинги, полученные с его помощью, служат мощной и универсальной инициализацией.
Masked Language Modeling является фундаментальной техникой, заложившей основу мощных моделей вроде BERT, ALBERT, RoBERTa и многих других, обеспечив прорыв в качестве обработки естественного языка.