コンセプトベースのカリキュラムマスキング(CCM)は、トレーニング前の効率的な言語モデルのためのトレーニング戦略です。これは、比較的低い計算コストを備えたトレーニング前トランスに使用できます。私たちのフレームワークは、簡単な順序で文の中の概念をマスクします。 CCMは、接着剤ベンチマークで1/2の計算コストのみを使用することにより、オリジナルのBertとの比較パフォーマンスを達成します。
このリポジトリには、EMNLP 2022ペーパーのコードが含まれています。コンセプトベースのカリキュラムマスキングを介したマスクされた言語モデルの効率的な事前トレーニング。詳細な説明と実験結果については、論文を参照してください。
接着剤DEVセットの結果
| モデル | コーラ | SST | MRPC | sts | rte |
|---|---|---|---|---|---|
| バート(小、14m) | 38.0 | 88.7 | 82.8 | 82.0 | 59.2 |
| CCM(小、14m) | 42.8 | 89.1 | 84.1 | 83.3 | 61.3 |
| バート(中、26m) | 44.9 | 89.6 | 85.4 | 82.7 | 60.3 |
| CCM(中、26m) | 48.0 | 90.9 | 86.7 | 83.6 | 61.4 |
| バート(ベース、110m) | 49.7 | 90.8 | 87.8 | 85.4 | 67.8 |
| CCM(ベース、110m) | 60.3 | 93.1 | 88.3 | 85.5 | 65.0 |
| モデル | mnli | QQP | Qnli |
|---|---|---|---|
| バート(小、14m) | 76.8 | 88.4 | 85.8 |
| CCM(小、14m) | 77.5 | 88.6 | 86.3 |
| バート(中、26m) | 78.9 | 89.4 | 87.6 |
| CCM(中、26m) | 80.0 | 89.2 | 87.6 |
| バート(ベース、110m) | 81.7 | 90.4 | 89.5 |
| CCM(ベース、110m) | 84.1 | 91.0 | 91.4 |
ConceptNetアサーションをダウンロードします。
# Download assertions in the data folder.
$ wget ./data/assertions.csv https://s3.amazonaws.com/conceptnet/precomputed-data/2016/assertions/conceptnet-assertions-5.5.0.csv.gz
# run concept_extraction.py
$ python ./script/concept_extraction.py
./script/basicconcept_selection.pyを使用して、知識グラフの他の多くの概念に関連する基本的な概念を備えたカリキュラムの最初の段階を作成し、トレーニング前のコーパスで頻繁に発生します。
--conceptnet_path :事前に不必要なコンセプトネットファイルへのパス。--topk_connected_concepts :知識グラフの他の多くの概念に接続されているトップKの概念。--corpus_dir :MLMの事前トレーニング例に変わる生のテキストファイルを含むディレクトリ。--delete_threshold :まれな概念をフィルタリングするための周波数しきい値。--basicConcepts_num :カリキュラムに使用される基本概念の数を設定します。--save_path :基本概念のセットを保存するパス。 ./script/curriculum_construction.pyを使用して、基本概念を備えた概念ベースのカリキュラムを構築します。
--conceptnet_path :事前に不必要なコンセプトネットファイルへのパス。--num_of_hops :関連する概念を次の段階コンセプトセットに追加するためのホップ数を設定します。--basic_concept_path :基本概念のセットをロードするパス。--save_dir :カリキュラムの各段階の概念セットを保存するパス。--num_of_stages :カリキュラムのステージ数を設定します。 ./script/curriculum_construction.pyを使用して、コーパスの概念を識別し、カリキュラムとともに配置します。
--corpus_dir :MLMの事前トレーニング例に変わる生のテキストファイルを含むディレクトリ。--save_dir :前処理されたコーパスを保存するパス。--curriculum_dir :コンセプトベースのカリキュラムを含むディレクトリ。--process_num :前処理にCPUプロセッサの数を設定します。 最後に、 ./script/pre-training.py pre-training.pyを使用して、コンセプトベースのカリキュラムマスキングを使用してモデルを事前にトレーニングします。
--curriculum_dir :コンセプトベースのカリキュラムを含むディレクトリ。--lr :学習率を設定します。--epochs :エポックの数を設定します。--batch_size :一度に伝導するためにバッチサイズを設定します。--step_batch_size :各ステップごとに更新するためにバッチサイズを設定します(gpuのメモリで十分な場合は、batch_sizeとstep_batch_sizeを同じに設定します。--data_path :前処理された例を含むディレクトリ。--warmup_steps :元のMLMでモデルをウォームアップする手順の数を設定します。--model_size :モデルのサイズをプリトレインに選択します。 CCMを使用したヘルプまたは問題については、GitHubの問題を提出してください。
CCMに関連する個人的なコミュニケーションについては、mingyu lee <[email protected]>またはjun-hyung park <[email protected]>にお問い合わせください。