Este repositorio contiene código fuente para nuestro documento de hallazgos EMNLP 2020: ajuste fino adversario de dominio como un regularizador efectivo.
En este trabajo, proponemos un nuevo tipo de regularizador para el proceso de ajuste de los modelos de lenguaje previos a la aparición (LMS). Identificamos la pérdida de representaciones de dominio general de los LM previos al detrota durante el ajuste fino como una forma de olvido catastrófico . El término adversario actúa como un regularizador que preserva la mayor parte del conocimiento capturado por el LM durante el pretrénmente, evitando el olvido catastrófico.
Para abordarlo, ampliamos el proceso estándar de ajuste fino de los LMs previos al metro con un objetivo adversario. Este término de pérdida adicional está relacionado con un clasificador adversario, que discrimina entre las representaciones de texto en dominio y fuera del dominio .
En el dominio : conjunto de datos etiquetado de la tarea ( principal ) en cuestión
Out Dominio : datos no etiquetados de un dominio diferente ( auxiliar )
Minimizamos la pérdida específica de la tarea y al mismo tiempo maximizamos la pérdida del clasificador de dominio utilizando una capa de inversión de gradiente.
La función de pérdida que proponemos es la siguiente:
L After = L Main - Dominio λl
Donde L Main es la pérdida específica de la tarea y el dominio L, una pérdida de confrontación que hace cumplir la invariancia de las representaciones de texto en diferentes dominios, durante el ajuste. λ es un hiperparámetro sintonizable.

Los experimentos en 4 conjuntos de datos de pegamento (COLA, MRPC, SST-2 y RTE) se centraron en dos LMS de pretrados diferentes (Bert y XLNet) demuestran un rendimiento mejorado sobre el ajuste estándar. Mostramos empíricamente que el término adversario actúa como un regularizador que preserva la mayor parte del conocimiento capturado por el LM durante el pretrénmente, evitando el olvido catastrófico.
Crear entorno (opcional): idealmente, debe crear un entorno para el proyecto.
conda create -n after_env python=3.6
conda activate after_env
Instale Pytorch 1.1.0 con la versión CUDA deseada si desea usar la GPU:
conda install pytorch==1.1.0 torchvision -c pytorch
Clon el proyecto:
git clone https://github.com/GeorgeVern/AFTERV1.0.git
cd AFTERV1.0
Luego instale el resto de los requisitos:
pip install -r requirements.txt
Para descargar los conjuntos de datos principales , usamos el script download_glue_data.py desde aquí. Puede elegir los conjuntos de datos utilizados en el documento ejecutando el siguiente comando:
python download_glue_data.py --data_dir './Datasets' --tasks 'CoLA,SST,RTE,MRPC
La ruta predeterminada para los conjuntos de datos es Afterv1.0/DataSets, pero se puede usar cualquier otra ruta (debería estar de acuerdo con la ruta DATA_DIR especificada en el script sys_config )
Como datos auxiliares usamos corpus de varios dominios. Proporcionamos scripts para descargar y preprocesar los corpus utilizados en nuestros experimentos, mientras que cualquier otro corporativo también puede usarse.
Para ejecutar después con Bert, necesita el siguiente comando:
python after_fine-tune.py -i afterBert_finetune_cola_europarl --lambd 0.1
lambd se refiere a Lambda, el peso de la función de pérdida de articulaciones que usamos.
En configs/ , puede ver una lista de archivos YAML que utilizamos para los experimentos y también puede cambiar sus hiperparámetros.
Si usa este repositorio en su investigación, cite el documento:
@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",
}