논문을 재현하는 코드 "멀티 핏 : 효율적인 다국어 언어 모델 미세 조정".
다음은 논문을 소개하는 블로그 게시물입니다 : 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에서 쉽게 사용할 수 있도록 다시 작성되었습니다.
우리는 해당 Wikipedia 덤프에 대해 훈련 된 7 개의 언어 모델을 발표했습니다.
모델을 가져 오려면 multifit.from_pretrained 함수를 사용하십시오. 다음은 사전 예방 모델을 사용하여 분류기를 훈련시키는 방법을 보여주는 몇 가지 예제입니다.
MLDOC 데이터 세트 Schwenk and Li, 2018의 문서 분류 결과
| 모델 | 드 | es | 정말로 | 그것 | 자 | ru | ZH |
|---|---|---|---|---|---|---|---|
| 원자 램프 | 92.70 | 88.75 | 90.80 | 85.93 | 85.15 | 84.65 | 88.98 |
| 멀티 버트 | 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 데이터 세트 Prettenhofer 및 Stein, 2010에 대한 감정 분류 결과
| 드 | 정말로 | 자 | |
|---|---|---|---|
| 멀티 버트 | 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 Library와 함께 사전 취사 모델을 사용할 수 있습니다.
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}
}