Предварительно обученная модель на английском языке с использованием маскированной языковой модели (MLM). Она была представлена в этой статье и впервые выпущена в этом репозитории. Эта модель чувствительна к регистру: она различает слова «english» и «English».
Отказ от ответственности: команда, выпускающая BERT, не писала карточку модели для этой модели, поэтому эта карточка модели была написана командой Hugging Face.
BERT — это модель трансформаторов, предварительно обученная на большом корпусе данных на английском языке в самоконтролируемом режиме. Это означает, что она была предварительно обучена только на необработанных текстах без какой-либо маркировки людьми (поэтому она может использовать множество общедоступных данных) с автоматическим процессом для создания входных данных и меток из этих текстов. Точнее, она была предварительно обучена с двумя целями:
Таким образом, модель изучает внутреннее представление английского языка, которое затем можно использовать для извлечения функций, полезных для последующих задач: если у вас есть набор данных помеченных предложений, например, вы можете обучить стандартный классификатор, используя функции, созданные моделью BERT, в качестве входных.
Вы можете использовать необработанную модель либо для маскированного языкового моделирования, либо для предсказания следующего предложения, но в основном она предназначена для точной настройки на последующей задаче. См. модельный хаб, чтобы найти точные версии для задачи, которая вас интересует.
Обратите внимание, что эта модель в первую очередь предназначена для точной настройки задач, использующих всё предложение (потенциально замаскированное) для принятия решений, таких как классификация последовательностей, классификация токенов или ответы на вопросы. Для таких задач, как генерация текста, вам следует обратить внимание на такие модели, как GPT2.
Вы можете напрямую использовать эту модель с конвейером для маскированного языкового моделирования:
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='bert-base-cased')
>>> unmasker("Hello I'm a [MASK] model.")
[{'sequence': "[CLS] Hello I'm a fashion model. [SEP]",
'score': 0.09019174426794052,
'token': 4633,
'token_str': 'fashion'},
{'sequence': "[CLS] Hello I'm a new model. [SEP]",
'score': 0.06349995732307434,
'token': 1207,
'token_str': 'new'},
{'sequence': "[CLS] Hello I'm a male model. [SEP]",
'score': 0.06228214129805565,
'token': 2581,
'token_str': 'male'},
{'sequence': "[CLS] Hello I'm a professional model. [SEP]",
'score': 0.0441727414727211,
'token': 1848,
'token_str': 'professional'},
{'sequence': "[CLS] Hello I'm a super model. [SEP]",
'score': 0.03326151892542839,
'token': 7688,
'token_str': 'super'}]
Вот как использовать эту модель для получения признаков данного текста в PyTorch:
from transformers import BertTokenizer, BertModel
tokenizer = BertTokenizer.from_pretrained('bert-base-cased')
model = BertModel.from_pretrained("bert-base-cased")
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
и в TensorFlow:
from transformers import BertTokenizer, TFBertModel
tokenizer =
``` **Limitations and bias**
Даже если обучающие данные, используемые для этой модели, можно охарактеризовать как достаточно нейтральные, эта модель может иметь предвзятые прогнозы:
```python
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='bert-base-cased')
>>> unmasker("The man worked as a [MASK].")
[{'sequence': '[CLS] The man worked as a lawyer. [SEP]',
'score': 0.04804691672325134,
'token': 4545,
'token_str': 'lawyer'},
{'sequence': '[CLS] The man worked as a waiter. [SEP]',
'score': 0.037494491785764694,
'token': 17989,
'token_str': 'waiter'},
{'sequence': '[CLS] The man worked as a cop. [SEP]',
'score': 0.035512614995241165,
'token': 9947,
'token_str': 'cop'},
{'sequence': '[CLS] The man worked as a detective. [SEP]',
'score': 0.031271643936634064,
'token': 9140,
'token_str': 'detective'},
{'sequence': '[CLS] The man worked as a doctor. [SEP]',
'score': 0.027423162013292313,
'token': 3995,
'token_str': 'doctor'}]
>>> unmasker("The woman worked as a [MASK].")
[{'sequence': '[CLS] The woman worked as a nurse. [SEP]',
'score': 0.16927455365657806,
'token': 7439,
'token_str': 'nurse'},
{'sequence': '[CLS] The woman worked as a waitress. [SEP]',
'score': 0.1501094549894333,
'token': 15098,
'token_str': 'waitress'},
{'sequence': '[CLS] The woman worked as a maid. [SEP]',
'score': 0.05600163713097572,
'token': 13487,
'token_str': 'maid'},
{'sequence': '[CLS] The woman worked as a housekeeper. [SEP]',
'score': 0.04838843643665314,
'token': 26458,
'token_str': 'housekeeper'},
{'sequence': '[CLS] The woman worked as a cook. [SEP]',
'score': 0.029980547726154327,
'token': 9834,
'token_str': 'cook'}]
Этот уклон также повлияет на все доработанные версии этой модели.
Модель BERT была предварительно обучена на BookCorpus, наборе данных, состоящем из 11 038 неопубликованных книг и английской Википедии (исключая списки, таблицы и заголовки).
Тексты токенизируются с использованием WordPiece и размера словаря 30 000. Входы модели имеют следующий вид:
[CLS] Sentence A [SEP] Sentence B
С вероятностью 0,5 предложение A и предложение B соответствуют двум последовательным предложениям в исходном корпусе, а в остальных случаях это другое случайное предложение в корпусе. Обратите внимание, что то, что здесь считается предложением, представляет собой непрерывный фрагмент текста, обычно длиннее одного предложения. Единственное ограничение состоит в том, что результат с двумя «предложениями» имеет общую длину менее 512 токенов.
Подробности процедуры маскирования для каждого предложения следующие:
[MASK]
.Модель обучалась на 4 облачных TPU в конфигурации Pod (всего 16 чипов TPU) в течение одного миллиона шагов с размером пакета 256. Длина последовательности была ограничена 128 токенами для 90% шагов и 512 для оставшихся 10%. Используемый оптимизатор — Adam с коэффициентом обучения 1e-4, \(\beta_{1} = 0.9\) и \(\beta_{2} = 0.999\), затуханием веса 0,01, прогревом коэффициента обучения в течение 10 000 шагов и линейным уменьшением коэффициента обучения после.
При доработке для последующих задач эта модель достигает следующих результатов:
Результаты теста Glue:
Задача | MNLI-(m/mm) | QQP | QNLI | SST-2 | CoLA | STS-B | MRPC | RTE | Среднее |
---|---|---|---|---|---|---|---|---|---|
84.6/83.4 | 71.2 | 90.5 | 93.5 | 52.1 | 85.8 | 88.9 | 66.4 | 79.6 |
BibTeX запись и citation info
@article{DBLP:journals/corr/abs-1810-04805,
author = {Jacob Devlin and
Ming{-}Wei Chang and
Kenton Lee and
Kristina Toutanova},
title = {{BERT:} Pre-training of Deep Bidirectional Transformers for Language
Understanding},
journal = {CoRR},
volume = {abs/1810.04805},
year = {2018},
url = {http://arxiv.org/abs/1810.04805},
archivePrefix = {arXiv},
eprint = {1810.04805},
timestamp = {Tue, 30 Oct 2018 20:39:56 +0100},
biburl = {https://dblp.org/rec/journals/corr/abs-1810-04805.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )