Code pour reproduire le papier "Multifit: modélisation de langage multilingue efficace Fine-réglage".
Voici un article de blog avec une présentation à notre article: http://nlp.fast.ai/classification/2019/09/10/multifit.html
Ce référentiel contient un petit cadre au-dessus de Fastai v1.0; Le code est compatible avec V1.0.47 jusqu'à V1.0.59 (le courant en 2019.11.03). Les résultats entre les versions FASTAI peuvent différer en raison des optimisations ajoutées à Fastai. Nos modèles ont été formés à l'aide de 1.0.47.
Le cadre a été réécrit pour faciliter l'utilisation avec le plus récent Fastai.
Nous avons publié 7 modèles linguistiques formés aux décharges Wikipedia correspondantes:
Pour récupérer le modèle, utilisez simplement une fonction multifit.from_pretrained . Voici quelques exemples de carnets montrant comment former un classificateur à l'aide d'un modèle pré-entraîné.
Résultats de la classification des documents sur l'ensemble de données MLDOC Schwenk et Li, 2018
| Modèle | de | es | frousser | il | ja | ru | zh |
|---|---|---|---|---|---|---|---|
| LASER | 92.70 | 88,75 | 90.80 | 85,93 | 85.15 | 84.65 | 88,98 |
| Multiberpre | 94.0 | 95.15 | 93.20 | 85,82 | 87.48 | 86.85 | 90,72 |
| Multifit | 95,90 | 96.07 | 94.77 | 90.25 | 90.03 | 87,65 | 92.52 |
Résultats de la classification des sentiments sur l'ensemble de données CLS Prettenhofer et Stein, 2010
| De | Frousser | Ja | |
|---|---|---|---|
| Multiberpre | 86.05 / 84.90 / 82.00 | 86.15 / 86.90 / 86.65 | 80.87 / 82.83 / 79.95 |
| Multifit | 93.19 / 90.54 / 93.00 | 91.25 / 89.55 / 93.40 | 86.29 / 85.75 / 86.59 |
Vous pouvez utiliser les modèles pré-entraînés avec la bibliothèque Fastai comme suit:
from fastai.text import *
import multifit
exp = multifit.from_pretrained("name of the model")
fa_config = exp.pretrain_lm.tokenizer.get_fastai_config(add_open_file_processor=True)
data_lm = (TextList.from_folder(imdb_path, **fa_config)
.filter_by_folder(include=['train', 'test', 'unsup'])
.split_by_rand_pct(0.1)
.label_for_lm()
.databunch(bs=bs))
learn = exp.finetune_lm.get_learner(data_lm)
# learn is a preconfigured fastai learner with a pretrained model loaded
learn.fit_one_cycle(10)
learn.save_encoder("enc")
...
Ce référentiel est une réécriture des scripts de formation originaux, il manque donc tous les scripts utilisés dans le papier. Nous travaillons sur un port vers Fastai v2.0, puis nous ajouterons les scripts qui montrent comment reproduire les résultats. Si vous devez utiliser les scripts plus rapidement, vous pouvez accéder aux scripts d'origine ici.
@article{Eisenschlos2019MultiFit,
title={MultiFiT: Efficient Multi-lingual Language Model Fine-tuning},
author={Julian Eisenschlos, Sebastian Ruder, Piotr Czapla, Marcin Kardas, Sylvain Gugger, Jeremy Howard}
journal={Proceedings of EMNLP-IJCNLP 2019},
year={2019}
}