LLMの学習方法:損失、マスキング、次トークン予測
- アシスタントのみマスキング
- 因果マスキング
- クロスエントロピー損失
- ファインチューニング
- 言語モデルトレーニング
- LLM最適化
- モデル学習プロセス
- 次トークン予測
- 教師ありファインチューニング
- トークン確率
- Ready Tensor
- Mohamed Abdelhamid
- Wasif Mehmood
🏠
ホーム – 全レッスン
⬅️
前 – LLMファインチューニングの基礎
➡️
次 – 教師ありファインチューニングロードマップ
言語モデルは次のトークンを予測する巨大な分類器であることを見てきました。
しかし、まだ答えていない質問があります:どのようにしてそれが得意になったのでしょうか?
このレッスンでは、すべてのLLM学習の背後にあるメカニズムを示します — インターネット上のGPTの事前トレーニングであろうと、会社のデータでのLlamaのファインチューニングであろうと。
一緒に機能する3つのコアコンセプトを学びます:次トークン予測(タスク)、クロスエントロピー損失(測定)、マスキング(何から学ぶか)。これらは、このプログラムで使用するすべてのファインチューニング技術の基礎を形成します。
最後には、モデルがテキストから「学習」するときに正確に何が起こるか、そして異なるマスキング戦略がなぜ異なるモデルの動作を生み出すのか — 文を完成させるベースモデルから、命令に従うチャットモデルまで — を正確に理解するでしょう。
予測から学習へ
前回のレッスンでは、大規模言語モデルを分類器として扱いました — 数万の可能性の中から次のトークンを予測します。
それは推論中に行うことです:コンテキストを取得し、次のトークンを予測し、繰り返します。
しかし、その表面下にはより深い質問が隠れています:
そもそもどのようにしてそれほど上手に予測することを学んだのでしょうか?
答えはシンプルなフィードバックループにあります。
すべてのモデルはひどい状態から始まります — ほぼランダムにトークンを推測します。トレーニング中、推測を正しいトークンと比較し、どれだけ間違っていたかを測定し、次回より良い予測を行うためにパラメータを調整します。
そのプロセス — 予測、比較、調整 — が、ランダムなモデルを有能なモデルに変えるものです。
実際にどのように起こるかを解明しましょう。
トレーニング目標の選択
モデルの目標はすでに知っています:これまでに見たすべてを考慮して次のトークンを予測します。
その単一の目標は驚くほど強力です。文法、スタイル、推論、さらには世界についての事実を学習する方法です — 次に通常何が来るかを予測するだけで。
この単純なシーケンスでのトレーニングを想像してください:
「The cat sat on the …」
トレーニング中、モデルは文だけを見るわけではありません。
トークン化されたバージョンを見ます — 単語やサブワードを表す数字 — そして、各トークンを順番に予測しようとします。
各ステップで、モデルは語彙全体にわたって確率分布を生成します — おそらく50,000の可能なトークン。
「mat」が0.78の確率を得て、他のすべてのトークンがそれより少なければ、それは良い予測です。
「mat」に0.01を与え、「chair」に0.70を与えた場合、それは間違いです。
次の質問は:それがどれほど大きな間違いだったかをどのように知るのでしょうか?
間違いの測定:クロスエントロピー損失
学習は間違いから始まります — しかし、間違いを測定する方法が必要です。
それが損失関数の役割です。モデルの予測確率と正しい次のトークンを取り、それらがどれだけ離れているかを計算します。
言語モデリングでは、その関数はほとんど常にクロスエントロピー損失です。
形式的には、単一トークンの損失は次のように計算されます:
ここで:
- は語彙サイズ
- )は真のラベル(正しいトークンの場合は1、それ以外は0)
- )はトークンに対するモデルの予測確率
正しいトークンのみがを持つので、これは次のように簡略化されます:
ここで、はモデルが真の次のトークンに割り当てた予測確率です。
「The cat sat on the …」の後の次のトークン確率をモデルが次のように予測するとしましょう:
正しい答えは「mat」です。
クロスエントロピー損失は、そのトークンに割り当てられた確率(0.78)を見て、負の対数を使用してペナルティに変換します:
損失が低いほど、予測が良いことを意味します。
モデルが「mat」に0.99を予測していれば、損失ははるかに小さく(0.01)なります。0.01を予測していれば、損失ははるかに高く(4.61)なります。
予測されたトークンのこの損失値がモデルのトレーニング信号になります。
それは、その予測につながった内部接続(重み)を強化するか弱めるかをモデルがどのように知るかです。
1つのトークンからシーケンスへ
実際のトレーニング例は1つのトークンより長いので、モデルはシーケンス内のすべての位置でこの予測プロセスを繰り返します。
たとえば、文が次の場合:
「The cat sat on the mat.」
トレーニングプロセスは次のようになります:
各ステップで、モデルは与えられた真の先行トークンに基づいて次のトークンを予測し、予測を実際のトークンと比較し、損失を計算します。
モデルはトレーニング中に自身の予測トークンをシーケンスに追加しません — その自己回帰的動作は推論中にのみ発生します。
このアプローチは教師強制として知られており、モデルが自身の間違いを複合化するのではなく、正しいコンテキストから学習することを保証します。
トークンごとの損失は平均化されてシーケンスレベルの損失を生成し、モデルの重みを更新するために使用されます。
何百万ものそのような例の後、小さな改善が蓄積され — モデルは多様なコンテキストで次のトークンを予測することが着実に上手になります。
「正しい」答えがペナルティを受けるとき
トークンレベル損失の興味深いニュアンスがあります。
トレーニングデータに次が含まれているとします:
質問: フランスの首都は何ですか?
回答: フランスの首都はパリです。
トレーニング中、モデルは「フランスの首都は何ですか?」を見て、次のトークンを予測しなければなりません。
モデルが次のように割り当てたとします:
- 「Paris」に0.5の確率
- 「The」に0.3の確率(トレーニング例の実際の次のトークン)
損失は「The」で計算されます:
待ってください — モデルは「Paris」により高い信頼度を与えました。これは意味的に正しいです!なぜペナルティを受けているのでしょうか?
モデルは意味で判断されるのではなく — 正確なトレーニングシーケンスと一致するかで判断されるからです。
この場合、トレーニング例はたまたま「The capital of…」で始まり、「Paris…」ではありませんでした。両方とも有効な応答ですが、トレーニングデータと一致するのは1つだけです。
これは欠陥のように見えるかもしれませんが、実際には問題ありません。理由は次のとおりです:
モデルは数十億の例を見ます。いくつかは回答を1つの方法でフォーマットし、他は異なる方法でフォーマットします。その大規模な分布全体で、モデルはより深いパターンを学習します — パリがフランスの首都に関連付けられていること — たとえ個々の例が「正しいが異なってフォーマットされた」予測にペナルティを与えたとしても。
損失はローカル、学習はグローバルです。任意の単一トークン予測は恣意的に感じるかもしれませんが、数十億のトレーニングステップで平均化されると、これらの信号は一貫した言語理解に収束します。
これは重要な洞察です:言語モデルは、個々の例が「公平」であることからではなく、膨大なデータにわたる統計的パターンから学習します。
マスキング:どのトークンが重要かを決定する
これまで、すべてのトークンを同等に重要であるかのように扱ってきました。
実際には、すべてのトークンが損失に寄与すべきではありません。
そこでマスキングの出番です
マスキングには2つの目的があります:
- 予測を行う際に各トークンが見ることができるものを制御します(因果マスキング)。
- 実際に損失にカウントされるトークンを制御します(アシスタントのみマスキングおよびその他の選択的戦略)。
これらを組み合わせることで、モデルの動作と最適化する対象を決定します。
1. 因果マスキング(ベースモデル)
因果マスキングは、予測中にモデルが将来のトークンを見ることができないようにします。
それがモデルを自己回帰的に保つものです — 左から右へ予測します。
トレーニングシーケンスが次の場合:
モデルは「The cat sat」を使用して「on」を予測できますが、「on the」を使用して「sat」を予測することはできません。
視覚的には、三角形のマスクを想像できます — 各トークンは自分自身と以前のトークンにのみ注意を払うことができます。
これにより、推論時にモデルが使用するのと同じ動作が維持されます:1つのトークンを生成し、それを追加して、前進します。
2. アシスタントのみマスキング(チャットモデル)
命令追従またはチャットモデルをトレーニングする際、因果マスキングを引き続き適用します —
モデルは引き続き左から右へトークンを予測します。
ただし、ユーザーのトークンではなく、アシスタントのトークンに対してのみ損失を計算します。
例えば:
ユーザー: フランスの首都は何ですか?
アシスタント: フランスの首都はパリです。
ここで、因果マスキングにより、モデルはその前のものだけを使用して各アシスタントトークンを予測することが保証されますが、アシスタントのみマスキングにより、アシスタントの部分にのみ損失が適用されることが保証されます:
「フランスの首都はパリです。」
モデルはユーザーの入力を予測することを学習しません — 段階的に適切な返信を生成することを学習します。
したがって、アシスタントのみマスキング = 因果マスキング + 選択的損失スコアリング。
この区別 — 何がスコアリングされるか — が、テキストを完成させるベースモデルと、プロンプトに従う命令調整モデルを分けるものです。
マスキング(およびそのパートナーであるラベルシフト)については、今週後半の専用レッスンで詳しく再検討します。
選択的スコアリングの力
この選択的スコアリングのアイデアは信じられないほど強力です。
シーケンスのどの部分に損失を適用するかを選択することで、トレーニングするモデルの種類を形作ることができます。
それが、ベースモデルをチャットモデルに変える方法です — ユーザー入力をマスクアウトし、アシスタント応答に損失を集中させるだけです。
そして、このコンセプトはチャットをはるかに超えて拡張されます。
たとえば、答えを出す前に段階的に推論するモデルを設計し、推論トークンにのみ損失を適用して、より良い論理的分解を教えることができます。
または、解釈可能性と精度のバランスを取るために、推論と最終回答の両方を異なるようにスコアリングできます。
マスキングは単にトークンを除外することではありません — モデルが最適化することを学習する動作の種類に対する細かい制御です。
学習ループ:すべてがどのように組み合わさるか
すべてをまとめましょう。
言語モデルのトレーニングは繰り返しループに従います:
- テキストのバッチを取る。
- すべての位置で次のトークンを予測する。
- 損失を計算する(クロスエントロピーを使用)。
- 有効なトークンのみがカウントされるようにマスキングを適用する。
- 損失を減らすためにモデルの重みを更新する。
次に繰り返します — 何十億回も。
それだけです。
このサイクル — 予測 → 損失 → マスキング → 更新 — は、すべてのベースモデル、すべてのファインチューニング実行、およびそれらの上に構築されたすべてのアライメント方法の背後にあるエンジンです。
同じプロセスがトレーニングとファインチューニングの両方を強化します。
変わるのは、使用されるデータセットと、モデルが何に焦点を当てることを学習するかを決定するマスキングまたは選択的スコアリング戦略です。
事前トレーニングでは、モデルは大規模で多様なテキストコーパスから一般的な言語パターンを学習します。
ファインチューニングでは、同じ学習プロセスをより対象を絞ったデータセットに適用します — 命令–応答ペア、医療記録、法律文書、科学テキストなど — 定義する特定の目標に動作を適応させます。
それが、単一のトレーニングメカニズムが汎用アシスタントから高度に専門化されたドメインモデルまですべてを生み出す方法です。
重要なポイントと次のステップ
言語モデルがどのように学習するかがわかりました — 何をするかだけでなく。
- 次トークン予測が目標を与えます。
- クロスエントロピー損失がどれだけ間違っていたかを伝えます。
- マスキングがテキストのどの部分が学習にとって重要かを決定します。
これらを組み合わせることで、生データが理解に変わります — 続くすべてのファインチューニング方法の基礎。
次に、この同じ学習ループが教師ありファインチューニング(SFT)をどのように強化するかを見ます —
厳選されたラベル付き例が、事前トレーニングされたモデルを特定のスキル、ドメイン、または動作に向けて導く場所。
次のレッスンでお会いしましょう!
- 学習信号:LLMが実際にどのように改善するか
- 因果マスキング(ベースモデル)
- アシスタントのみマスキング(チャットモデル)

コメント