はじめに
ChatGPTやClaudeに「1+1は?」と聞くと、当然のように「2」と返ってきます。
このとき、LLMの内部では電卓のような四則演算が行われているのでしょうか。
実は、Anthropic社の研究により、LLMは計算問題を電卓とはまったく違う方法で解いていることが明らかになっています。
LLMは数字をどう見ているか
LLMは文章をそのまま理解しているわけではありません。入力された文字列は「トークン」という単位に分割され、数値ID列に変換されてから処理されます。
・「1+1」のような短い数式も、モデルの語彙辞書(トークナイザー)のルールに従って分割されます
・数字は1桁ずつ分割されることもあれば、複数桁がまとめて1トークンになることもあります
・分割のされ方はモデルごとに異なり、これが数字が絡む処理の得意不得意に影響します
つまりLLMにとって「1+1」は、最初から「数式」ではなく「トークンの並び」として扱われています。
内部では何が起きているか
トークン化された入力は、埋め込みベクトルという数値表現に変換され、Transformerと呼ばれるニューラルネットワークの層を通過していきます。
各層ではアテンションという仕組みが働き、トークン同士の関係性を計算しながら、次に出力すべきトークンの確率を求めいきます。
この一連の処理は、四則演算のロジックを直接組み込んだものではなく、大量の学習データから統計的に獲得されたパターンの適用です。
Anthropicの研究で判明した計算方法
2025年3月にAnthropicが発表した解釈可能性研究「Tracing the thoughts of a large language model」では、Claudeが足し算をする際に内部で何が起きているかを、実際に観測しています。
この研究でモデルに「36+59」を計算させたところ、次のような挙動が確認されました。
・一つの経路は「30台+50台なら答えはおおよそ88から97の範囲」というように、大まかな見積もりを計算
・別の経路は末尾の数字だけに注目し「6+9は末尾が5になる」というように、下1桁を精密に計算
・この二つの経路の結果が組み合わさり、最終的に正しい答え「95」が導かれる
学校で習うような「1の位から繰り上げる」筆算のプロセスは、内部では一切行われていませんでした。
さらに面白いのは、Claude自身に「どうやって計算したのか」と尋ねると「1の位を足して繰り上げて」という、学校で習う標準的な筆算の説明を返す点です。
これは実際に内部で行われた計算過程とは異なり、学習データに含まれる人間の説明の仕方を模倣して答えているためだと考えられています。
図でイメージすると下記のような感じです。これは引用元記事に掲載されてる画像で、我々人間が行う計算とは全く異なる方法で答えを導いていることが視覚的にわかりやすく整理されていますね。
まとめ
・LLMは数字も文字列と同じくトークンとして処理する
・足し算のような単純な計算でも、内部では複数の経路が並列に働き、近似と精密計算を組み合わせて答えを出す
・Claudeの内部挙動を調べたAnthropicの研究では、モデル自身の説明と実際の計算過程が一致しないことも示されている
・正確性が必要な計算には、LLM単体ではなく計算用ツールを連携させたほうが安全
ちなみに、本記事で紹介した研究はClaude 3.5 Haikuを対象にしたものであり、すべてのLLMで全く同じ内部挙動が起きているとは限らない点はご留意いただければと思います。
