ACL2020 Best Paperには、「事前トレーニングを停止しないでください:言語モデルをドメインとタスクに適応させる」という論文ノミネート賞があります。このペーパーは、言語モデルに関する多くの実験を事前トレーニング前に行い、サブタスクでの言語モデルの事前トレーニングの改善を体系的に分析しました。いくつかの主な結論があります:
ターゲットフィールドのデータセットでトレーニング前(DAPT)を継続すると、効果が向上する可能性があります。ターゲットフィールドのコーパスは、ロベルタのオリジナルのトレーニング前コーパスに対してより無関係になっているほど、DAPT効果はより明白になります。
特定のタスクのデータセットでトレーニング前(TAPT)を継続すると、非常に「安い」効果を改善できます。
2つを組み合わせることで(最初にDAPT、次にタップ)、さらに効果を改善できます。
より多くのタスク関連のマークされていないデータを取得し、プレトレイン前(キュレートタップ)を続けることができる場合、効果が最適です。
より多くのタスク関連の非標識データを取得できない場合は、非常に軽量でシンプルなデータ選択戦略を採用すると、その効果も改善されます。
BETの事前トレーニングは、すでにアルゴリズム競争における安定したポイントアップ操作ですが、言語モデルです。しかし、上記の記事で称賛に値するのは、この操作を体系的に分析することです。ほとんどの中国語モデルはTensorflowで訓練されており、一般的な例は中国のRobertaプロジェクトです。 https://github.com/brightmart/roberta_zhを参照できます
Pytorchを使用して、事前にトレーニングする中国のBert言語モデルの例は少ない。 Huggingfaceの変圧器では、一部のコードは言語モデルの事前トレーニングをサポートしています(あまり豊富ではなく、多くの機能はWWMなどをサポートしていません)。コードコストを最小限に抑えてBERT言語モデルの事前トレーニングを完了するために、この記事では、既製のコードを貸し出します。また、言語モデルの事前トレーニングにPytorchを使用する経験を共有してみてください。 3つの一般的な中国語モデルがあります
(https://huggingface.co/bert-base-chinese)
これは、中国のウィキペディア関連のコーパスに基づいて事前に訓練された中国のBET言語モデルです。ドメイン内の監督データなしでベースラインとして言語モデルを事前に訓練することは簡単です。公式の例を使用するだけです。
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)
Harbin Institute of Technologyの共同研究所によってリリースされた事前に訓練された言語モデル。トレーニング前の方法は、ダイナミックマスク、より多くのトレーニングデータなど、ロベルタ同様の方法を使用することです。多くのタスクでは、このモデルはBert-Base-Chineseよりも優れています。 vocab.txtなどの中国のロバータクラスの構成ファイルはすべてBERTメソッドを使用して設計されているためです。 English Robertaモデルの読み取り構成ファイルのデフォルト形式はvocab.jsonです。一部の英語のロバータモデルでは、自動的にAutomodelを読むことができます。これは、Huggingfaceのモデルライブラリの中国のロバータのサンプルコードが実行できない理由を説明しています。 https://huggingface.co/models?
上記のコードrun_language_modeling.pyに基づいて、トレーニング前のロベルタを続けたい場合。さらに2つの変更が必要です。
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 Zhitiebaがエンティティの予測やその他のタスクを組み合わせた中国のコーパスに基づいて、Baiduがリリースした事前に訓練されたモデルです。このモデルの精度は、いくつかのタスクでのBert-Base-ChineseおよびRobertaの精度よりも優れています。 Ernie1.0モデルに基づいてフィールドデータを事前トレーニングする場合、1つのステップで変更するだけです。
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