Этот репозиторий содержит исходный код для наших выводов EMNLP 2020 Документ: Точная настройка домена в качестве эффективного регулятора.
В этой работе мы предлагаем новый тип регулятора для процесса тонкой настройки моделей с предварительным языком (LMS). Мы определяем потерю представлений об общем домене предварительно предварительно настройки во время точной настройки как формы катастрофического забывания . Способный термин действует как регулятор, который сохраняет большую часть знаний, запечатленных LM во время предварительной подготовки, предотвращая катастрофические забывчики.
Чтобы решить это, мы расширяем стандартный процесс тонкой настройки предварительно предварительно проведенного LMS с состязательной целью. Этот дополнительный термин убытков связан с состязательным классификатором, который различает между доменными и вне домена текстовые представления.
В домене : помеченный набор данных задачи ( основной ) под рукой
Вне домена : немеченые данные из другого домена ( вспомогательный )
Мы минимизируем потерю для конкретной задачи и в то же время максимизируем потерю классификатора домена, используя слой обращения градиента.
Функция потери, которую мы предлагаем, является следующим:
L After = L Main - λl домен
где L Main -это специфическая для задачи потери и L домен , что состязательная потеря, которая обеспечивает инвариантность текстовых представлений в разных областях, в то время как тонкая настройка. λ - настраиваемый гиперпараметр.

Эксперименты на 4 наборах данных Glue (COLA, MRPC, SST-2 и RTE)-два разных предварительных LMS (BERT и XLNET) демонстрируют улучшенную производительность по сравнению с стандартной тонкой настройкой. Мы эмпирически показываем, что состязательный термин действует как регулятор, который сохраняет большую часть знаний, захваченных LM во время предварительной подготовки, предотвращая катастрофические забывчики.
Создать среду (необязательно): в идеале вы должны создать среду для проекта.
conda create -n after_env python=3.6
conda activate after_env
Установите Pytorch 1.1.0 с желаемой версией CUDA, если вы хотите использовать графический процессор:
conda install pytorch==1.1.0 torchvision -c pytorch
Клонировать проект:
git clone https://github.com/GeorgeVern/AFTERV1.0.git
cd AFTERV1.0
Затем установите остальные требования:
pip install -r requirements.txt
Чтобы загрузить основные наборы данных, мы используем сценарий download_glue_data.py здесь. Вы можете выбрать наборы данных, используемые в статье, выполнив следующую команду:
python download_glue_data.py --data_dir './Datasets' --tasks 'CoLA,SST,RTE,MRPC
Путь по умолчанию для наборов данных составляет effev1.0/datazets, но можно использовать любой другой путь (должен согласиться с пути DATA_DIR , указанного в скрипте sys_config )
В качестве вспомогательных данных мы используем корпусы из различных доменов. Мы предоставляем сценарии для загрузки и предварительной обработки корпорации, используемых в наших экспериментах, в то время как любые другие корпусы также можно использовать.
Чтобы бежать после Берта, вам нужна следующая команда:
python after_fine-tune.py -i afterBert_finetune_cola_europarl --lambd 0.1
lambd относится к Lambda, весу функции потери сустава, которую мы используем.
В configs/ , вы можете увидеть список файлов YAML, которые мы использовали для экспериментов, а также могут изменить их гиперпараметры.
Если вы используете это репо в своем исследовании, пожалуйста, укажите статью:
@inproceedings{vernikos-etal-2020-domain,
title = "{D}omain {A}dversarial {F}ine-{T}uning as an {E}ffective {R}egularizer",
author = "Vernikos, Giorgos and
Margatina, Katerina and
Chronopoulou, Alexandra and
Androutsopoulos, Ion",
booktitle = "Findings of the Association for Computational Linguistics: EMNLP 2020",
year = "2020",
url = "https://www.aclweb.org/anthology/2020.findings-emnlp.278",
doi = "10.18653/v1/2020.findings-emnlp.278",
pages = "3103--3112",
}