概要
検証分割(バリデーションスプリット)は、学習が始まる前にデータの一部を確保します。これらの会話は除外(ホールドアウト)され、モデルがそれらで学習することはありません。プロバイダーは、学習の実行中に検証損失(バリデーションロス)を計算するためにこれらを使用します。これらは、事後の評価のために確保される2つ目の独立した会話グループであるテストセットとは異なります。
理由は単純です。ファインチューニングされたモデルは暗記することができます。学習した質問をされると、参照用の回答をほぼ一言一句再現する可能性があり、これでは来週の質問にどう対応するかは全く分かりません。モデルがパターンを学習したのか、それとも単に例を暗記したのかは、未知のデータによってのみ確認できます。
仕組み
会話は、会話全体としてランダムにどちらか一方に割り当てられます。メッセージ単位での分割は、一種のデータ漏洩(データリーケージ)になります。チャットの前半がモデルの学習に使用される一方で、その回答が検証側に回されたり、隣接する2つのレコードで同じ回答が両側に現れたりする可能性があります。そうなると、検証スコアは能力ではなく記憶力を測定することになります。漏洩は、言語モデルに限らずよく知られた落とし穴です。KapoorとNarayanan(2022年)は、17の科学分野にわたる329の論文で漏洩エラーが影響を与えていることを発見しました。
学習中、プロバイダーは定期的に検証レコードでモデルを実行し、重みを更新することなくその損失を報告します。学習損失が下がり続けているのに検証損失が上昇し始めた場合、モデルは過学習(オーバーフィッティング)を起こし始めています。
検証セットはテストセットではない
検証レコードは学習ファイルとともにプロバイダーに送信され、実行中ずっと監視されます。また、人々はこれらを見てエポックや学習率を選択します。そのため、これらは完全に未知のデータとは言えず、純粋な最終テストにはなりません。純粋なテストには、学習にも検証にも触れず、決して手元から離れない会話、すなわちテストセットが必要です。評価ではデフォルトでこれを使用し、テストセットがない場合にのみ検証用の質問に頼ります。
| データセット | 訓練中に参照されるか | 用途 |
|---|---|---|
| 訓練 | はい(学習に使用される) | 重みの更新 |
| 検証 | プロバイダーには参照されるが、学習には使用されない | 検証損失の算出。テストセットがない場合の評価におけるセカンドオピニオン |
| テスト | いいえ(プロバイダーには送信されない) | モデルが実際に改善されたかの判定 |
適切なサイズとは
これはトレードオフです。除外されたすべての会話はモデルが学習しないデータとなり、学習に使用されたすべての会話はテストに使用できないデータとなります。スコアの精度は、除外されたデータの割合ではなく数に依存するため、小規模なデータセットは扱いが難しくなります。勝率の場合、不確実性は質問数の平方根にほぼ反比例して縮小します。
standard error of a win rate ≈ √( p × (1 − p) ÷ n )
95% margin ≈ 1.96 × standard error
at p = 0.5 ≈ 1 ÷ √n
n = 10 → ± 31 points
n = 50 → ± 14 points
n = 100 → ± 10 points
n = 400 → ± 5 pointsこの数値を下回ると検証損失の大部分がノイズになるため、検証データの分割は行われず、テストセット以外のすべてのデータが訓練に回されます。
- 2,000件の会話: 最初に200件がテストセットに割り当てられ、残りの10%(180件)が検証に回され、1,620件が学習用として残ります。200件のテスト会話による評価では、勝率を約±7ポイントの範囲で測定でき、実行結果を比較するには十分な精度です。
- 300件の会話: 30件のテスト会話と27件の検証会話。30件のテスト会話による評価では約±18ポイントの誤差が生じ、55%のモデルと45%のモデルを区別することはできません。これを縮めるには、より多くのデータが必要です。
- 60件の会話: 6件がテストセットに割り当てられます。残りの54件の10%は5件となり、最小値の10を下回るため、検証曲線は作成されず、54件すべてが学習に使用されます。評価にはまだ6件の未知のテスト会話がありますが、数が少ないため、結果はあくまで参考として捉えてください。
- 8件の会話: 少なくとも10件のデータセットを必要とするテストセットとしては少なすぎます。除外されるデータはなく、評価は警告を伴いながら、モデルが学習した質問に頼らざるを得ません。
よくある間違い
- メッセージやレコード単位で分割し、同じ会話の一部が両方に混在してしまうこと。
- 何も測定できないほど小さな割合を除外し、6対4の結果に意味を見出そうとすること。
- 検証用会話のほぼ重複したデータを後続の学習セットに追加し、気付かないうちにそれらを学習データに変えてしまうこと。
- 異なる除外データセットで評価された2つのモデルを、あたかも同じ基準のスコアであるかのように比較すること。
- 「すべてのデータを使用する」ために実際のデータセットの分割をスキップし、唯一の公正な測定手段を失うこと。
- プロバイダーが学習を通じてそのレコードを参照していたにもかかわらず、検証結果を純粋な最終テストとして扱うこと。
参考文献および関連資料
外部ソースは新しいタブで開きます。
- 01Datasets: Dividing the original datasetGoogle Machine Learning Crash Course · developers.google.com学習、検証、およびテストセットに関する分かりやすい入門。
- 02Training, validation, and test data setsWikipedia · en.wikipedia.org各セットの定義と役割。
- 03Leakage and the Reproducibility Crisis in ML-based ScienceKapoor & Narayanan, 2022 · arXiv · arxiv.org訓練データとテストデータ間のリークが、報告される結果をどのように過大評価させるかについての調査。