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

OSCHINA-MIRROR/modelee-bert-base-uncased

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

BERT базовая модель (uncased)

Предварительно обученная модель на английском языке с использованием задачи маскированного языкового моделирования (MLM). Она была представлена в этой статье и впервые выпущена в этом репозитории. Эта модель не делает различий между английскими и прописными буквами.

Отказ от ответственности: команда, выпускающая BERT, не писала карточку модели для этой модели, поэтому эта карточка модели была написана командой Hugging Face.

Описание модели

BERT — это модель трансформаторов, предварительно обученная на большом корпусе данных на английском языке в режиме самообучения. Это означает, что она была предварительно обучена только на необработанных текстах без какой-либо маркировки людьми (поэтому она может использовать множество общедоступных данных) с помощью автоматического процесса для создания входных данных и меток из этих текстов. Точнее, она была предварительно обучена двум задачам:

  • Маскированное языковое моделирование (MLM): берётся предложение, модель случайным образом маскирует 15% слов во входном предложении, а затем пропускает всё замаскированное предложение через модель и должна предсказать замаскированные слова. Это отличается от традиционных рекуррентных нейронных сетей (RNN), которые обычно видят слова одно за другим, или от авторегрессивных моделей, таких как GPT, которые внутренне маскируют будущие токены. Это позволяет модели изучить двунаправственное представление предложения.
  • Предсказание следующего предложения (NSP): модели объединяют два замаскированных предложения в качестве входных данных во время предварительного обучения. Иногда они соответствуют предложениям, которые были рядом друг с другом в исходном тексте, иногда нет. Модель должна предсказать, следовали ли два предложения друг за другом или нет.

Таким образом, модель изучает внутреннее представление английского языка, которое затем можно использовать для извлечения функций, полезных для последующих задач: если у вас есть набор данных помеченных предложений, например, вы можете обучить стандартный классификатор, используя функции, созданные моделью 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 токенов.

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

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

Предварительное обучение

Модель была обучена на 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 запись и информация о цитировании

@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 )

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

Введение

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

Обновления

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

Участники

все

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

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