-
Notifications
You must be signed in to change notification settings - Fork 776
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* 01/4 start * 1/4 finished * 1/5 finished * 1/5 update toc * 1/6 finished * 1/7 finished * 1/8 finished * 1/9 finished * 1/4 fix * toc update
- Loading branch information
Showing
7 changed files
with
283 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# Модели энкодеров | ||
|
||
<Youtube id="MUqNwgPjJvQ" /> | ||
|
||
Энкодеры используют только компонент кодировщика трансформера. На каждом этапе слой внимания может использовать все слова исходного предложения. Эти модели часто характеризуют как имеющие двунаправленное внимание ("bi-directional attention"), и часто называют моделями *автоэнкодеров*. | ||
|
||
Предварительное обучение этих моделей обычно заключаетс в том, чтобы как-то исказить данное предложение (например, путем маскировки в нем случайных слов) и поставить перед моделью задачу найти или восстановить исходное предложение. | ||
|
||
Энкодеры лучше всего подходят для задач, требующих _понимания_ всего предложения, таких как классификация предложений, распознавание именованных сущностей (и, в более общем смысле, классификация слов) и ответы на вопросы с извлечением информации из контекста. | ||
|
||
К представителям этого семейства моделей относятся: | ||
|
||
- [ALBERT](https://huggingface.co/transformers/model_doc/albert.html) | ||
- [BERT](https://huggingface.co/transformers/model_doc/bert.html) | ||
- [DistilBERT](https://huggingface.co/transformers/model_doc/distilbert.html) | ||
- [ELECTRA](https://huggingface.co/transformers/model_doc/electra.html) | ||
- [RoBERTa](https://huggingface.co/transformers/model_doc/roberta.html) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# Модели декодеров | ||
|
||
<Youtube id="d_ixlCubqQw" /> | ||
|
||
Декодировщики используют только компонент декодер трансформера. На каждом этапе для текущего слова слой внимания может получить доступ только к словам, которые были расположены до текущего в предложении. Такие модели часто называются *авторегрессионными моделями*. | ||
|
||
Процесс предобучения декодеров обычно заключается в предсказании следующего слова в предложении. ё | ||
|
||
Такие модели лучше всего подходят для задач, связанных с генерацией текста. | ||
|
||
Представителями этого семейства моделей являются: | ||
|
||
- [CTRL](https://huggingface.co/transformers/model_doc/ctrl.html) | ||
- [GPT](https://huggingface.co/transformers/model_doc/gpt.html) | ||
- [GPT-2](https://huggingface.co/transformers/model_doc/gpt2.html) | ||
- [Transformer XL](https://huggingface.co/transformers/model_doc/transformerxl.html) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# Модели вида "seq2seq" | ||
|
||
<Youtube id="0_4KEb08xrE" /> | ||
|
||
Энкодер-декодер модели (также называемые *sequence-to-sequence models*) используют обе части трансформера. На каждом этапе слой внимания энкодера получает доступ ко всем словам в исходной последовательности, тогда как слой внимания декодера получает доступ только к тем словам, которые позиционированы до текущего слова. | ||
|
||
Предобучение таких моделей может быть проведено по аналогии с процессом предобучения энкодера или декодера, но обычно это происходит сложнее. Например, модель [T5](https://huggingface.co/t5-base) была предобучена путем замены случайных фрагментов текста (фрагменты могут содержать несколько слов) на специальную маску, цель модели - предсказать текст, который заменила маска. | ||
|
||
Модели seq2seq лучше всего подходят для задач генерации новых предложений, зависящих от входного массива данных, например: саммаризация текста, перевод или генерация ответов на вопросы. | ||
|
||
Представителями этого семейства являются: | ||
|
||
- [BART](https://huggingface.co/transformers/model_doc/bart.html) | ||
- [mBART](https://huggingface.co/transformers/model_doc/mbart.html) | ||
- [Marian](https://huggingface.co/transformers/model_doc/marian.html) | ||
- [T5](https://huggingface.co/transformers/model_doc/t5.html) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
# Предвзятости и ограничения | ||
|
||
<DocNotebookDropdown | ||
classNames="absolute z-10 right-0 top-0" | ||
options={[ | ||
{label: "Google Colab", value: "https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/chapter1/section8.ipynb"}, | ||
{label: "Aws Studio", value: "https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/chapter1/section8.ipynb"}, | ||
]} /> | ||
|
||
Если вы намерены использовать предварительно обученную модель или точно настроенную версию в рабочей среде, имейте в виду, что, хотя эти модели являются мощными инструментами, они имеют ограничения. Самая большая из них заключается в том, что для предварительной подготовки на больших объемах данных исследователи часто очищают весь контент, который они могут найти, беря как лучшее, так и худшее из того, что доступно в Интернете. | ||
|
||
Для иллюстрации вернемся к примеру пайплайна `fill-mask` с моделью BERT: | ||
|
||
```python | ||
from transformers import pipeline | ||
|
||
unmasker = pipeline("fill-mask", model="bert-base-uncased") | ||
result = unmasker("This man works as a [MASK].") | ||
print([r["token_str"] for r in result]) | ||
|
||
result = unmasker("This woman works as a [MASK].") | ||
print([r["token_str"] for r in result]) | ||
``` | ||
|
||
```python out | ||
['lawyer', 'carpenter', 'doctor', 'waiter', 'mechanic'] | ||
['nurse', 'waitress', 'teacher', 'maid', 'prostitute'] | ||
``` | ||
|
||
На просьбу вставить пропущенное слово в этих двух предложениях модель дает только один ответ без гендерной принадлежности (официант/официантка). Другие рабочие профессии обычно ассоциируются с одним конкретным полом — и да, проститутка попала в топ-5 вариантов, которые модель ассоциирует с "женщиной" и "работой". Это происходит даже несмотря на то, что BERT — одна из редких моделей трансформеров, созданная не путем сбора данных со всего Интернета, а с использованием явно нейтральных данных (он обучен на [английской Википедии](https://huggingface.co/datasets/wikipedia) и наборе данных [BookCorpus](https://huggingface.co/datasets/bookcorpus). | ||
|
||
Поэтому, когда вы используете эти инструменты, вам нужно помнить, что исходная модель, которую вы используете, может очень легко генерировать сексистский, расистский или гомофобный контент. Тонкая настройка модели на ваших данных не избавит вас от этой внутренней предвзятости. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# Итоги | ||
|
||
В этой главе вы увидели, как подходить к различным задачам NLP, используя высокоуровневую функцию `pipeline()` из библиотеки 🤗 Transformers. Вы также увидели, как искать и использовать модели в Hub, а также как использовать Inference API для тестирования моделей прямо в браузере. | ||
|
||
Мы обсудили, как трансформеры работают на высоком уровне, и поговорили о важности трансферного обучения и тонкой настройки. Ключевым аспектом является то, что вы можете использовать всю архитектуру или только энкодер или декодер, в зависимости от того, какую задачу вы хотите решить. Следующая таблица резюмирует это: | ||
|
||
|
||
| Модель | Примеры | Задачи | | ||
|-----------------|--------------------------------------------|----------------------------------------------------------------------------------| | ||
| Энкодер | ALBERT, BERT, DistilBERT, ELECTRA, RoBERTa | Классификация предложений, распознавание именованных сущностей, генерация ответов на вопросы с извлечением информации | | ||
| Декодер | CTRL, GPT, GPT-2, Transformer XL | Генерация текста | | ||
| Энкодер-декодер | BART, T5, Marian, mBART | Саммаризация, перевод, генеративный подход к ответам на вопросы | |