概要
トレーニングセットは、モデルが直面する状況のサンプルです。これには、アシスタントの回答方法、トーン、フォーマットなど、学習させたいパターンと、1つの返答の正確な言い回し、タイプミス、特定の顧客の質問の癖など、学習させたくないノイズが含まれています。モデルがパターンを習得した場合、それは汎化されたと言えます。ノイズまで適合してしまった場合はオーバーフィッティングであり、パターンを習得できなかった場合はアンダーフィッティングとなります。
見分ける方法
最も明確なシグナルは損失曲線に現れます。モデルがより多くを暗記できる限り、トレーニング損失は下がり続けます。モデルがトレーニングしたことのない会話で測定される検証損失は、モデルが汎化する内容を学習した時点で下がるのを止まり、暗記を始めると上昇します。
ファインチューニングされた言語モデルでは、オーバーフィッティングは回答そのものにも現れます。
- そのままのコピー: トレーニングの返答に含まれるフレーズ、文全体、さらには名前や数字までもが、無関係な質問への回答に現れます。
- 定型的な回答: 元の質問に似ているだけの質問に対しても、学習データに多く含まれる特定の回答が返されます。
- 柔軟性の喪失: 学習データと同じ言い回しの質問にはうまく対応できますが、異なる言い回しにはつまずき、ベースモデルが処理できていた一般的なタスクの精度も低下します。
- 自信に満ちた捏造: モデルは、背景知識がないまま、特定のメニュー名や番号付きの手順など、詳細な回答のスタイルを模倣し、具体的な内容をでっち上げます。
発生する理由
| 原因 | 暗記につながる理由 |
|---|---|
| 学習データが少なすぎる | データが少ない場合、各回答を暗記することが損失を減らす最も簡単な方法となります |
| エポック数が多すぎる | モデルが認識するまで、各パスで同じ回答が繰り返し提示されます |
| 学習率が高すぎる | 更新幅が大きいため、個々の例に素早く適合してしまいます |
| 重複および繰り返される回答 | 何度も出現する回答は、固定の答えとして学習されます |
| データの偏り | 実際の質問がどのように変化するかをモデルが認識できないため、変化のパターンを学習できません |
| データに対するモデルの容量が大きすぎる | 小さなデータセットに対するフルファインチューニングや大規模なアダプターは、例を記憶する余裕があります |
防ぐ方法
- 最適なポイントで停止する。 検証損失が最も低かったエポック数、またはその時点のチェックポイントを使用します。これは早期終了と呼ばれ、最もシンプルかつ効果的な防御策です。
- エポック数を減らす、または学習率を下げる。 どちらも、重みがベースモデルからどれだけ離れるかを制限します。
- より多く、より多様なデータ。 短く曖昧な質問を含め、人々が実際に尋ねるさまざまな方法を網羅します。数百の多様な例は、千のほぼ重複した例よりも多くのことを学習させます。
- トレーニング前に、重複データや過度に繰り返される返答を削除する。
- 正則化: LoRAのドロップアウト、ウェイトディケイ、または単により小さなアダプターランクを使用することで、保存できる情報量を制限します。
- 実行A:6エポック、乗数2。 トレーニング損失は0.15に達します。検証損失はエポック2の後に最も低くなり、その最小値を大きく上回って終了します。テストチャットでは、回答にトレーニングの返答から文全体が再利用されています。
- 実行B:2エポック、乗数1。 トレーニング損失は0.6で終了し、検証損失は最小値付近で終了します。回答は自社のスタイルを維持しつつ、質問ごとに新しい言葉で表現されています。
- 要点: 実行Aのトレーニング損失の低さは成果ではなく問題です。実行Bは汎化されており、トレーニングコストも3分の1で済みました。
アンダーフィッティング
アンダーフィッティングは正反対の失敗です。トレーニング損失も検証損失もあまり下がらず、チューニングされたモデルはベースモデルとほぼ同じように回答します。原因は、トレーニング不足(エポック数やステップ数が少なすぎる、または学習率が低すぎる)、あるいは類似の質問に対して矛盾した回答をするなど、一貫したパターンのないデータです。まずはデータを確認してください。一貫性のないデータでエポック数や学習率を上げても、主にその一貫性のなさを学習させるだけです。
よくある間違い
- トレーニング損失で実行を判断すること。通常、最も低いトレーニング損失は、最もオーバーフィッティングした実行に見られます。
- 同じ小さなデータセットでエポック数を増やし、弱いモデルを修正しようとすること。
- すべての例をトレーニングに使用するために検証用スプリットを省略し、オーバーフィッティングを確認する唯一の手段を失うこと。
- 重複データや1つの定型的な返答がデータを支配するままにすること。
- トレーニングにも含まれる会話で検証を行い、オーバーフィッティングを完全に隠してしまうこと。
参考文献および関連資料
外部ソースは新しいタブで開きます。
- 01OverfittingGoogle Machine Learning Crash Course · developers.google.com汎化、オーバーフィッティング、および確保されたデータセットの役割(インタラクティブな例付き)。
- 02OverfittingWikipedia · en.wikipedia.org
- 03Early stoppingWikipedia · en.wikipedia.org検証エラーが最も低いポイントでの停止(オーバーフィッティングに対する最も一般的な防御策)。
- 04Regularization for Deep LearningGoodfellow, Bengio & Courville · Deep Learning, chapter 7 · deeplearningbook.orgウェイトディケイ、ドロップアウト、早期終了、データ拡張に関する教科書的な解説。