リソース/モデルのトレーニング/データ準備

パイプラインステップ

検証データの分割

会話の一部は訓練から除外され、モデルが学習しないデータにおける損失を監視するために使用されます。会話全体を単位として分割されるため、確保されたチャットの一部が訓練データにリークすることはありません。また、これは評価用に保持されるテストセットとは異なります。

第5章読了時間 2分参考文献 3件

概要

検証分割(バリデーションスプリット)は、学習が始まる前にデータの一部を確保します。これらの会話は除外(ホールドアウト)され、モデルがそれらで学習することはありません。プロバイダーは、学習の実行中に検証損失(バリデーションロス)を計算するためにこれらを使用します。これらは、事後の評価のために確保される2つ目の独立した会話グループであるテストセットとは異なります。

理由は単純です。ファインチューニングされたモデルは暗記することができます。学習した質問をされると、参照用の回答をほぼ一言一句再現する可能性があり、これでは来週の質問にどう対応するかは全く分かりません。モデルがパターンを学習したのか、それとも単に例を暗記したのかは、未知のデータによってのみ確認できます。

仕組み

トレーニング · 会話の90%検証 · 10%、トレーニングには不使用
会話全体がどちらか一方に振り分けられます。メッセージ単位で分割すると、チャットの前半がトレーニングに、その回答が検証に回されることになり、スコアがモデルを過大評価してしまいます。

会話は、会話全体としてランダムにどちらか一方に割り当てられます。メッセージ単位での分割は、一種のデータ漏洩(データリーケージ)になります。チャットの前半がモデルの学習に使用される一方で、その回答が検証側に回されたり、隣接する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
検証データの割合一般的 10% (10–20%)#

検証用に確保される会話の割合。数千件の会話がある場合、5%でも安定した検証曲線が得られます。数百件の場合は、15〜20%に設定することで、訓練への影響を抑えつつ曲線のノイズを減らすことができます。

検証用に確保する最小会話数一般的 10#

この数値を下回ると検証損失の大部分がノイズになるため、検証データの分割は行われず、テストセット以外のすべてのデータが訓練に回されます。

具体例:10%で分割した3つのデータセットサイズ
  1. 2,000件の会話: 最初に200件がテストセットに割り当てられ、残りの10%(180件)が検証に回され、1,620件が学習用として残ります。200件のテスト会話による評価では、勝率を約±7ポイントの範囲で測定でき、実行結果を比較するには十分な精度です。
  2. 300件の会話: 30件のテスト会話と27件の検証会話。30件のテスト会話による評価では約±18ポイントの誤差が生じ、55%のモデルと45%のモデルを区別することはできません。これを縮めるには、より多くのデータが必要です。
  3. 60件の会話: 6件がテストセットに割り当てられます。残りの54件の10%は5件となり、最小値の10を下回るため、検証曲線は作成されず、54件すべてが学習に使用されます。評価にはまだ6件の未知のテスト会話がありますが、数が少ないため、結果はあくまで参考として捉えてください。
  4. 8件の会話: 少なくとも10件のデータセットを必要とするテストセットとしては少なすぎます。除外されるデータはなく、評価は警告を伴いながら、モデルが学習した質問に頼らざるを得ません。

よくある間違い

  • メッセージやレコード単位で分割し、同じ会話の一部が両方に混在してしまうこと。
  • 何も測定できないほど小さな割合を除外し、6対4の結果に意味を見出そうとすること。
  • 検証用会話のほぼ重複したデータを後続の学習セットに追加し、気付かないうちにそれらを学習データに変えてしまうこと。
  • 異なる除外データセットで評価された2つのモデルを、あたかも同じ基準のスコアであるかのように比較すること。
  • 「すべてのデータを使用する」ために実際のデータセットの分割をスキップし、唯一の公正な測定手段を失うこと。
  • プロバイダーが学習を通じてそのレコードを参照していたにもかかわらず、検証結果を純粋な最終テストとして扱うこと。

参考文献および関連資料

外部ソースは新しいタブで開きます。

  1. 01Datasets: Dividing the original datasetGoogle Machine Learning Crash Course · developers.google.com学習、検証、およびテストセットに関する分かりやすい入門。
  2. 02Training, validation, and test data setsWikipedia · en.wikipedia.org各セットの定義と役割。
  3. 03Leakage and the Reproducibility Crisis in ML-based ScienceKapoor & Narayanan, 2022 · arXiv · arxiv.org訓練データとテストデータ間のリークが、報告される結果をどのように過大評価させるかについての調査。

専門家が数週間かける作業を数分に短縮します

Scalataがお客様のチーム、データ、および統制にどのように適合するかをご確認ください。

営業へのお問い合わせ