Учебное пособие было дано 2 июня в NAACL 2019 в Миннеаполисе, штат Миннесота, США, Себастьян Рудер, Мэтью Питерс, Свабха Сэйамдипта и Томас Вольф.
Вот веб -страница учебников NAACL для получения дополнительной информации.
Слайды для учебника можно найти здесь: https://tinyurl.com/naacltransfer.
Записную книжку Google Colab со всем кодом для учебника можно найти здесь: https://tinyurl.com/naacltransfercolab.
Настоящий репозиторий также можно получить со следующим коротким URL: https://tinyurl.com/naacltransfercode
Классическая парадигма машинного обучения под контролем основана на обучении в изоляции. Одна предиктивная модель для задачи с использованием одного набора данных. Этот подход требует большого количества примеров обучения и лучше всего подходит для четко определенных и узких задач. Передаточное обучение относится к набору методов, которые расширяют этот подход, используя данные из дополнительных доменов или задач для обучения модели с лучшими свойствами обобщения.
За последние два года область обработки естественного языка (NLP) стала свидетелем появления нескольких методов и архитектур обучения передачи, которые значительно улучшили современные задачи в широком диапазоне задач NLP.
Эти улучшения вместе с широкой доступностью и легкостью интеграции этих методов напоминают факторы, которые привели к успеху предварительно предварительно встраиваемых слов и предварительной подготовки ImageNet в компьютерном зрении, и указывают на то, что эти методы, вероятно, станут общим инструментом в ландшафте НЛП, а также важным направлением исследования.
Мы представим обзор современных методов обучения переноса в НЛП, как модели предварительно обучены, какую информацию они изучают, а также рассмотрены примеры и тематические исследования о том, как эти модели могут быть интегрированы и адаптированы в нижестоящих задачах НЛП.
Эта кодовая база пытается представить самым простым и компактным способом некоторые из основных методов обучения передачи, которые появились за последние годы. Код в этом хранилище не пытается быть современным. Тем не менее, были предприняты усилия для достижения разумных результатов и с некоторыми модификациями, чтобы быть конкурентоспособными с текущим состоянием искусства.
Были приложены особые усилия
В настоящее время кодовая база включает в себя:
pretraining_model.py : модель трансформатора с GPT-2-подобной архитектурой в качестве основной предварительно предварительно подготовленной модели;pretraining_train.py : предварительный сценарий для обучения этой модели с целью моделирования языка на выборе крупных наборов данных (Wikitext-103, SimpleBooks-92) с использованием распределенного обучения, если таковые имеются;finetuning_model.py : несколько архитектур, основанных на модели трансформатора для точной настройки (с классификационной головкой сверху, с адаптерами);finetuning_train.py : сценарий тонкой настройки, чтобы точно настроить эти архитектуры на задаче классификации (IMDB). Чтобы использовать эту кодовую базу, просто клонируйте репозиторий GitHub и установите такие требования, как это:
git clone https://github.com/huggingface/naacl_transfer_learning_tutorial
cd naacl_transfer_learning_tutorial
pip install -r requirements.txt Чтобы предварительно тренировать трансформатор, запустите сценарий pretraining_train.py , как это:
python ./pretraining_train.pyили используя распределенное обучение, подобное этому (для сервера 8 графических процессоров):
python -m torch.distributed.launch --nproc_per_node 8 ./pretraining_train.pyСценарий предварительного обучения будет:
wikitext-103 для предварительного обучения (по умолчанию),./runs ,Предварительная подготовка к проверке ~ 29 на Wikitext-103 займет около 15 часов на 8 v100 графических процессоров (можно остановить ранее). Если вы заинтересованы в SOTA, есть несколько причин, по которой недоумение проверки немного выше, чем эквивалентное недоумение трансформатора-XL (около 24). Основная причина-это использование открытого словаря (подлоны для Bert Tokenizer) вместо закрытого словаря (см. В этом сообщении в блоге Себастьян Мильке для некоторого объяснения)
Доступны различные параметры предварительного обучения, вы можете перечислить их с помощью:
python ./pretraining_train.py --help Чтобы точно настроить предварительно обученный трансформатор, запустите скрипт finetuning_train.py , как это:
python ./finetuning_train.py --model_checkpoint PATH-TO-YOUR-PRETRAINED-MODEL-FOLDER PATH-TO-YOUR-PRETRAINED-MODEL-FOLDER может быть, например ./runs/May17_17-47-12_my_big_server
или используя распределенное обучение, подобное этому (для сервера 8 графических процессоров):
python -m torch.distributed.launch --nproc_per_node 8 ./finetuning_train.py --model_checkpoint PATH-TO-YOUR-PRETRAINED-MODEL-FOLDERДоступны различные варианты тонкой настройки, вы можете перечислить их с помощью:
python ./finetuning_train.py --help