BERTの事前学習には、training loss と validation loss の概念はないのでしょうか。
さまざまな記事を検索していても、lossの出力をしている方は見かけるのですが、そのlossが何を表しているのか分かりません。
どなたかご教示いただけますと非常に助かります。
よろしくお願いします。
質問日時から時間が経っても回答がつかないので、自信はありませんが 私の憶測を書きます。
BERTの事前学習タスクは
・Masked LM (Masked Language Model, MLMとも略されます)
・Next Sentence Prediction
の2つです。このタスクの不正解率がlossなのではないでしょうか?
文書コーパスから 上記2つのタスク用テストデータを作る(マスクありデータを作り、連続文セットを作る)という流れなため、通常のtraining dataとvalidation dataに分けるというのとは違うデータセットの用意の仕方と思います。
(コーパス自体がtraining dataでもあり、validation dataでもあるということかと。)←このコメントは間違いに思えてきました。謝罪の上、撤回させていただきます。
お忙しいところ貴重なご意見ありがとうございます。
大変勉強になりました。
そうしますと、trainingとvalidationに分けて考えようとすること自体間違っているという認識であってますでしょうか。
追記です。オリジナル論文のAppendixに
The training loss is the sum of the mean masked LM likelihood and the mean next sentence prediction likelihood.
という記述がありましたので、不正解率ではなく、2つのタスクの平均尤度合計のようです。
またtrainingとvalidationの分割の件ですが、通常バリデーションは教師あり学習のモデル評価に使われるものだと理解していますが、BERTの事前学習は「教師なし(ラベルなし)学習」であるため、個人的にはバリデーション・データを分けることと噛み合わないように感じます。(マスク位置の選択や、連続文の選び方で正解率も変わってしまう)
とはいえ、下記の事前学習デモにはValidation Lossが載っているので、私の思い違いかも知れません。
https://www.thepythoncode.com/article/pretraining-bert-huggingface-transformers-in-python
もう一つ大事だと思うのは、事前学習で2つのタスクのロスを下げることは主目的ではなく、あくまで事前学習の目的は、ファインチューニング時に下流タスクの正解率を上げることです、バリデーション的なこと(モデルのアーキテクチャやパラメーターの調整をすること)はファインチューニングの結果に基づいてやっているのでは、とも推測します。
あなたの回答
tips
プレビュー