ACL2020 Best Papier hat einen Papiernominierungspreis, "nicht auf die Vorbereitung aufhalten: Anpassen von Sprachmodellen an Domänen und Aufgaben". In diesem Artikel wurden viele Experimente zur Voraussetzung für das Sprachmodell durchgeführt und die Verbesserung des Sprachmodells vor dem Training auf Unteraufgaben systematisch analysiert. Es gibt mehrere wichtigste Schlussfolgerungen:
Fortsetzung der Vorausbildung (DAPT) im Datensatz des Zielfeldes kann den Effekt verbessern. Je unabhängiger der Korpus des Zielfeldes für Robertas ursprünglicher Voraussetzungskorpus ist, desto offensichtlicher wird der DAPT-Effekt.
Fortsetzung der Vorausbildung (TAPT) im Datensatz spezifischer Aufgaben kann den Effekt sehr "billig" verbessern.
Die Kombination der beiden (zuerst Dapt, dann Tapt) kann den Effekt weiter verbessern.
Der Effekt ist am besten, wenn Sie mehr aufgabenbezogene nicht markierte Daten erhalten und weiterhin bis zum Voraus (kuratierten Tapt) erhalten können.
Wenn Sie nicht mehr aufgabenbezogene, nicht beliebige Daten erhalten, verwenden Sie eine sehr leichte und einfache Datenauswahlstrategie, und der Effekt wird ebenfalls verbessert.
Obwohl das Sprachmodell vor dem Training bei BET bereits ein stabiler Punkt-up-Betrieb bei Algorithmuswettbewerben ist. Was jedoch im obigen Artikel lobenswert ist, ist, dass es diesen Vorgang systematisch analysiert. Die meisten chinesischen Sprachmodelle werden auf Tensorflow geschult, und ein häufiges Beispiel ist das chinesische Roberta -Projekt. Sie können sich unter https://github.com/brightmart/roberta_zh beziehen
Es gibt weniger Beispiele für chinesische Bert-Sprachmodelle vor dem Training unter Verwendung von Pytorch. Bei den Transformatoren von Huggingface unterstützt ein Code das Sprachmodell vor der Ausbildung (nicht sehr reichhaltig, und viele Funktionen unterstützen nicht wie WWM). Um die Vorausbildung des Bert-Sprachmodells mit minimalen Codekosten zu vervollständigen, leiht dieser Artikel einen vorbereiteten Code daraus. Versuchen Sie auch, einige Erfahrungen bei der Verwendung von Pytorch für das Sprachmodell vorzuverfolgen. Es gibt drei gemeinsame chinesische Sprachmodelle
(https://huggingface.co/bert-base-chinese)
Dies ist das häufigste chinesische BET-Sprachmodell, das auf der Grundlage des chinesischen Wikipedia-Corpus voreingebaut ist. Es ist einfach, Sprachmodelle vorzubilden, ohne Aufsichtsdaten in der Domäne. Verwenden Sie einfach die offiziellen Beispiele.
https://github.com/huggingface/transformers/tree/master/examples/glanguage-modeling (Die in diesem Artikel verwendeten Transformer werden auf 3.0.2 aktualisiert)
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-tbert-wwm)
Das vom Joint Laboratory of Harbin Institute of Technology veröffentlichte vorgebreitete Sprachmodell. Die Methode vor dem Training besteht darin, Roberta ähnliche Methoden wie dynamische Maske, mehr Trainingsdaten usw. anzuwenden. Bei vielen Aufgaben ist dieses Modell besser als Bert-Base-Chinese. Da die Konfigurationsdateien der chinesischen Roberta -Klasse wie vocab.txt alle mit der Bert -Methode entwickelt werden. Das Standardformat der englischen Roberta -Modell -Lesekonfigurationsdatei ist vocab.json. Für einige englische Roberta -Modelle können sie automatisch über Automodel gelesen werden. Dies erklärt, warum der chinesische Roberta -Beispielcode der Modellbibliothek von Huggingface nicht ausgeführt werden kann. https://huggingface.co/models?
Wenn Sie Roberta vor dem Training fortsetzen möchten, basierend auf dem obigen Code run_language_modeling.py. Zwei weitere Änderungen sind erforderlich.
Unter der Annahme, dass config.json geändert wurde, können Sie den folgenden Befehl ausführen.
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 ist ein vorgebildetes Modell, das von Baidu auf Basis chinesischer Korpus wie Baidu Zhitieba in Kombination mit der Vorhersage von Entität und anderen Aufgaben veröffentlicht wurde. Die Genauigkeit dieses Modells ist besser als die von Bert-Base-Chinese und Roberta bei einigen Aufgaben. Wenn Sie auf der Grundlage des Ernie1.0-Modells Felddaten vor der Ausbildung durchführen, müssen Sie es nur in einem Schritt ändern.
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