Эта модель представляет собой дистиллированную версию BERT базовой модели. Она была представлена в этой статье. Код для процесса дистилляции можно найти здесь. Эта модель не делает различий между английским и English.
DistilBERT — это модель трансформаторов, которая меньше и быстрее BERT. Она была предварительно обучена на том же корпусе в режиме самообучения с использованием BERT базовой модели в качестве учителя. Это означает, что она была предварительно обучена только на необработанных текстах без какой-либо маркировки людьми (поэтому она может использовать множество общедоступных данных) с помощью автоматического процесса для создания входных данных и меток из этих текстов с использованием базовой модели 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 токенов.
Подробности процедуры маскирования для каждого предложения следующие:
[MASK]
.Модель была обучена на 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 @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 )