Что такое 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=−∑iMlogP(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.

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

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

  1. **[MASK]-токен не используется при инференсе
    **

    • В тестовых данных (например, при классификации текста) [MASK] не встречается. Это вызывает рассогласование между обучением и применением.

    • Решения:

      • RoBERTa: убирает NSP и улучшает стратегию маскирования.

      • ELECTRA: предлагает альтернативу MLM (заменяет предсказание маски на задачу классификации: реальное или подменённое слово).

  2. **Слабая генеративность
    **

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

    • GPT и другие автогрегрессионные модели решают это лучше.

  3. **Маскирование приводит к разреженности
    **

    • Только 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 и многих других, обеспечив прорыв в качестве обработки естественного языка.