该存储库包含我们的EMNLP 2020发现论文的源代码:作为有效的正规器的域名微调。
在这项工作中,我们建议一种新型的常规器,用于预审前的语言模型(LMS)。我们将验证的LMS在微调过程中丢失是灾难性遗忘的一种形式。对抗性术语充当正规化器,可保留LM在训练过程中捕获的大多数知识,从而阻止了灾难性的遗忘。
为了解决这个问题,我们以对抗性目标扩展了预验证的LMS的标准微调过程。该额外的损失项与对抗性分类器有关,该分类器区分域内和室外文本表示。
内域:手头任务(主)的数据集
外域:来自不同域的未标记数据(辅助)
我们最大程度地减少了特定于任务的损失,同时使用梯度反转层最大程度地提高了域分类器的损失。
我们提出的损失函数如下:
l after = l主-λl域
其中l主要是特定于任务的损失和l领域,具有对抗性损失,在微调的同时,在不同域中实现了文本表示的不变性。 λ是可调的超参数。

在4个胶水数据集(COLA,MRPC,SST-2和RTE)上进行的实验Wιth两个不同的LMS(BERT和XLNET)表明,与标准微调相比,性能提高了。我们从经验上表明,对抗性术语充当正规器,可保留LM在预训练期间捕获的大多数知识,从而阻止了灾难性的遗忘。
创建环境(可选):理想情况下,您应该为项目创建一个环境。
conda create -n after_env python=3.6
conda activate after_env
如果要使用GPU,则安装带有所需CUDA版本的Pytorch 1.1.0 :
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
数据集的默认路径是afterv1.0/数据集,但可以使用任何其他路径(应与sys_config脚本中指定的DATA_DIR路径一致)
作为辅助数据,我们使用来自各个域的语料库。我们提供脚本以下载和预处理我们实验中使用的语料库,而其他任何语料库也可以使用。
要与Bert一起运行,您需要以下命令:
python after_fine-tune.py -i afterBert_finetune_cola_europarl --lambd 0.1
lambd是指我们使用的关节损失函数的重量。
在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",
}