Dieses Repository enthält den Quellcode für unser EMNLP 2020-Erkenntnispapier: Domain Condversarial Fine-Tuning als effektiver Stammschütze.
In dieser Arbeit schlagen wir eine neue Art von Regularizer für den Feinabstimmungsprozess von Prescainained Language Models (LMS) vor. Wir identifizieren den Verlust von allgemeinen Domänen-Darstellungen von vorbereiteten LMs während der Feinabstimmung als Form des katastrophalen Vergessens . Der kontroverse Begriff fungiert als Regularizer, der den größten Teil des von der LM erfassten Wissens während der Vorbereitung bewahrt und das katastrophale Vergessen verhindert.
Um es anzugehen, erweitern wir den Standard-Feinabstimmungsprozess von vorbereiteten LMs mit einem kontroversen Ziel. Dieser zusätzliche Verlustbegriff hängt mit einem kontroversen Klassifizierer zusammen, der zwischen In-Domänen- und Out-of-Domain -Textdarstellungen unterscheidet.
In-Domain : Dataset der Task ( Haupt ) zur Hand
Out-of-Domain : Unbezeichnete Daten aus einer anderen Domäne ( Auxiliary )
Wir minimieren den aufgabenspezifischen Verlust und maximieren gleichzeitig den Verlust des Domänenklassifikators mithilfe einer Gradientenumkehrschicht.
Die von uns vorgeschlagene Verlustfunktion ist die folgende:
L nach = l main - λl Domäne
Wenn L Main der aufgabenspezifische Verlust und der L- Domäne ist, ist ein kontroverser Verlust, der die Invarianz von Textdarstellungen in verschiedenen Bereichen erzwingt, während der Feinabstimmung. λ ist ein abstimmbares Hyperparameter.

Experimente mit 4 Klebstoffdatensätzen (COLA, MRPC, SST-2 und RTE) mit zwei verschiedenen vorbereiteten LMs (Bert und XLNET) zeigen eine verbesserte Leistung gegenüber Standardfeinabfuhr. Wir zeigen empirisch, dass der kontroverse Begriff als Regularizer fungiert, der den größten Teil des von der LM erfassten Wissens während der Vorbereitung bewahrt und das katastrophale Vergessen verhindert.
Umgebung erstellen (optional): Idealerweise sollten Sie eine Umgebung für das Projekt schaffen.
conda create -n after_env python=3.6
conda activate after_env
Installieren Sie Pytorch 1.1.0 mit der gewünschten CUDA -Version, wenn Sie die GPU verwenden möchten:
conda install pytorch==1.1.0 torchvision -c pytorch
Klonen Sie das Projekt:
git clone https://github.com/GeorgeVern/AFTERV1.0.git
cd AFTERV1.0
Installieren Sie dann den Rest der Anforderungen:
pip install -r requirements.txt
Um die Hauptdatensätze herunterzuladen, verwenden wir hier das Skript download_glue_data.py . Sie können die im Papier verwendeten Datensätze auswählen, indem Sie den folgenden Befehl ausführen:
python download_glue_data.py --data_dir './Datasets' --tasks 'CoLA,SST,RTE,MRPC
Der Standardpfad für die Datensätze ist Afterv1.0/Datensätze, aber jeder andere Pfad kann verwendet werden (sollte mit dem im Skript sys_config angegebenen DATA_DIR -Pfad übereinstimmen)
Als Hilfsdaten verwenden wir Korpora aus verschiedenen Domänen. Wir stellen Skripte zur Herunterladen und Vorverarbeitung der in unseren Experimenten verwendeten Korpora zur Verfügung, während auch andere Korpora verwendet werden können.
Um mit Bert nachzulaufen, benötigen Sie den folgenden Befehl:
python after_fine-tune.py -i afterBert_finetune_cola_europarl --lambd 0.1
lambd bezieht sich auf Lambda, das Gewicht der von uns verwendeten Gelenkverlustfunktion.
In configs/ können Sie eine Liste von YAML -Dateien sehen, die wir für die Experimente verwendet haben, und auch deren Hyperparameter ändern.
Wenn Sie dieses Repo in Ihrer Forschung verwenden, zitieren Sie bitte das Papier:
@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",
}