Код для воспроизведения бумаги «Multifit: эффективная многоязычная языковая модель тонкая настройка».
Вот пост в блоге с представлением нашей статьи: 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 языковых моделей, обученных соответствующим выбросам Википедии:
Чтобы получить модель, просто используйте функцию multifit.from_pretrained . Вот какой -то пример ноутбука, показывающий, как обучить классификатор, используя предварительно подготовленные модели.
Результаты классификации документов на наборе данных MLDOC Schwenk и Li, 2018
| Модель | де | эс | фр | это | JA | Ру | 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 and Stein, 2010
| Де | Фр | JA | |
|---|---|---|---|
| Многоберт | 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}
}