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

OSCHINA-MIRROR/modelee-bert-base-cased

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

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

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

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

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

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

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

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

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

  • 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 запись и 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 )

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

Введение

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

Обновления

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

Участники

все

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

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