BERT (языковая модель)

BERT (Bidirectional Encoder Representations from Transformers) — языковая модель, представленная в октябре 2018 года исследователями из Google[1][2]. Модель обучается представлять текст в виде последовательности векторов с помощью самонаблюдаемого обучения. В её основе лежит архитектура трансформера (только энкодер). BERT значительно повысил качество результатов для больших языковых моделей. По состоянию на 2020 год BERT стал повсеместным базовым стандартом в экспериментах по обработке естественного языка (NLP)[3].

Обучение BERT основано на задаче предсказания замаскированных токенов и предсказании следующего предложения. Такой подход позволяет модели формировать контекстные, латентные представления токенов, аналогично моделям ELMo и GPT-2[4]. BERT применяется для многих задач обработки естественного языка — таких, как разрешение кореференции и многозначности[5]. Модель усовершенствовала подходы к получению контекстных векторных представлений слов и породила целое направление исследований по анализу BERT («BERTология»)[3].

Изначально BERT реализован для английского языка в двух вариантах размера: BERTBASE (110 млн параметров) и BERTLARGE (340 млн параметров). Обе модели обучались на BookCorpus[6] (800 млн слов) и Английской Википедии (2,5 млрд слов)[1]. Веса моделей были опубликованы на GitHub[7]. 11 марта 2020 года были выпущены ещё 24 уменьшенные модели BERT, самая компактная из которых — BERTTINY — имеет лишь 4 млн параметров[7].

Общие сведения
BERT
Тип большая языковая модель, трансформер, фундаментальная модель
Автор Google AI
Разработчик Google Research[d]
Первый выпуск 31 октября 2018
Последняя версия (11 марта 2020)
Репозиторий github.com/google-resear…
Лицензия Apache 2.0
Сайт arxiv.org/abs/181… (англ.)

Архитектура

undefined

BERT представляет собой архитектуру на базе трансформера (только энкодер). На высоком уровне она состоит из четырёх модулей:

  • Токенизатор — преобразует текст на английском языке в последовательность целых чисел (токенов).
  • Эмбеддинг — преобразует последовательность токенов в массив числовых векторов для каждого токена. Это перевод дискретных типов токенов в более низкоразмерное евклидово пространство.
  • Энкодер — стек блоков трансформера с механизмом самовнимания без причинной маскировки.
  • Головка задачи — преобразует конечные векторные представления обратно в токены (one-hot-код), предсказывая вероятностное распределение по токенам. Работа похожа на декодер или слой «разэмбеддинга».

Головка задачи необходима для предобучения, но для конечных (downstream) задач (например, вопросно-ответные системы или анализ тональности) её часто заменяют на новую, инициализированную под нужную задачу, и далее дообучают. Такая передача латентного представления обеспечивает эффективный перенос обучения[1].

undefined

Эмбеддинг

В качестве токенизатора BERT использует алгоритм WordPiece (подсловная сегментация, аналог BPE), размер словаря — 30 000, незнакомые слова заменяются на [UNK] (“unknown”).

undefined

Входной слой эмбеддинга состоит из трёх компонентов: эмбеддинг типа токена, позиции и типа сегмента.

  • Эмбеддинг типа токена: стандартная эмбеддинг-матрица, преобразующая one-hot-вектор токена в плотный вектор.
  • Эмбеддинг позиции: задаёт положение токена в последовательности (абсолютное кодирование), каждая позиция сопоставляется вектору, каждая компонента которого — это синусоидальная функция от позиции.
  • Эмбеддинг типа сегмента: используя двоичный словарь (0 или 1), различает, к какой из двух частей текста (до или после [SEP]) принадлежит токен.

Векторы трёх эмбеддингов складываются — так формируется исходное представление токена, в зависимости от этих признаков. После слоя эмбеддинга используется нормализация (LayerNorm), выдающая 768-мерный вектор на токен. Далее представления пропускаются через 12 блоков энкодера трансформера и преобразуются в 30 000-мерное выходное пространство токенов.

Семейство архитектур

Стек энкодеров BERT определяется двумя ключевыми параметрами: (число слоёв) и (“скрытый размер”, то есть размерность скрытого слоя). Число голов самовнимания составляет , а размер промежуточного слоя (feed-forward/filter size) — . Меняя и , получают семейство моделей BERT.

  • feed-forward size и filter size — синонимы, обозначая размер промежуточного слоя feed-forward-сети;
  • hidden size и embedding size — синонимы, определяют размерность векторного представления токена.

Обозначение параметров стека записывается как L/H. Например: BERTBASE — 12L/768H, BERTLARGE — 24L/1024H, BERTTINY — 2L/128H.

Обучение

Предобучение

BERT предобучается одновременно по двум задачам[8]:

  • Маскированное языковое моделирование (MLM): часть слов в предложении случайно заменяется на специальный токен [MASK], задача модели — предсказать исходное слово по контексту. Такой подход позволяет учитывать контекст с двух сторон.
  • Предсказание следующего предложения (NSP): модель обучается определять, идёт ли второе предложение непосредственно за первым, что важно для задач вроде поискового ответа или классификации документов.

Маскированное языковое моделирование

undefined

В задаче MLM около 15 % токенов случайно выбираются для предсказания:

  • с вероятностью 80 % заменяются на [MASK],
  • с вероятностью 10 % — на случайное слово,
  • с вероятностью 10 % оставляются без изменений.

Это сделано для предотвращения «сдвига распределения» между обучающей и тестовой выборками: в реальных предложениях [MASK] не встречается, и слишком сильная зависимость от этого токена ухудшает обобщающую способность.

Например, для предложения «my dog is cute» случайным образом выбирается четвертый токен (cute):

  • с вероятностью 80 % он заменяется на [MASK] («my dog is [MASK]»);
  • с вероятностью 10 % — на случайное слово («my dog is happy»);
  • с вероятностью 10 % — не изменяется.

Выходной вектор на позиции замаскированного токена подаётся в декодер, который выдает распределение по словарю (30 000 позиций).

Предсказание следующего предложения

undefined

Модели подаются две строки, и требуется определить, следуют ли они друг за другом в исходном корпусе. Начало предложения помечается токеном [CLS], граница — [SEP]. После обработки предложение представляется как вектор, который подается на линейный классификатор для решения задачи «[IsNext]»/«[NotNext]». Например:

  • [CLS] my dog is cute [SEP] he likes playing [SEP][IsNext].
  • [CLS] my dog is cute [SEP] how do magnets work [SEP][NotNext].

Дообучение (fine-tuning)

BERT задуман как универсальная предобученная модель для прикладных задач NLP. После предобучения BERT легко дообучается на меньших датасетах и для конкретных задач (например, логический вывод из текста, классификация документов или генерация ответов на вопросы).

В оригинальной статье показано, что даже короткое дообучение (для BERTLARGE — 1 час на 1 Cloud TPU) обеспечивает лучшие результаты по ряду тестовых наборов, в том числе:

  • GLUE (General Language Understanding Evaluation) — набор из 9 разнообразных NLP-задач;
  • SQuAD (Stanford Question Answering Dataset[9]) версий 1.1 и 2.0;
  • SWAG (Situations With Adversarial Generations[10]).

При использовании BERT для задач классификации после слоя [CLS] добавляется линейный слой с softmax, который, аналогично глобальному пуллингу в компьютерном зрении, выделяет только один вектор из выхода модели[1]. В исходной реализации этот линейный слой назывался «pooler layer», хотя фактически использует только представление для [CLS][11].

Стоимость обучения

BERT обучался на основном корпусе из BookCorpus (800 миллионов слов) и отфильтрованной версии английской Википедии (2,5 миллиарда слов) без списков, таблиц и заголовков.

Обучение BERTBASE на 4 облачных TPU (16 чипов TPU) заняло 4 дня и стоило примерно 500 долларов США[7]; обучение BERTLARGE на 16 TPU (64 чипа) также заняло 4 дня[1].

Интерпретация

Появление моделей вроде ELMo, GPT-2 и BERT дало начало области («BERTология»), изучающей интерпретацию внутренних представлений языковых моделей. Их поведение на задачах понимания текста до конца не раскрыто[3][12][13]. В 2018–2019 годах появилось множество работ, анализирующих связи между выходом модели и входными последовательностями[14][15], а также внутренние векторные представления с помощью «пробных» (“probing”) классификаторов[16][17], и внимание (“attention”) между токенами[12][13].

Высокое качество BERT во многом объясняется двунаправленным обучением[18]. Благодаря этому модель может учитывать контекст как слева, так и справа от каждого слова (например, слово «fine» в разных предложениях может соответствовать «чувствовать себя хорошо» или «тонкие светлые волосы»).

Однако у такой архитектуры есть ограничения: из-за отсутствия декодера BERT нельзя использовать как генератор текста или для prompt-настройки. Попытки продолжить текст с помощью маскировки каждого нового токена приводят к «сдвигу распределения» (в обучении таких случаев не было), что негативно сказывается на производительности. Существуют техники генерации текста для BERT, но они очень ресурсоёмки[19].

История

BERT был разработан исследователями Google: Джейкобом Девлином, Мин-Вэй Чаном, Кентоном Ли и Кристиной Тута́новой. Концепция модели развилась из ряда работ по контекстному предобучению: semi-supervised sequence learning[20], генеративному предобучению, ELMo[21] и ULMFit[22]. В отличие от предыдущих моделей, BERT предложил полностью двунаправленное, основанное только на входных данных (unsupervised), обучение без разметки, использующее корпус обычных текстов. В то время как подходы вроде word2vec или GloVe создают одинаковое представление для всех вхождений слова в словарь, BERT строит контекстуализированные представления — в зависимости от предложения[4].

25 октября 2019 года Google объявил о внедрении BERT для обработки англоязычных поисковых запросов в Google Search в США[23]. К декабрю 2019 года модель использовалась в поиске Google более чем в 70 языках[24][25]. В октябре 2020 года почти все англоязычные запросы Google обрабатывались через BERT[26].

Варианты

Модели BERT оказали значительное влияние и вдохновили создание множества производных вариантов:

RoBERTa (2019)[27] — усовершенствованная версия BERT с изменёнными гиперпараметрами, обучением на больших мини-батчах, удалением задачи предсказания следующего предложения и более массивным датасетом.

XLM-RoBERTa (2019)[28] — многоязычная версия RoBERTa, одна из первых моделей для масштабного кросслингвального представления текста.

DistilBERT (2019) — сжатая версия BERTBASE с 60 % числа параметров (66 млн), сохраняющая 95 % качества по тестам[29]. TinyBERT (2019) — ещё более компактная дистилляционная версия (28 % параметров от оригинала).

ALBERT (2019) — использует совместное использование параметров между слоями и экспериментирует с разделением размеров скрытого слоя и эмбеддинга. Вместо задачи распознавания следующего предложения применяется задача определения порядка (“sentence-order prediction”).

ELECTRA (2020) — внедряет элементы GAN: небольшая языковая модель генерирует замену токенов, а более крупная идентифицирует подмены.

DeBERTa (2020) — архитектурно иной вариант с «разделённым вниманием», в котором позиционное и токенное кодирование проходят отдельно. Вместо объединения позиций и токена в один вектор () используются два разных канала: (), и на каждом уровне вычисляются отдельные матрицы внимания: контент-контент, контент-позиция, позиция-контент. Итоги суммируются и проходят softmax, а абсолютное позиционное кодирование подключается только на последнем слое внимания.

Примечания

  1. 1 2 3 4 5 Devlin, Jacob; Chang, Ming-Wei; Lee, Kenton & Toutanova, Kristina (2018-10-11), BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, arΧiv:1810.04805v2 [cs.CL]. 
  2. Open Sourcing BERT: State-of-the-Art Pre-training for Natural Language Processing (англ.). Google AI Blog (2 ноября 2018). Дата обращения: 27 ноября 2019. Архивировано 2 ноября 2018 года.
  3. 1 2 3 Rogers, Anna; Kovaleva, Olga; Rumshisky, Anna (2020). “A Primer in BERTology: What We Know About How BERT Works”. Transactions of the Association for Computational Linguistics. 8: 842—866. arXiv:2002.12327. DOI:10.1162/tacl_a_00349. S2CID 211532403.
  4. 1 2 Ethayarajh, Kawin How Contextual are Contextualized Word Representations? Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings (1 сентября 2019). Архивировано 7 сентября 2025 года.
  5. Anderson, Dawn A deep dive into BERT: How BERT launched a rocket into natural language understanding (англ.). Search Engine Land (5 ноября 2019). Дата обращения: 6 августа 2024. Архивировано из оригинала 15 декабря 2024 года.
  6. Zhu, Yukun; Kiros, Ryan; Zemel, Rich; Salakhutdinov, Ruslan; Urtasun, Raquel; Torralba, Antonio & Fidler, Sanja (2015), Aligning Books and Movies: Towards Story-Like Visual Explanations by Watching Movies and Reading Books, pp. 19–27, arΧiv:1506.06724 [cs.CV]. 
  7. 1 2 3 BERT. GitHub. Дата обращения: 28 марта 2023. Архивировано 10 сентября 2025 года.
  8. Summary of the models — transformers 3.4.0 documentation. huggingface.co. Дата обращения: 16 февраля 2023. Архивировано 15 декабря 2024 года.
  9. Rajpurkar, Pranav; Zhang, Jian; Lopyrev, Konstantin & Liang, Percy (2016-10-10), SQuAD: 100,000+ Questions for Machine Comprehension of Text, arΧiv:1606.05250 [cs.CL]. 
  10. Zellers, Rowan; Bisk, Yonatan; Schwartz, Roy & Choi, Yejin (2018-08-15), SWAG: A Large-Scale Adversarial Dataset for Grounded Commonsense Inference, arΧiv:1808.05326 [cs.CL]. 
  11. bert/modeling.py at master · google-research/bert (англ.). GitHub. Дата обращения: 16 сентября 2024. Архивировано 20 августа 2025 года.
  12. 1 2 Kovaleva, Olga. Revealing the Dark Secrets of BERT // Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP) : [] / Olga Kovaleva, Alexey Romanov, Anna Rogers … [и др.]. — 2019-11. — P. 4364–4373. — doi:10.18653/v1/D19-1445.
  13. 1 2 Clark, Kevin; Khandelwal, Urvashi; Levy, Omer; Manning, Christopher D. (2019). “What Does BERT Look at? An Analysis of BERT's Attention”. Proceedings of the 2019 ACL Workshop BlackboxNLP: Analyzing and Interpreting Neural Networks for NLP. Stroudsburg, PA, USA: Association for Computational Linguistics: 276—286. arXiv:1906.04341. DOI:10.18653/v1/w19-4828.
  14. Khandelwal, Urvashi; He, He; Qi, Peng; Jurafsky, Dan (2018). “Sharp Nearby, Fuzzy Far Away: How Neural Language Models Use Context”. Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). Stroudsburg, PA, USA: Association for Computational Linguistics: 284—294. arXiv:1805.04623. DOI:10.18653/v1/p18-1027. S2CID 21700944.
  15. Gulordava, Kristina. Colorless Green Recurrent Networks Dream Hierarchically // Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long Papers) / Kristina Gulordava, Piotr Bojanowski, Edouard Grave … [и др.]. — Stroudsburg, PA, USA : Association for Computational Linguistics, 2018. — P. 1195–1205. — doi:10.18653/v1/n18-1108.
  16. Giulianelli, Mario; Harding, Jack; Mohnert, Florian; Hupkes, Dieuwke; Zuidema, Willem (2018). “Under the Hood: Using Diagnostic Classifiers to Investigate and Improve how Language Models Track Agreement Information”. Proceedings of the 2018 EMNLP Workshop BlackboxNLP: Analyzing and Interpreting Neural Networks for NLP. Stroudsburg, PA, USA: Association for Computational Linguistics: 240—248. arXiv:1808.08079. DOI:10.18653/v1/w18-5426. S2CID 52090220.
  17. Zhang, Kelly; Bowman, Samuel (2018). “Language Modeling Teaches You More than Translation Does: Lessons Learned Through Auxiliary Syntactic Task Analysis”. Proceedings of the 2018 EMNLP Workshop BlackboxNLP: Analyzing and Interpreting Neural Networks for NLP. Stroudsburg, PA, USA: Association for Computational Linguistics: 359—361. DOI:10.18653/v1/w18-5448.
  18. Sur, Chiranjib (2020-01). “RBN: enhancement in language attribute prediction using global representation of natural language transfer learning technology like Google BERT”. SN Applied Sciences. 2 (1). DOI:10.1007/s42452-019-1765-9. Проверьте дату в |date= (справка на английском)
  19. Patel, Ajay; Li, Bryan; Mohammad Sadegh Rasooli; Constant, Noah; Raffel, Colin & Callison-Burch, Chris (2022), Bidirectional Language Models Are Also Few-shot Learners, arΧiv:2209.14500 [cs.LG]. 
  20. Dai, Andrew & Le, Quoc (2015-11-04), Semi-supervised Sequence Learning, arΧiv:1511.01432 [cs.LG]. 
  21. Peters, Matthew; Neumann, Mark; Iyyer, Mohit; Gardner, Matt; Clark, Christopher; Lee, Kenton & Zettlemoyer, Luke (2018-02-15), Deep contextualized word representations, arΧiv:1802.05365v2 [cs.CL]. 
  22. Howard, Jeremy & Ruder, Sebastian (2018-01-18), Universal Language Model Fine-tuning for Text Classification, arΧiv:1801.06146v5 [cs.CL]. 
  23. Nayak, Pandu Understanding searches better than ever before. Google Blog (25 октября 2019). Дата обращения: 10 декабря 2019. Архивировано 10 октября 2025 года.
  24. Understanding searches better than ever before (амер. англ.). Google (25 октября 2019). Дата обращения: 6 августа 2024. Архивировано 10 октября 2025 года.
  25. Montti, Roger Google's BERT Rolls Out Worldwide. Search Engine Journal (10 декабря 2019). Дата обращения: 10 декабря 2019. Архивировано 4 апреля 2025 года.
  26. Google: BERT now used on almost every English query. Search Engine Land (15 октября 2020). Дата обращения: 24 ноября 2020. Архивировано 10 октября 2025 года.
  27. Liu, Yinhan; Ott, Myle; Goyal, Naman; Du, Jingfei; Joshi, Mandar; Chen, Danqi; Levy, Omer; Lewis, Mike; et al. (2019), RoBERTa: A Robustly Optimized BERT Pretraining Approach, arΧiv:1907.11692 [cs.CL]. 
  28. Conneau, Alexis; Khandelwal, Kartikay; Goyal, Naman; Chaudhary, Vishrav; Wenzek, Guillaume; Guzmán, Francisco; Grave, Edouard; Ott, Myle; et al. (2019), Unsupervised Cross-lingual Representation Learning at Scale, arΧiv:1911.02116 [cs.CL]. 
  29. DistilBERT. huggingface.co. Дата обращения: 5 августа 2024. Архивировано 5 сентября 2025 года.

Ссылки