ACL2020 Best Paper имеет награду по номинации на бумагу: «Не прекращайте предварительную подготовку: адаптируйте языковые модели к доменам и задачам». В этой статье много экспериментов по предварительному обучению языковой модели и систематически проанализировали улучшение предварительной тренировки языковой модели на подзадачи. Есть несколько основных выводов:
Продолжение предварительного обучения (DAPT) в наборе данных целевого поля может улучшить эффект; Чем более не связан корпус целевого поля к первоначальному корпусу перед тренировкой Роберты, тем более очевидно будет эффект DAPT.
Продолжение предварительного обучения (Tapt) в наборе данных конкретных задач может улучшить эффект очень «дешево».
Объединение двух (сначала DAPT, затем TAPT) может дополнительно улучшить эффект.
Эффект лучше всего, если вы можете получить больше связанных с задачами данных без опознавательных знаков и продолжать предварительную поездку (кураторский тап).
Если вы не можете получить больше немеченых данных, связанных с задачей, используйте очень легкую и простую стратегию выбора данных, и этот эффект также будет улучшен.
Хотя языковая модель предварительной тренировки на BET уже является стабильной операцией в соревнованиях по алгоритму. Но в приведенной выше статье похвально, так это то, что она систематически анализирует эту операцию. Большинство моделей китайского языка обучены Tensorflow, и распространенным примером является китайский проект Роберты. Вы можете обратиться к https://github.com/brightmart/roberta_zh
Существует меньше примеров моделей до тренировок китайских языков с использованием Pytorch. В трансформаторах Huggingface некоторые коды поддерживают предварительную тренировку языковой модели (не очень богатые, и многие функции не поддерживают, такие как WWM). Чтобы завершить предварительное обучение модели языка BERT с минимальной стоимостью кода, эта статья заимствует из нее готовую код. Также попробуйте поделиться некоторым опытом в использовании Pytorch для предварительной тренировки языка. Есть три модели общих китайских языков
(https://huggingface.co/bert-base-chinese)
Это наиболее распространенная модель китайского языка ставок, предварительно обученная на основе китайского корпуса, связанного с Википедией. Легко предварительно обучать языковые модели в качестве базового уровня без данных надзора в домене. Просто используйте официальные примеры.
https://github.com/huggingface/transformers/tree/master/examples/language-modeling (трансформаторы, используемые в этой статье, обновляются до 3.0.2)
python run_language_model_bert.py --output_dir=output --model_type=bert --model_name_or_path=bert-base-chinese --do_train --train_data_file=train.txt --do_eval --eval_data_file=eval.txt --mlm --per_device_train_batch_size=4
(https://github.com/ymcui/chinese-bert-wwm)
Предварительно обученная языковая модель, выпущенная Объединенной лабораторией Харбинского технологического института. Метод предварительного обучения состоит в том, чтобы использовать Roberta аналогичные методы, такие как динамическая маска, больше учебных данных и т. Д. Во многих задачах эта модель лучше, чем Bert-Base-Chinese. Потому что файлы конфигурации китайского класса Роберты, такие как Vocab.txt, все разработаны с использованием метода BERT. Формат по умолчанию файла конфигурации чтения модели Роберты - Vocab.json. Для некоторых английских моделей Роберты их можно автоматически прочитать через автомобиль. Это объясняет, почему китайский пример кода Роберты модели библиотеки Huggingface не может работать. https://huggingface.co/models?
Если вы хотите продолжить предварительное обучение Роберты на основе вышеуказанного кода run_language_modeling.py. Необходимы еще два изменения.
Предполагая, что config.json был изменен, вы можете запустить следующую команду.
python run_language_model_roberta.py --output_dir=output --model_type=bert --model_name_or_path=hflroberta --do_train --train_data_file=train.txt --do_eval --eval_data_file=eval.txt --mlm --per_device_train_batch_size=4
https://github.com/nghuyong/ernie-pytorch)
Эрни-предварительно обученная модель, выпущенная Baidu на основе китайского корпуса, такого как Baidu Zhitieba, в сочетании с прогнозом организации и другими задачами. Точность этой модели лучше, чем у Bert-Base-Chinese и Roberta в некоторых задачах. Если вы выполняете предварительное обучение данных полевых данных на основе модели ERNIE1.0, вам нужно изменить ее только за один шаг.
python run_language_model_ernie.py --output_dir=output --model_type=bert --model_name_or_path=ernie --do_train --train_data_file=train.txt --do_eval --eval_data_file=eval.txt --mlm --per_device_train_batch_size=4