ACL2020 Le meilleur papier a un prix de nomination en papier, "Ne arrêtez pas de pré-formation: adaptez les modèles de langue aux domaines et tâches". Cet article a fait de nombreuses expériences sur le modèle de langue pré-formation et a systématiquement analysé l'amélioration du modèle de langue pré-formation sur les sous-tâches. Il y a plusieurs conclusions principales:
La pré-formation continue (DAPT) sur l'ensemble de données du champ cible peut améliorer l'effet; Plus le corpus du champ cible n'est pas lié au corpus pré-formation d'origine de Roberta, plus l'effet DAPT sera évident.
Pré-formation continue (TAPT) sur l'ensemble de données de tâches spécifiques peut améliorer l'effet très "bon marché".
La combinaison des deux (DAPT d'abord, puis TAPT), peut encore améliorer l'effet.
L'effet est le meilleur si vous pouvez obtenir plus de données non marquées liées aux tâches et continuer à pré-entraîner (Coated Tapt).
Si vous ne pouvez pas obtenir plus de données non marquées liées aux tâches, adoptez une stratégie de sélection des données très légère et simple, et l'effet sera également amélioré.
Bien que le modèle de langue pré-formation sur BET soit déjà une opération de pointe stable dans les compétitions d'algorithmes. Mais ce qui est louable dans l'article ci-dessus, c'est qu'il analyse systématiquement cette opération. La plupart des modèles de langue chinoise sont formés sur Tensorflow, et un exemple courant est le projet chinois Roberta. Vous pouvez vous référer à https://github.com/brightmart/roberta_zh
Il existe moins d'exemples de modèles de langage chinois pré-formation chinois en utilisant Pytorch. Dans les transformateurs de HuggingFace, certains code prennent en charge la pré-formation du modèle linguistique (pas très riche, et de nombreuses fonctions ne prennent pas en charge comme WWM). Afin de terminer la pré-formation du modèle de langue Bert avec un coût de code minimal, cet article en emprunte un code prêt à l'emploi. Essayez également de partager certaines expériences dans l'utilisation de Pytorch pour la pré-formation du modèle linguistique. Il existe trois modèles de langue chinoise communes
(https://huggingface.co/bert-base-chinese)
Il s'agit du modèle de langue chinois le plus courant, pré-formé sur la base du corpus chinois lié au wikipedia. Il est facile de pré-entraîner les modèles de langue comme base sans données de supervision dans le domaine. Utilisez simplement les exemples officiels.
https://github.com/huggingface/transformers/tree/master/examples/language-modeling (les transformateurs utilisés dans cet article sont mis à jour vers 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)
Le modèle de langue pré-formée publié par le Laboratory conjoint du Harbin Institute of Technology. La méthode de pré-formation consiste à utiliser des méthodes similaires de Roberta, telles que le masque dynamique, plus de données de formation, etc. Dans de nombreuses tâches, ce modèle est meilleur que Bert-Base-Chinese. Parce que les fichiers de configuration de la classe chinoise Roberta tels que vocab.txt sont tous conçus en utilisant la méthode Bert. Le format par défaut du fichier de configuration de la lecture du modèle Roberta anglais est vocab.json. Pour certains modèles anglais Roberta, ils peuvent être automatiquement lus sur Automodel. Cela explique pourquoi l'exemple de code chinois de Roberta de la bibliothèque de modèles de Huggingface ne peut pas s'exécuter. https://huggingface.co/Models?
Si vous souhaitez continuer Roberta pré-formation en fonction du code ci-dessus run_langue_modeling.py. Deux autres changements sont nécessaires.
En supposant que config.json a été modifié, vous pouvez exécuter la commande suivante.
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)
Ernie est un modèle pré-formé publié par Baidu basé sur un corpus chinois tel que Baidu Zhitieba combiné à la prédiction des entités et à d'autres tâches. La précision de ce modèle est meilleure que celle de Bert-Base-Chinese et Roberta sur certaines tâches. Si vous effectuez une pré-formation de données sur le terrain en fonction du modèle ERNIE1.0, il vous suffit de les modifier en une seule étape.
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