概要
ファインチューニングされたモデルは、学習用返答を何度も読み込んでいます。その中の質問を再度投げかけると、ほぼ一言一句同じ返答を再現できます。これはスキルのように見えますが、実際には記憶(リコール)です。モデルがまだ見たことのない、次の顧客の質問にどう対応するかについては何も教えてくれません。
その解決策となるのがテストセットであり、これは機械学習における最も古いルールの1つです。つまり、一部のサンプルを学習から完全に切り離し、それらのみを使用してモデルを評価するというものです。大規模言語モデルにおいて、このルールの重要性は下がるどころか、むしろ高まっています。公開ベンチマークの調査では、学習中にテスト項目を見たモデルが、その結果として高いスコアを獲得した事例が繰り返し報告されています。これはデータ汚染またはリークとして知られる問題です。
仕組み
dataset has ≥ 10 conversations? no → no test set
yes → test = 10% of conversations (at least 3)
random, but fixed for this prep
each assistant reply in a test conversation → one question
asked with the conversation up to that point
reference answer = the reply itself
reply identical to a training reply → dropped- 最初に確保。 検証用データの分割や学習用データの書き込みが行われる前に、データ準備では会話の10%(最低3件)を選択します。会話が10件未満のデータセットには、テストセットは作成されません。
- ランダムかつ準備ごとに固定。 選択はランダムに行われるため、会話の難易度に偏りが生じることはありません。また、その準備プロセス中は固定されるため、再度評価を行う際にも同じ質問が提示されます。
- 1つの返答につき1つの質問。 テスト用会話におけるアシスタントの各返答が質問となり、その時点までの会話とともに提示されます。返答自体が参照用の回答となります。
- 隠れたコピーの排除。 学習用返答と一言一句同じテスト用返答(別の会話における同じ標準的な回答など)は、モデルが実質的にそれをすでに学習しているため、除外されます。
- 外部への流出防止。 テスト用会話は学習用ファイルにも検証用ファイルにも含まれず、プロバイダーに送信されることも決してありません。
- 学習元
- いいえ
- プロバイダーへ送信
- いいえ
モデルは本当に改善されたか?
- 学習元
- いいえ
- プロバイダーへ送信
- はい
テストセットがない場合のセカンドオピニオン
- 学習元
- はい
- プロバイダーへ送信
- はい
健全性チェックのみ:結果は楽観的
検証が純粋なテストではない理由
検証用会話は学習には使用されません。では、なぜそれで評価を行わないのでしょうか。それは、プロバイダーが検証用ファイルを受け取り、学習中に検証損失の計算や実行の監視に使用するためです。データはすでに手元を離れており、どの実行を保持するか、エポック数をいくつにするかなど、それらの数値を見ながら下されるすべての決定が、結果を特定の質問に少しずつ適合させていきます。検証は優れたセカンドオピニオンですが、ブラインドテストではありません。
Evaluateの質問の取得元
| ソース | 学習時に参照されるか | 用途 |
|---|---|---|
| ホールドアウトテスト | なし | モデルが本当に改善されたかの判断 |
| 検証 | プロバイダーは参照するが、学習には使用されない | テストセットがない場合のセカンドオピニオン |
| 学習用サンプル | はい(学習に使用) | 健全性チェックのみ。結果は楽観的になります |
Evaluateは、存在する最初のソースをその順序で取得します。学習用サンプルの結果は上限を示します。チューニングされたモデルが、学習済みの質問でさえ優れた結果を出せない場合、新しい質問で優れた結果を出すことはありません。仮に優れた結果を出したとしても、どの程度優れているかは依然として不明です。
- データセットには120件の会話が含まれているため、データ準備ではその10%を確保します。つまり、ランダムに選択され、この準備プロセス用に固定された12件の会話です。
- これら12件の会話には、31件のアシスタントの返答が含まれています。それぞれが質問となり、その時点までの会話とともに提示され、返答が参照用の回答として使用されます。
- 2件の返答は、学習用会話の返答(パスワードリセットに関する標準的な回答など)と一言一句同じです。これらは除外され、29件のテスト質問が残ります。
- 残りの108件の会話は、通常の検証用分割と学習に進みます。どちらのファイルにもテスト用会話は含まれず、プロバイダーに送信されることもありません。
- 学習後、Evaluateは29件のテスト質問を提示します。比較として、25件の会話からなるデータセットでは3件(最小値)が確保され、9件のデータセットではテストセットが作成されないため、Evaluateは検証用質問にフォールバックします。
効果的な活用方法
- 十分な数を確保する。 29件の質問からなるテストセットは有用ですが、小規模です。この規模では、勝率が60%であっても精度が向上していない可能性があります。データセット内の会話数が増えれば、テスト用の質問も増え、より確実な判定が可能になります。
- テスト用の会話をその後の学習から除外する。 別のデータセットにコピーして学習に使用した場合、次のモデルはそれらを参照済みとなるため、評価が実態より高く算出されます。
- 同条件で比較する。 新しいデータ準備では独自のテストセットが抽出されます。モデルを比較する際は、すべてのモデルに対して同一のデータ準備から得られたテスト用の質問を使用してください。
- 警告を真摯に受け止める。 学習サンプルに基づく評価に警告が表示されるのには理由があります。評価結果としてではなく、健全性チェックとして解釈してください。
質問のソース
会話データ準備の段階で取り分けられた質問。学習や検証には一度も使用されず、プロバイダーにも送信されません。クリーンなテストであり、デフォルトの選択肢です。
検証用分割データからの質問。学習には使用されませんが、学習の監視中にプロバイダーによって参照されます。データ準備にテストセットがない場合に使用されます。
モデルが学習した質問のサンプル。最終手段であり、警告が表示されます。結果は楽観的になり、致命的な破損がないことを示すに過ぎません。
よくある間違い
- 学習用質問で評価を行い、その結果を実際のパフォーマンスとして解釈すること。
- 検証結果を、ホールドアウトテストの結果と同等に純粋なものとして扱うこと。
- テスト用会話を後の学習用データセットにコピーし、次のモデルがすでにそれらを学習している状態にすること。
- 少数のテスト質問で結論を出すこと。小規模なテストセットで意味を見出すには、大きな差異が必要です。
- それぞれ異なる準備プロセスのテストセットで評価されたモデルを比較すること。
参考文献および関連資料
外部ソースは新しいタブで開きます。
- 01Training, validation, and test data setsWikipedia · en.wikipedia.org3分割の理由と、テストセットが最後にのみ使用される理由。
- 02Leakage (machine learning)Wikipedia · en.wikipedia.orgテストデータの情報がどのように学習に紛れ込み、スコアを水増しするか。
- 03NLP Evaluation in trouble: On the Need to Measure LLM Data Contamination for each BenchmarkSainz et al., 2023 · arXiv · arxiv.orgデータ汚染が評価結果の信頼性を損なう理由と、その確認が不可欠である理由。
- 04Time Travel in LLMs: Tracing Data Contamination in Large Language ModelsGolchin & Surdeanu, 2023 · arXiv · arxiv.orgテストの例をモデルに補完させることで、モデルがそれを記憶しているかを検出する方法。