リソース/モデルのトレーニング/チャットからトレーニング例へ

概念

損失マスキング

モデルが各レコードのターゲットトークンでのみ評価される理由、実際の実施方法、そしてそれによって何が変わり、何が変わらないのか。

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

概要

トレーニングレコードには、学習すべき返答以外にも、システムプロンプト、過去のいくつかのターン、ユーザーの質問など、はるかに多くの情報が含まれています。損失マスキングとは、トレーニング誤差(損失)がターゲットとなる返答のトークンでのみ計算されることを意味します。モデルはすべてのトークンを読み込み、コンテキストはモデルが行うすべての予測を形成しますが、コンテキスト自体の予測がスコア化されることはありません。

Howマスク済み␣doマスク済み␣Iマスク済み␣resetマスク済み␣myマスク済み␣passwordマスク済み?マスク済みOpenp 0.62損失 0.48␣Settingsp 0.81損失 0.21␣→p 0.35損失 1.05␣Securityp 0.90損失 0.11
7つのコンテキストトークン · 損失なしレコードの損失 ≈ 0.46
各ターゲットトークンには、モデルが付与した確率(p)と損失(−ln p)があります。コンテキストトークンは読み込まれ、すべての予測を形成しますが、損失は伴いません。レコードの損失は、ターゲットトークンのみの平均値です。

仕組み

言語モデルは、次の各トークンを予測することによってトレーニングされます。すべての位置で、語彙内のすべてのトークンに対する確率を出力し、その位置での損失は、正解トークンに与えられた確率の負の対数となります。つまり、確信を持って正解した場合は0に近く、確信を持って間違えた場合は大きくなります。レコードの損失は、計算対象となる位置の平均値です。

マスキングを伴う損失
loss for one record = average over target tokens of  −ln p(correct token | everything before it)

context tokens:  read, label = -100  →  ignored by the loss
target tokens:   read and scored     →  averaged into the loss

マスキングを行わない場合、平均はレコード内のすべてのトークンにわたって計算されます。マスキングを行うと、コンテキストの位置は除外されます。トレーニングでは、各コンテキストトークンに特別なラベル(Hugging Face TransformersなどのPyTorchベースのライブラリでは-100)を付与し、損失関数にそれを無視するよう指示することでこれを実現します。

1レコードの計算
  1. あるレコードには、40個のコンテキストトークン(システムプロンプトと質問)と、4個のターゲットトークン(「Open」、「 Settings」、「 →」、「 Security」)があります。
  2. モデルは、正しいターゲットトークンに0.62、0.81、0.35、0.90の確率を与えます。それぞれの損失(−ln p)は、0.48、0.21、1.05、0.11です。
  3. このレコードの損失はそれらの平均です。(0.48 + 0.21 + 1.05 + 0.11) ÷ 4 ≈ 0.46。
  4. 40個のコンテキストトークンは何も追加しません。この更新により、モデルが最も確信を持てなかったトークンである「 →」の確率が主に上昇します。

なぜマスキングを行うのか

  • シグナルを意図した場所へ。 ターゲットは、選択した振る舞いです。マスキングを行わない場合、トレーニングの労力の多くがユーザーの質問の予測やシステムプロンプトの反復に費やされてしまいます。
  • モデルはユーザーの模倣を学習しない。 ユーザーのターンでトレーニングを行うと、モデルは質問者と同じように書くこと(誤字脱字なども含め)を学習してしまい、それが回答に影響を与える可能性があります。
  • 長いコンテキストが短い回答を埋もれさせない。 2,000トークンの履歴と60トークンの返答を持つレコードの場合、マスキングされていない損失の約97%が履歴に関するものになります。

マスキングは常に最適か?

マスキングは標準的な選択であり、ほとんどのトレーニングサービスやライブラリでデフォルトとなっています。例外もあります。Shiらによる2024年の研究では、指示が長く出力が短い場合、または例が非常に少ない場合には、指示についてもトレーニングすることが有効であると判明しています。ユーザーのターンが再現したい振る舞いではない実際の会話でのファインチューニングにおいては、コンテキストのマスキングが引き続き妥当なデフォルトとなります。

マスキングされていても無関係ではない

マスキングされたトークンは評価されませんが、読み込まれることには変わりなく、モデルはそのコンテキストが与えられた上でターゲットを生成するように学習します。コンテキストに誤った記述が含まれており、ターゲットがそれに同調している場合、モデルはそれに同調することを学習します。トレーニング時のシステムプロンプトが後で使用されるものと異なる場合、学習した振る舞いが引き継がれない可能性があります。マスキングはスコア化の対象を絞り込むものであり、レコードの残りの部分を重要でなくするものではありません。

よくある間違い

  • コンテキストはスコア化されないため、その品質は重要ではないと想定すること。
  • ターゲットが短く容易な場合に、トレーニング損失の低さを品質の証明として解釈すること。
  • ターゲットの長さが大きく異なるデータセット間で損失値を比較すること。
  • ユーザーメッセージにしか現れない内容をモデルが学習すると期待すること。

参考文献および関連資料

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

  1. 01Instruction Tuning With Loss Over InstructionsShi et al., 2024 · arXiv · arxiv.org回答だけでなくプロンプトでのトレーニングが役立つ場合。
  2. 02SFT TrainerHugging Face TRL docs · huggingface.co実際のcompletion-onlyおよびassistant-onlyの損失オプション。
  3. 03Causal language modelingHugging Face Transformers docs · huggingface.co次のトークン予測と、そのためのラベル準備方法。
  4. 04Supervised Fine-TuningHugging Face LLM Course · huggingface.coチャットデータでのファインチューニングのステップバイステップ。

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

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

営業へのお問い合わせ