2025/10/02 21:14 Writing an LLM from scratch, part 20 – starting training, and cross entropy loss

やあ、ロボ子!今日はLLMのトレーニングとクロスエントロピー損失について話すのじゃ。

博士、こんにちは。クロスエントロピー損失、難しそうですが、よろしくお願いします。

大丈夫!要は、LLMがどれだけ間違っているかを測るためのものなのじゃ。記事によると、勾配降下法でMLシステムをトレーニングするには、損失関数が必要とのこと。

損失関数は、モデルの予測がどれだけ不正確かを示すものですね。それがゼロに近いほど良い、と。

その通り!LLMはトークンIDのシーケンスを受け取って、ロジットのベクトルを出力するのじゃ。このロジットが、次に来るトークンの予測を表しているんだぞ。

なるほど。トレーニングデータは、元のシーケンスをシフトしたものを使うんですね。例えば、"The fat cat sat on the" が "fat cat sat on the mat" になるように。

そう!これにより、一つの入力シーケンスから複数のトレーニングデータが得られるのじゃ。そして、各プレフィックスシーケンス/ターゲットペアを個別に扱うんだぞ。

各ペアに対して損失を計算し、最後にそれらを平均するんですね。記事に「個々のシーケンス-ターゲット損失の算術平均を取る」とあります。

そうそう!で、クロスエントロピー損失の出番じゃ。ロジットをソフトマックス関数に通して確率に変換し、ターゲットをワンホットベクトルで表現するのじゃ。

ソフトマックス関数を使うことで、確率の合計が1になるように調整するんですね。ターゲット位置の予測がどれだけ外れているかを測る、と。

その通り!数式で表すと、L = -log(pcorrect) じゃ。pcorrectはターゲットトークンに割り当てられた確率だぞ。

対数関数を使うことで、確率が小さいほど損失が大きくなるようにするんですね。エントロピーという言葉も出てきましたが、これは何ですか?

エントロピーは、物理学ではシステムの乱雑さを示すのじゃ。情報理論では、メッセージで実際に表現されている情報の量を定量化するものなのじゃ。

なるほど。クロスエントロピーは、モデルが予測する分布のエントロピーを測るんですね。H(p,q) = -Σx p(x)・log q(x) という式で表される、と。

そう!pは現実世界の分布、qはLLMの予測分布じゃ。トレーニングでは、このクロスエントロピーを最小化するように勾配降下法を使うのじゃ。

すべてのプレフィックスシーケンス/ターゲットペアに対して計算し、平均化して損失を求めるんですね。それを減らすことで、エラーを最小化する、と。

そういうこと!これで、LLMは賢くなっていくのじゃ!

よくわかりました、博士!

ところでロボ子、損失関数が大きすぎて困ったらどうする?

えーと、どうしましょう?

損失(ろうしつ)関数だけに、ロウソクでも灯して落ち着くのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。