1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/modelee-roberta-base

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

RoBERTa базовая модель

Предварительно обученная модель на английском языке с использованием задачи маскированного языкового моделирования (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 была предварительно обучена на объединении пяти наборов данных:

  • BookCorpus — набор данных, состоящий из 11 038 неопубликованных книг;
  • Английская Википедия (исключая списки, таблицы и заголовки);
  • CC-News — набор данных, содержащий 63 миллиона новостных статей на английском языке, собранных в период с сентября 2016 года по февраль 2019 года;
  • OpenWebText — открытый исходный код воссоздания набора данных WebText, используемого для обучения GPT-2;
  • Stories — набор данных, содержащий подмножество данных CommonCrawl, отфильтрованных так, чтобы соответствовать стилю историй Winograd schemas.

Вместе эти наборы данных весят 160 ГБ текста.

Процедура обучения

Предварительная обработка

Тексты токенизируются с использованием байтовой версии Byte-Pair Encoding (BPE) и размера словаря 50 000. Входы модели принимают фрагменты из 512 последовательных токенов, которые могут охватывать документы. Начало нового документа отмечено <s>, а конец одного — </s>.

Подробности процедуры маскирования для каждого предложения следующие:

  • 15% токенов маскируются.
  • В 80% случаев замаскированные токены заменяются на <mask>.
  • В 10% случаев замаскированные токены заменяются случайным токеном (отличным от того, который они заменяют).
  • В оставшихся 10% случаях замаскированные токены остаются как есть.

В отличие от 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

BibTeX запись и информация о цитировании

@article{DBLP:journals/corr/abs-1907-11692,

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/modelee-roberta-base.git
git@api.gitlife.ru:oschina-mirror/modelee-roberta-base.git
oschina-mirror
modelee-roberta-base
modelee-roberta-base
main