multifit
1.0.0
代碼重現論文“多重:有效的多語言語言模型微調”。
這是一篇博客文章,介紹了我們的論文:http://nlp.fast.ai/classification/2019/09/10/multifit.html
該存儲庫在Fastai V1.0頂部包含一個小框架;該代碼與v1.0.47兼容,最大為v1.0.59(截至2019.11.03起的電流)。 FastAI版本之間的結果可能會因添加了FastAi的優化而有所不同。使用1.0.47對我們的模型進行了培訓。
重寫該框架以使其更容易與最新的Fastai一起使用。
我們發布了7種對相應的Wikipedia轉儲訓練的語言模型:
要獲取模型,只需使用multifit.from_pretrained函數即可。以下是一些示例筆記本,其中顯示瞭如何使用驗證的型號訓練分類器。
MLDOC數據集Schwenk和Li上的文檔分類結果,2018年
| 模型 | de | es | fr | 它 | JA | ru | ZH |
|---|---|---|---|---|---|---|---|
| 雷射 | 92.70 | 88.75 | 90.80 | 85.93 | 85.15 | 84.65 | 88.98 |
| Multibert | 94.0 | 95.15 | 93.20 | 85.82 | 87.48 | 86.85 | 90.72 |
| 多率 | 95.90 | 96.07 | 94.77 | 90.25 | 90.03 | 87.65 | 92.52 |
CLS數據集Frettenhofer和Stein上的情感分類結果,2010年
| de | fr | JA | |
|---|---|---|---|
| Multibert | 86.05 / 84.90 / 82.00 | 86.15 / 86.90 / 86.65 | 80.87 / 82.83 / 79.95 |
| 多率 | 93.19 / 90.54 / 93.00 | 91.25 / 89.55 / 93.40 | 86.29 / 85.75 / 86.59 |
您可以將驗證的模型與Fastai庫一起使用,如下所示:
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")
...
該存儲庫是對原始培訓腳本的重寫,因此缺少論文中使用的所有腳本。我們正在使用fastai v2.0的端口工作,然後我們將添加顯示如何重現結果的腳本。如果您需要更快地使用腳本,則可以在此處訪問原始腳本。
@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}
}