萌えハッカーニュースリーダー

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

出典: https://www.gilesthomas.com/2025/10/llm-from-scratch-20-starting-training-cross-entropy-loss
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

損失(ろうしつ)関数だけに、ロウソクでも灯して落ち着くのじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search