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

OSCHINA-MIRROR/modelee-distilbert-base-uncased

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

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

Эта модель представляет собой дистиллированную версию BERT базовой модели. Она была представлена в этой статье. Код для процесса дистилляции можно найти здесь. Эта модель не делает различий между английским и English.

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

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

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

Таким образом, модель изучает то же внутреннее представление английского языка, что и её модель-учитель, но при этом быстрее выполняет вывод или последующие задачи.

Предназначение и ограничения

Вы можете использовать необработанную модель для маскированного моделирования языка или предсказания следующего предложения, но в основном она предназначена для точной настройки на последующей задаче. См. модельный хаб, чтобы найти версии с точной настройкой для интересующей вас задачи.

Обратите внимание, что эта модель в первую очередь предназначена для точной настройки задач, использующих всё предложение (потенциально замаскированное) для принятия решений, таких как классификация последовательностей, классификация токенов или ответы на вопросы. Для таких задач, как генерация текста, следует обратить внимание на такие модели, как GPT2.

Как использовать

Вы можете напрямую использовать эту модель с конвейером для маскированного языкового моделирования:

>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='distilbert-base-uncased')
>>> unmasker("Hello I'm a [MASK] model.")

[{'sequence': "[CLS] hello i'm a role model. [SEP]",
  'score': 0.05292855575680733,
  'token': 2535,
  'token_str': 'role'},
 {'sequence': "[CLS] hello i'm a fashion model. [SEP]",
  'score': 0.03968575969338417,
  'token': 4827,
  'token_str': 'fashion'},
 {'sequence': "[CLS] hello i'm a business model. [SEP]",
  'score': 0.034743521362543106,
  'token': 2449,
  'token_str': 'business'},
 {'sequence': "[CLS] hello i'm a model model. [SEP]",
  'score': 0.03462274372577667,
  'token': 2944,
  'token_str': 'model'},
 {'sequence': "[CLS] hello i'm a modeling model. [SEP]",
  'score': 0.018145186826586723,
  'token': 11643,
  'token_str': 'modeling'}]

Вот как использовать эту модель для получения признаков данного текста в PyTorch:

from transformers import DistilBertTokenizer, DistilBertModel
tokenizer = DistilBertTokenizer.from_pretrained('distilbert-base-uncased')
model = DistilBertModel.from_pretrained("distilbert-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 DistilBertTokenizer, TFDistilBertModel
tokenizer =
``` **Ограничения и предвзятость**

Даже если обучающие данные, использованные для этой модели, можно охарактеризовать как достаточно нейтральные, эта модель может иметь предвзятые прогнозы. Она также наследует некоторые из [предрассудков своей базовой модели](https://huggingface.co/bert-base-uncased#limitations-and-bias).

```python
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='distilbert-base-uncased')
>>> unmasker("The White man worked as a [MASK].")

[{'sequence': '[CLS] the white man worked as a blacksmith. [SEP]',
  'score': 0.1235365942120552,
  'token': 20987,
  'token_str': 'blacksmith'},
 {'sequence': '[CLS] the white man worked as a carpenter. [SEP]',
  'score': 0.10142576694488525,
  'token': 10533,
  'token_str': 'carpenter'},
 {'sequence': '[CLS] the white man worked as a farmer. [SEP]',
  'score': 0.04985016956925392,
  'token': 7500,
  'token_str': 'farmer'},
 {'sequence': '[CLS] the white man worked as a miner. [SEP]',
  'score': 0.03932540491223335,
  'token': 18594,
  'token_str': 'miner'},
 {'sequence': '[CLS] the white man worked as a butcher. [SEP]',
  'score': 0.03351764753460884,
  'token': 14998,
  'token_str': 'butcher'}]

>>> unmasker("The Black woman worked as a [MASK].")

[{'sequence': '[CLS] the black woman worked as a waitress. [SEP]',
  'score': 0.13283951580524445,
  'token': 13877,
  'token_str': 'waitress'},
 {'sequence': '[CLS] the black woman worked as a nurse. [SEP]',
  'score': 0.12586183845996857,
  'token': 6821,
  'token_str': 'nurse'},
 {'sequence': '[CLS] the black woman worked as a maid. [SEP]',
  'score': 0.11708822101354599,
  'token': 10850,
  'token_str': 'maid'},
 {'sequence': '[CLS] the black woman worked as a prostitute. [SEP]',
  'score': 0.11499975621700287,
  'token': 19215,
  'token_str': 'prostitute'},
 {'sequence': '[CLS] the black woman worked as a housekeeper. [SEP]',
  'score': 0.04722772538661957,
  'token': 22583,
  'token_str': 'housekeeper'}]

Этот предрассудок также повлияет на все доработанные версии этой модели.

Обучающие данные

DistilBERT был предварительно обучен на тех же данных, что и BERT, которые представляют собой BookCorpus — набор данных, состоящий из 11 038 неопубликованных книг и английской Википедии (исключая списки, таблицы и заголовки).

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

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

Тексты преобразуются в нижний регистр и токенизируются с помощью WordPiece, а размер словаря составляет 30 000. Затем входные данные модели имеют следующий вид:

[CLS] Sentence A [SEP] Sentence B 

С вероятностью 0,5 предложение A и предложение B соответствуют двум последовательным предложениям в исходном корпусе, а в других случаях это другое случайное предложение в корпусе. Обратите внимание, что то, что здесь считается предложением, представляет собой непрерывный фрагмент текста, обычно длиннее одного предложения. Единственное ограничение заключается в том, что объединённая длина двух «предложений» составляет менее 512 токенов.

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

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

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

Модель была обучена на 8 16 ГБ V100 в течение 90 часов. См. код обучения для получения подробной информации о всех гиперпараметрах.

Результаты оценки

При доработке для последующих задач эта модель достигает следующих результатов:

Результаты теста Glue:

Задача MNLI QQP QNLI SST-2 CoLA STS-B MRPC RTE
82.2 88.5 89.2 91.3 51.3 85.8 87.5 59.9

BibTeX запись и...

Здесь текст обрывается. Возможно, это связано с тем, что в запросе не было указано, какой именно текст нужно перевести. ```bibtex @article{Sanh2019DistilBERTAD, title={DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter}, author={Victor Sanh и Lysandre Debut и Julien Chaumond и Thomas Wolf}, journal={ArXiv}, year={2019}, volume={abs/1910.01108} }


<a href="https://huggingface.co/exbert/?model=distilbert-base-uncased">
    <img width="300px" src="https://cdn-media.huggingface.co/exbert/button.png">
</a>

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

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

Введение

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

Обновления

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

Участники

все

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

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