Предварительно обученная модель на английском языке с использованием задачи маскированного языкового моделирования (MLM). Она была представлена в этой статье и впервые выпущена в этом репозитории. Эта модель не делает различий между английскими и прописными буквами.
Отказ от ответственности: команда, выпускающая BERT, не писала карточку модели для этой модели, поэтому эта карточка модели была написана командой Hugging Face.
BERT — это модель трансформаторов, предварительно обученная на большом корпусе данных на английском языке в режиме самообучения. Это означает, что она была предварительно обучена только на необработанных текстах без какой-либо маркировки людьми (поэтому она может использовать множество общедоступных данных) с помощью автоматического процесса для создания входных данных и меток из этих текстов. Точнее, она была предварительно обучена двум задачам:
Таким образом, модель изучает внутреннее представление английского языка, которое затем можно использовать для извлечения функций, полезных для последующих задач: если у вас есть набор данных помеченных предложений, например, вы можете обучить стандартный классификатор, используя функции, созданные моделью BERT, в качестве входных данных.
Изначально BERT был выпущен в базовой и большой вариациях для использования с прописными и строчными буквами. Модели без учёта регистра также удаляют диакритические знаки. Вскоре после этого появились китайские и многоязычные версии без учёта регистра и с учётом регистра. Модифицированная предварительная обработка с маскировкой целых слов заменила маскировку подкусков в последующей работе с выпуском двух моделей. После этого было выпущено ещё 24 меньших модели.
Подробную историю выпуска можно найти в файле readme google-research / bert на GitHub.
Модель | #params | Язык |
---|---|---|
bert-base-uncased |
110M | Английский |
bert-large-uncased |
340M | Английский |
bert-base-cased |
110M | Английский |
bert-large-cased |
340M | Английский |
bert-base-chinese |
110M | Китайский |
bert-base-multilingual-cased |
110M | Несколько |
bert-large-uncased-whole-word-masking |
340M | Английский |
bert-large-cased-whole-word-masking |
340M | Английский |
Вы можете использовать необработанную модель либо для маскированного языкового моделирования, либо для предсказания следующего предложения, но в основном она предназначена для точной настройки для последующей задачи. См. модельный хаб, чтобы найти точно настроенные версии интересующей вас задачи.
Обратите внимание, что эта модель в первую очередь предназначена для точной настройки задач, использующих всё предложение (потенциально замаскированное) для принятия решений, таких как классификация последовательностей, классификация токенов или вопрос. Ответом на запрос является перевод текста на русский язык:
Ответ:
Для задач, таких как генерация текста, вы должны обратить внимание на модель, подобную GPT2.
Вы можете использовать эту модель напрямую с пайплайном для маскированного языкового моделирования:
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='bert-base-uncased')
>>> unmasker("Hello I'm a [MASK] model.")
[{'sequence': "[CLS] hello i'm a fashion model. [SEP]",
'score': 0.1073106899857521,
'token': 4827,
'token_str': 'fashion'},
{'sequence': "[CLS] hello i'm a role model. [SEP]",
'score': 0.08774490654468536,
'token': 2535,
'token_str': 'role'},
{'sequence': "[CLS] hello i'm a new model. [SEP]",
'score': 0.05338378623127937,
'token': 2047,
'token_str': 'new'},
{'sequence': "[CLS] hello i'm a super model. [SEP]",
'score': 0.04667217284440994,
'token': 3565,
'token_str': 'super'},
{'sequence': "[CLS] hello i'm a fine model. [SEP]",
'score': 0.027095865458250046,
'token': 2986,
'token_str': 'fine'}]
Вот как использовать эту модель для получения признаков данного текста в PyTorch:
from transformers import BertTokenizer, BertModel
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained("bert-base-uncased")
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 = BertTokenizer.from_pretrained('bert-base-uncaced')
model = TFBertModel.from_pretrained("bert-base-uncased")
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
Даже если обучающие данные, используемые для этой модели, можно охарактеризовать как достаточно нейтральные, эта модель может иметь предвзятые прогнозы:
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='bert-base-uncased')
>>> unmasker("The man worked as a [MASK].")
[{'sequence': '[CLS] the man worked as a carpenter. [SEP]',
'score': 0.09747550636529922,
'token': 10533,
'token_str': 'carpenter'},
{'sequence': '[CLS] the man worked as a waiter. [SEP]',
'score': 0.0523831807076931,
'token': 15610,
'token_str': 'waiter'},
{'sequence': '[CLS] the man worked as a barber. [SEP]',
'score': 0.04962705448269844,
'token': 13362,
'token_str': 'barber'},
{'sequence': '[CLS] the man worked as a mechanic. [SEP]',
'score': 0.03788609802722931,
'token': 15893,
'token_str': 'mechanic'},
{'sequence': '[CLS] the man worked as a salesman. [SEP]',
'score': 0.037680890411138535,
'token': 18968,
'token_str': 'salesman'}]
>>> unmasker("The woman worked as a [MASK].")
[{'sequence': '[CLS] the woman worked as a nurse. [SEP]',
'score': 0.21981462836265564,
'token': 6821,
'token_str': 'nurse'},
{'sequence': '[CLS] the woman worked as a waitress. [SEP]',
'score': 0.1597415804862976,
'token': 13877,
'token_str': 'waitress'},
{'sequence': '[CLS] the woman worked as a maid. [SEP]',
'score': 0.1154729500412941,
'token': 10850,
'token_str': 'maid'},
{'sequence': '[CLS] the woman worked as a prostitute. [SEP]',
'score': 0.037968918681144714,
'token': 19215,
'token_str': 'prostitute'},
{'sequence': '[CLS] the woman worked as a cook. [SEP]',
'score': 0.03042375110089779,
'token': 5660,
'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 |
@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 )