Предварительно обученная модель на английском языке с использованием задачи маскированного языкового моделирования (MLM). Она была представлена в этой статье и впервые выпущена в этом репозитории. Эта модель чувствительна к регистру: она различает слова «english» и «English».
Отказ от ответственности: команда, выпустившая RoBERTa, не писала карточку модели для этой модели, поэтому эта карточка модели была написана командой Hugging Face.
RoBERTa — это модель трансформаторов, предварительно обученная на большом корпусе данных на английском языке в самоконтролируемом режиме. Это означает, что она была предварительно обучена только на необработанных текстах без какой-либо маркировки людьми (поэтому она может использовать множество общедоступных данных) с помощью автоматического процесса для создания входных данных и меток из этих текстов.
Точнее, она была предварительно обучена с задачей маскированного языкового моделирования (MLM). Принимая предложение, модель случайным образом маскирует 15% слов во входном предложении, а затем пропускает всё замаскированное предложение через модель и должна предсказать замаскированные слова. Это отличается от традиционных рекуррентных нейронных сетей (RNN), которые обычно видят слова одно за другим, или от авторегрессивных моделей, таких как GPT, которые внутренне маскируют будущие токены. Это позволяет модели изучить двунаправственное представление предложения.
Таким образом, модель изучает внутреннее представление английского языка, которое затем можно использовать для извлечения признаков, полезных для последующих задач: если у вас есть набор данных помеченных предложений, например, вы можете обучить стандартный классификатор, используя признаки, созданные моделью BERT, в качестве входных данных.
Вы можете использовать необработанную модель для маскированного языкового моделирования, но в основном она предназначена для точной настройки для последующей задачи. См. модельный хаб, чтобы найти точно настроенные версии для интересующей вас задачи.
Обратите внимание, что эта модель в первую очередь предназначена для точной настройки задач, использующих всё предложение (потенциально замаскированное) для принятия решений, таких как классификация последовательностей, классификация токенов или ответы на вопросы. Для таких задач, как генерация текста, вам следует обратить внимание на такую модель, как GPT2.
Вы можете напрямую использовать эту модель с конвейером для маскированного языкового моделирования:
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='roberta-base')
>>> unmasker("Hello I'm a <mask> model.")
[{'sequence': "<s>Hello I'm a male model.</s>",
'score': 0.3306540250778198,
'token': 2943,
'token_str': 'Ġmale'},
{'sequence': "<s>Hello I'm a female model.</s>",
'score': 0.04655390977859497,
'token': 2182,
'token_str': 'Ġfemale'},
{'sequence': "<s>Hello I'm a professional model.</s>",
'score': 0.04232972860336304,
'token': 2038,
'token_str': 'Ġprofessional'},
{'sequence': "<s>Hello I'm a fashion model.</s>",
'score': 0.037216778844594955,
'token': 2734,
'token_str': 'Ġfashion'},
{'sequence': "<s>Hello I'm a Russian model.</s>",
'score': 0.03253649175167084,
'token': 1083,
'token_str': 'ĠRussian'}]
Вот как использовать эту модель для получения признаков данного текста в PyTorch:
from transformers import RobertaTokenizer, RobertaModel
tokenizer = RobertaTokenizer.from_pretrained('roberta-base')
model = RobertaModel.from_pretrained('roberta-base')
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
и в TensorFlow:
from transformers import RobertaTokenizer, TFRobertaModel
tokenizer = RobertaTokenizer.from_pretrained('roberta-base')
model = TFRobertaModel.from_pretrained('roberta-base')
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
Обучающие данные, используемые для этой модели, содержат много неотфильтрованного контента из интернета, который далёк от... Из neutral. Поэтому модель может иметь предвзятые предсказания:
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='roberta-base')
>>> unmasker("The man worked as a <mask>.")
[{'sequence': '<s>The man worked as a mechanic.</s>',
'score': 0.08702439814805984,
'token': 25682,
'token_str': 'Ġmechanic'},
{'sequence': '<s>The man worked as a waiter.</s>',
'score': 0.0819653645157814,
'token': 38233,
'token_str': 'Ġwaiter'},
{'sequence': '<s>The man worked as a butcher.</s>',
'score': 0.073323555290699,
'token': 32364,
'token_str': 'Ġbutcher'},
{'sequence': '<s>The man worked as a miner.</s>',
'score': 0.046322137117385864,
'token': 18678,
'token_str': 'Ġminer'},
{'sequence': '<s>The man worked as a guard.</s>',
'score': 0.040150221437215805,
'token': 2510,
'token_str': 'Ġguard'}]
>>> unmasker("The Black woman worked as a <mask>.")
[{'sequence': '<s>The Black woman worked as a waitress.</s>',
'score': 0.22177888453006744,
'token': 35698,
'token_str': 'Ġwaitress'},
{'sequence': '<s>The Black woman worked as a prostitute.</s>',
'score': 0.19288744032382965,
'token': 36289,
'token_str': 'Ġprostitute'},
{'sequence': '<s>The Black woman worked as a maid.</s>',
'score': 0.06498628109693527,
'token': 29754,
'token_str': 'Ġmaid'},
{'sequence': '<s>The Black woman worked as a secretary.</s>',
'score': 0.05375480651855469,
'token': 2971,
'token_str': 'Ġsecretary'},
{'sequence': '<s>The Black woman worked as a nurse.</s>',
'score': 0.05245552211999893,
'token': 9008,
'token_str': 'Ġnurse'}]
Этот уклон также повлияет на все точно настроенные версии этой модели.
Модель RoBERTa была предварительно обучена на объединении пяти наборов данных:
Вместе эти наборы данных весят 160 ГБ текста.
Тексты токенизируются с использованием байтовой версии Byte-Pair Encoding (BPE) и размера словаря 50 000. Входы модели принимают фрагменты из 512 последовательных токенов, которые могут охватывать документы. Начало нового документа отмечено <s>
, а конец одного — </s>
.
Подробности процедуры маскирования для каждого предложения следующие:
<mask>
.В отличие от BERT, маскирование выполняется динамически во время предварительного обучения (например, оно меняется на каждой эпохе и не фиксируется).
Модель обучалась на 1024 графических процессорах V100 в течение 500 тыс. шагов с размером пакета 8 тыс. и длиной последовательности 512. Используемый оптимизатор — Adam с коэффициентом обучения 6e-4, \(\beta_{1} = 0.9\), \(\beta_{2} = 0.98\) и \(\epsilon = 1e-6\), затуханием веса 0,01, прогревом коэффициента обучения в течение 24 000 шагов и линейным уменьшением коэффициента обучения после.
При точной настройке на последующих задачах эта модель достигает следующих результатов:
Результаты теста Glue:
Задача | MNLI | QQP | QNLI | SST-2 | CoLA | STS-B | MRPC | RTE |
---|---|---|---|---|---|---|---|---|
87.6 | 91.9 | 92.8 | 94.8 | 63.6 | 91.2 | 90.2 | 78.7 |
@article{DBLP:journals/corr/abs-1907-11692,
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )