Repositori ini berisi kode sumber untuk kertas temuan EMNLP 2020 kami: domain fine-tuning permusuhan sebagai pengatur penyatuan yang efektif.
Dalam karya ini, kami mengusulkan jenis pengatur pengatur waktu baru untuk proses penyempurnaan model bahasa pretrained (LMS). Kami mengidentifikasi hilangnya representasi domain umum dari LMS pretrained selama penyempurnaan sebagai bentuk lupa bencana . Istilah permusuhan bertindak sebagai regulteran yang melestarikan sebagian besar pengetahuan yang ditangkap oleh LM selama pretraining, mencegah lupa bencana.
Untuk mengatasinya, kami memperluas proses fine-tuning standar LMS pretrained dengan dengan tujuan permusuhan. Istilah kerugian tambahan ini terkait dengan classifier permusuhan, yang mendiskriminasi antara representasi teks dalam domain dan di luar domain .
In-domain : Dataset berlabel dari tugas ( utama ) yang ada
Out-of-Domain : Data yang tidak berlabel dari domain yang berbeda ( Auxiliary )
Kami meminimalkan kerugian khusus tugas dan pada saat yang sama memaksimalkan hilangnya domain classifier menggunakan lapisan pembalikan gradien.
Fungsi kerugian yang kami usulkan adalah sebagai berikut:
L setelah = l utama - domain λL
di mana l utama adalah kerugian khusus tugas dan d domain , kerugian permusuhan yang menegakkan invariansi representasi teks di berbagai domain, sementara penyesuaian. λ adalah hiperparameter yang dapat merdu.

Eksperimen pada 4 set data lem (COLA, MRPC, SST-2 dan RTE) dengan dua LMS pretrained yang berbeda (Bert dan XLNET) menunjukkan peningkatan kinerja dibandingkan fine-tuning standar. Kami menunjukkan secara empiris bahwa istilah permusuhan bertindak sebagai regulteran yang melestarikan sebagian besar pengetahuan yang ditangkap oleh LM selama pretraining, mencegah lupa bencana.
Buat lingkungan (opsional): Idealnya, Anda harus menciptakan lingkungan untuk proyek.
conda create -n after_env python=3.6
conda activate after_env
Instal Pytorch 1.1.0 dengan versi CUDA yang diinginkan jika Anda ingin menggunakan GPU:
conda install pytorch==1.1.0 torchvision -c pytorch
Klon proyek:
git clone https://github.com/GeorgeVern/AFTERV1.0.git
cd AFTERV1.0
Kemudian pasang sisa persyaratan:
pip install -r requirements.txt
Untuk mengunduh kumpulan data utama , kami menggunakan skrip download_glue_data.py dari sini. Anda dapat memilih set data yang digunakan di kertas dengan menjalankan perintah berikut:
python download_glue_data.py --data_dir './Datasets' --tasks 'CoLA,SST,RTE,MRPC
Jalur default untuk dataset adalah Afterv1.0/datasets tetapi jalur lain dapat digunakan (harus setuju dengan jalur DATA_DIR yang ditentukan dalam skrip sys_config )
Sebagai data tambahan kami menggunakan korpora dari berbagai domain. Kami menyediakan skrip untuk mengunduh dan melakukan preprocess korpora yang digunakan dalam percobaan kami, sementara korpora lain juga dapat digunakan.
Untuk berlari setelah dengan Bert, Anda memerlukan perintah berikut:
python after_fine-tune.py -i afterBert_finetune_cola_europarl --lambd 0.1
lambd mengacu pada lambda, berat fungsi kehilangan sendi yang kami gunakan.
Di configs/ , Anda dapat melihat daftar file YAML yang kami gunakan untuk percobaan dan juga dapat mengubah hyperparameters mereka.
Jika Anda menggunakan repo ini dalam riset Anda, silakan kutip kertas:
@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",
}