Обработка естественного языка

BERT и маскированные LM

Предварительные знания

  • Механизм attention и self-attention - основа Transformer-энкодера
  • Encoder-Decoder архитектура: BERT использует только энкодерную часть
  • Sequence-to-Sequence и Attention

BERT и двунаправленное предобучение

В октябре 2018 года Джейкоб Девлин, Мин-Вэй Чанг, Кентон Ли и Кристина Тутанова из Google опубликовали 'BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding'. Главная идея - masked language modeling: модель видит предложение целиком и предсказывает случайно замаскированные токены, используя контекст слева и справа одновременно. До этого ELMo комбинировал две однонаправленные модели, а GPT-1 был чисто слева-направо; BERT же был по-настоящему двунаправленным благодаря Transformer-энкодеру (Васвани и др., 2017). Вторая задача предобучения - Next Sentence Prediction. BERT обновил state-of-the-art сразу на 11 задачах GLUE и SQuAD и закрепил парадигму 'pretrain then fine-tune', доминирующую в NLP до сих пор. Masked LM из BERT остаётся базовым рецептом предобучения энкодеров (RoBERTa, DeBERTa, ModernBERT)

Ноябрь 2018: команда Google публикует BERT. За три месяца он устанавливает рекорды на 11 NLP бенчмарках одновременно - GLUE, SQuAD, Named Entity Recognition. Такого прорыва в NLP не было со времён word2vec. Фокус в том, что BERT никогда не видел ни одной размеченной задачи при предобучении - только сырой текст из Wikipedia и BookCorpus. Всё, что нужно для задачи, добавляется за несколько часов fine-tuning.

  • **Google Search** с 2019 года использует BERT для понимания поисковых запросов - особенно для conversational queries с предлогами и контекстно-зависимыми словами. Это затронуло 10% всех запросов при запуске
  • **Bing** и большинство корпоративных поисковых систем используют BERT-based rankers для оценки релевантности документов - эмбеддинги [CLS] служат векторным представлением документа в семантическом поиске
  • **GitHub Copilot** в части code review использует CodeBERT - вариант BERT, предобученный на коде с GitHub, для понимания семантики функций и комментариев

Masked Language Modeling: BERT учится заполнять пробелы

GPT читает текст слева направо и предсказывает следующее слово. Это мощно, но однобоко: модель видит только левый контекст. BERT (Bidirectional Encoder Representations from Transformers, 2018) переворачивает задачу: случайно маскируется 15% токенов, и модель должна восстановить их, видя ВЕСЬ контекст - и левый, и правый. 'Банк [MASK] деньги' - это хранит. 'Банк реки [MASK] крутой' - это берег. Только двунаправленный контекст позволяет разрешить такую полисемию. За счёт этого BERT-эмбеддинги слов контекстно-зависимы - то, чего не могло дать Word2Vec.

Из 15% маскируемых токенов: 80% заменяются на [MASK], 10% на случайный токен, 10% оставляются неизменными. Это предотвращает переобучение к [MASK] токену и помогает модели учиться на реальных словах. При fine-tuning [MASK] не встречается - модель должна уметь работать с обычным текстом.

Почему BERT маскирует только 80% из выбранных 15% токенов, а не все 15%?

Next Sentence Prediction и его критика

BERT обучается на двух задачах одновременно. NSP (Next Sentence Prediction): модели подаются два предложения, и она предсказывает, следует ли второе за первым в оригинальном тексте. Цель - научить модель понимать отношения между предложениями для задач вроде Question Answering и Natural Language Inference. На практике NSP оказался слабым: модель легко решает задачу через лексические подсказки, не понимая реальной связи. RoBERTa (2019) убрала NSP и показала улучшение - это стало одним из самых неожиданных результатов в NLP.

Взамен NSP предложены лучшие задачи: Sentence Order Prediction (SOP) в ALBERT - предсказание правильного порядка двух последовательных предложений; Whole Word Masking - маскирование целых слов вместо subword токенов. Текущий консенсус: MLM достаточно для большинства downstream задач, межпредложенческие задачи нужны только при работе с парами предложений.

RoBERTa убрала NSP из предобучения и показала улучшение. Что это говорит о NSP?

Fine-tuning: один BERT для сотни задач

BERT предобучается 4 дня на 64 TPU. После этого для новой задачи нужно лишь несколько часов fine-tuning на специфических данных - это революция трансфер-обучения в NLP. Для классификации: добавляется линейный слой поверх [CLS] токена. Для NER: линейный слой поверх каждого токена. Для QA: два линейных слоя предсказывают начало и конец ответа в тексте. Во всех случаях весь BERT обновляется через backpropagation - это full fine-tuning, в отличие от feature extraction.

Типичные гиперпараметры fine-tuning BERT: learning rate 2e-5 до 5e-5, batch size 16 или 32, 2-4 эпохи. Слишком большой LR или слишком много эпох - catastrophic forgetting предобученных знаний. Warming up первые 10% шагов с последующим linear decay - стандартная стратегия. PEFT (Parameter-Efficient Fine-Tuning) через LoRA позволяет обновлять лишь 0.1% параметров при сопоставимом качестве.

В чём разница между fine-tuning и feature extraction при использовании BERT?

[CLS] токен: вектор смысла всего предложения

BERT всегда добавляет специальный токен [CLS] (Classification) в начало каждого входа. После прохождения через все 12 (или 24) слоёв трансформера [CLS] содержит 768-мерный вектор, который аккумулировал информацию из всей последовательности через self-attention. Именно этот вектор используется для классификации предложений. Важный нюанс: в предобученном BERT [CLS] хорошо подходит для NSP задач, но для задач семантического сходства (sentence similarity) средний пул всех токенов или специально обученные Sentence-BERT представления работают лучше.

Sentence-BERT (SBERT) обучает siamese сеть на парах предложений, оптимизируя косинусное сходство [CLS] векторов. Это позволяет эффективно вычислять сходство: 10 000 предложений попарно - 50 миллионов сравнений займут 65 часов у BERT, но 5 секунд у SBERT (после предварительного вычисления всех эмбеддингов).

[CLS] токен изначально содержит информацию о всём предложении, т.к. стоит первым и 'видит' все следующие токены

[CLS] аккумулирует информацию через self-attention во всех слоях трансформера. В нижних слоях [CLS] содержит мало осмысленной информации - полезное представление появляется только после прохождения через все 12 слоёв

Self-attention симметричен: [CLS] видит все токены, но и все токены видят [CLS]. Информация аккумулируется итеративно через слои, не за счёт позиции. Именно поэтому для downstream задач берут вывод последнего слоя, а не первого

Почему mean pooling токенов BERT часто лучше [CLS] для задач семантического сходства предложений?

Ключевые идеи

  • **MLM** даёт BERT двунаправленный контекст: маскирование 15% токенов и их предсказание при виде всей последовательности создаёт контекстно-зависимые эмбеддинги, недоступные для однонаправленных моделей
  • **NSP оказался лишним**: RoBERTa без NSP превзошла BERT - это показало, что MLM достаточно для большинства задач. Современные модели используют SOP (Sentence Order Prediction) если межпредложенческая связь важна
  • **Fine-tuning за часы** вместо предобучения за дни: добавление классификационной головы поверх [CLS] + 2-4 эпохи на целевых данных даёт state-of-the-art результаты. Mean pooling токенов часто превосходит [CLS] для задач sentence similarity

Связанные темы

BERT - центральный узел современной NLP архитектуры:

  • GPT и авторегрессионные LM — GPT и BERT - два противоположных подхода: авторегрессионный vs маскированный. GPT лучше для генерации, BERT - для понимания
  • Machine Translation — BERTScore использует BERT эмбеддинги для оценки качества перевода; mBERT применяется как энкодер в гибридных NMT системах

Вопросы для размышления

  • BERT обучается предсказывать маскированные токены без какой-либо явной разметки. Какие знания о языке возникают как эмерджентные свойства этой простой задачи?
  • Catastrophic forgetting при fine-tuning - реальная проблема. Как бы организовали fine-tuning BERT для медицинской документации, где нужно сохранить как общеязыковые, так и специфические медицинские знания?
  • BERT имеет ограничение в 512 токенов. Как обрабатывать длинные документы (целые статьи, юридические контракты) при классификации?

Связанные уроки

  • nlp-13 — GPT авторегрессионный там, где BERT маскированный двунаправленный
  • nlp-10 — Self-attention обобщает внимание seq2seq в трансформеры
  • nlp-07 — Дообученный BERT стал классификатором текста по умолчанию
  • ml-31-transformers — BERT - это стек энкодеров Transformer
  • ml-41-transfer-learning — Предобучение и дообучение - трансферное обучение для текста
  • it-01 — Маскированная LM минимизирует кросс-энтропию по маскированным токенам
  • dl-01
BERT и маскированные LM

0

1

Войти