No. 003決定論1 分で読める

自信満々に間違った売上数字:LLMが計算できない理由

モデルは完璧な体裁で売上数字を差し出す。その背後に算術はない。研究が示すとおり、この失敗は構造的なものだ――そして解決策も同様に。

2025年10月、デロイトはオーストラリア政府に報酬を返還した。同社は雇用・職場関係省に44万豪ドルの調査報告書を納品していたが、公開された報告書には連邦裁判所判決からの捏造された引用と、実在しない学術論文への参照が含まれていた(The Guardian, 2025)。修正版では、GPT-4oが草稿作成に使用されたことが開示された。その後の報道によれば、返還額は約9万7,000豪ドル――契約の最終支払い分に相当する。

一つの事実が、金額よりも重要だ。捏造を発見したのは、同社の審査でも、クライアントの審査でもなかった。参照文献を確認した外部の研究者だった。成果物は、通過するよう設計されたあらゆる審査層を通過していた。なぜなら、見た目には何も間違っていなかったからだ。

これが問題の本質だ――失敗するモデルではなく、返答するモデル。言語モデルに200行の売上合計を求めると、桁数も通貨記号も正しく、自信に満ちた文章を添えた答えが返ってくる。しかし確実に得られないのは、合計値そのものだ。答えがなければ気づかれる。体裁の整った誤答は、取締役会に転送される。

そして体裁は決して崩れない。なぜなら、その自信もまた生成されたテキストだからだ。モデルは自分が間違っていることを知らない。抑制すべき内部アラームなど存在しない。数字を断言する文章と数字そのものは、同じ場所から来ている――次の確率的なトークンとして。

もっともらしいことと、計算されることは違う

誤った数字をモデルの成熟度の問題として片付けたくなる衝動がある――次のバージョンなら正しく計算できるはずだ、と。しかし研究はその失敗が構造的なものであり、その理由について異例なほど一致した見解を示している。

GPT-4に3桁同士の掛け算を求めたところ、ゼロショットで正解率59%、ChatGPTは55%だった(arXiv, 2023)。4桁になるとGPT-4は3%に落ち、5桁では0%になった。Faith and Fateの著者たちはそのメカニズムを追跡した:トランスフォーマーは、見たことのある線形化されたフラグメントを照合することで複合的な問題を処理する――手続きではなく、パターン照合だ。崖は、パターンが尽きるまさにその場所に存在する。

加算も安全ではない。2025年の分析によれば、LLMは1桁先読みのヒューリスティックで加算を行っており、アルゴリズムではない。プロンプトやトークン化に関わらず、繰り上がりが1桁を超えて連鎖する箇所で正確さが崩壊し、その失敗は繰り上がり構造だけから予測可能だ(arXiv, 2025)。ランダムなノイズではなく、系統的な失敗だ。モデルはほぼ計算しているのではない。計算と結果が一致することが多い、別の何かをしているのだ。

AppleのGSM-Symbolicは、残された逃げ道を塞いだ――これは難しい算術にしか当てはまらないのではないか、という逃げ道を(Apple, 2024)。小学校レベルの文章題を取り上げ、数字だけを変えると:テストされた最先端モデルはすべて精度が低下した。もっともらしいが無関係な一文を加えると:正確さは最大65%低下した。さらに、同じ問題テンプレートの新しいインスタンス間で正確さが顕著にばらついた――同じ問題を言い換えると、異なる答えの分布が返ってくる。この最後の発見がデモの問題を説明する。デモは分布からの1回の抽出だ。監査は分布そのものだ。

著者たちの評決――「現在のLLMは真の論理的推論ができない」――は、研究論文としては異例なほど率直だ。誰もこれを覆していない。

100 50 0 accuracy, % zero-shot scratchpad 59 92 3×3-digit 4 4×4-digit 0 5×5-digit
GPT-4のn桁×n桁の掛け算における正確さ:ゼロショット対ステップバイステップのスクラッチパッド。Faith and Fate, NeurIPS 2023。

明白な修正策を、測定する

この失敗に直面したチームは誰もが同じ4つの修正策に手を伸ばす。それぞれが測定されている。

検索拡張。 FinanceBenchは、検索システムが文書を提供する環境で、GPT-4-Turboに公開財務書類に関する150の質問を行った。81%の質問に対して誤答または回答拒否が生じた(Patronus AI, 2023)。GPT-4-Turbo、Llama 2、Claude 2、ベクターストア、長いコンテキストなど16の構成で、手動レビューされた2,400件の回答全体にわたって弱点が露呈し、証拠ページが完璧に提供されない場合にはモデルが数字を幻覚した。検索は文書を取得する。モデルは依然として数字を誤る。

グラウンディング。 BBCはChatGPT、Copilot、Gemini、Perplexityに自社記事への直接アクセスを与え、ニュースについて質問した。51%の回答に重大な問題があり、91%には何らかの問題があった。BBCコンテンツを引用した回答の19%が事実誤り――誤った記述、誤った数字、誤った日付――を含んでおり、BBC記事に帰属する引用の13%は改変されているか、存在しないものだった(BBC, 2025)。情報源は手元にあった。それでも数字は歪んだ。

より賢いモデル。 OpenAI自身のシステムカードによれば、o3はPersonQAプロンプトの33%でハルシネーションを起こし、o4-miniは48%――旧モデルo1の16%に対して(OpenAI, 2025)。ベンダー自身の測定によれば、新しい推論モデルは前世代の2〜3倍のハルシネーションを起こす。o3は単により多くの主張をする――正しいものも、捏造されたものも、同じ確信の温度で。

より良いプロンプト。 ステップバイステップのスクラッチパッドプロンプティングにより、GPT-4の3桁の掛け算は59%から92%に向上する(arXiv, 2023)。改善された――それでも12問に1問は誤答だ。GPT-3を4桁の掛け算で徹底的にファインチューニングしても、未見の4桁問題で約40%、5桁では0%だった。上限はメカニズムにあり、プロンプトにはない。

どの修正策も確率を動かす。しかし誰が算術を行うかは変わらない。答えは依然としてもっともらしい数字の分布からサンプリングされており、その分布の中で合計値に一致するのはただ一つだ。

0 50 100 % RETRIEVAL · FINANCEBENCH 2023 wrong or refused 81% GROUNDING · BBC 2025 significant issues 51% factual errors introduced 19% REASONING · PERSONQA, OPENAI 2025 o1 (predecessor) 16% o3 33% o4-mini 48%
修正策適用後の失敗率。FinanceBench 2023 · BBC 2025 · OpenAI o3 / o4-mini システムカード 2025。

算術を担う主体を変える

構造的な答えは、能力の境界線に沿って引かれた分業だ。言語モデルは言語において卓越しており、台帳においては信頼できない。だからモデルは計算を行う主体であってはならない。

SQAIはその分割の上に構築されている。モデルは型付きのインテント――region = "east" の条件で amount を合計する――を作成し、SQAIランタイムがそれをコンパイル済みコードとして実行する:ハッシュで固定されたコントラクトに対して検証され、ポリシーに照合され、単一スレッドでfloat64として計算され、出所情報とともに返される。

{
  "status": "ok",
  "value": 2130.5,
  "rows_matched": 5
}

この2130.5は確率的なトークンではない。445モジュールにわたる4,574の読み取り専用ケイパビリティ(そのうち4,564は完全に決定論的)の上で、決定論的なカーネルが生成した合計値であり、ウォーム状態で0.83〜0.93ミリ秒で応答する。

決定論的とは、検証可能であることを意味する。finance.npv(0.1, [-1000, 300, 420, 560, 680]) は計算ハッシュ b74f67d0… のもとで505.020148896933を返す――TypeScriptからの呼び出しでもPythonからの呼び出しでも、同じ値と同じハッシュが返る。結果は一つの正規JSON形式でハッシュ化されるからだ。この主張は誠実にスコープされている:宣言された実行スコープ内での決定論であり、過大な主張をするのではなく、ランタイムバージョン、プラットフォーム、精度モード、スレッド数を記録したエンベロープを持つ。同じプロンプトに対するモデルの答えは、次の実行で自分自身と一致することを約束できない。SQAIは、どちらの言語でも、何ヶ月後でも、バイト単位で同一の再現が可能だ。

もう一つの漏れがあり、ほとんどのスタックはそれを放置している。計算エンジンを接続し、生のクエリ行を「要約のため」としてコンテキストに流し込む――するとモデルは静かに行から数字を再導出し、再発明する。SQAIはコンテキストをガバナンスされた境界として扱う:モデルに届くのは最大25行、250セル、32,000バイトであり、デフォルト上限は100行、ハード実行上限は1,000行だ。切り捨ては常に宣言されるため、モデルは見たものを合計したと正直に主張できない。部分的な行は表示されないため、半端なレコードが想像による補完を誘発しない。集計は境界の前に計算される。モデルが受け取るのは答えであり、宿題ではない。

そしてポリシーはプロンプトではない。許可されたソース、フィールド、関数は createSQAI() 時にコードで固定され、実行前にインプロセスで確認される。モデルのツール入力にはポリシーフィールドが一切含まれないため、それを拡張する余地はない。ポリシー外のケイパビリティを要求しても、創造的な回避策は生まれない――policy_denied_function が返るだけだ。この論拠はエージェントにSQLを書かせない理由と同じだ:生成されたテキストをベストエフォートの指示でガバナンスするのではなく、テキストが触れられないホワイトリストで実行をガバナンスする。

GOVERNED BOUNDARY MODEL language in, language out sum(amount) · region = "east" typed intent — never a SQL string ENGINE contract → policy → execute float64 · 1 thread · sub-ms warm value 2130.5 · rows 5 plan_hash f87610d8afeb… byte-identical replay · TS ≡ PY answer, not rows ≤ 25 rows · ≤ 250 cells · ≤ 32,000 B truncation always declared
分業の構造:モデルは型付きインテントを作成し、float64カーネルが計算する。行数の上限により、生データはコンテキストから遮断される。

誰が算術を行ったのか?

次にAIシステムが売上数字を差し出したとき、市場のあらゆるアーキテクチャを仕分ける問いが一つある:誰が算術を行ったのか?

答えが「モデル」であれば、あなたが手にするのは体裁は完璧だが出所不明の数字であり、唯一の検証手段は人間が作業をやり直すことだ――自動化しようとしていたまさにその作業を。デロイトの捏造が発覚したのは、プロセスの外にいた一人の研究者が確認しようと決めたからだ。それはコントロールではない。運だ。

答えが「SQAIランタイムであり、ハッシュはこれだ」であれば、検証は再現だ:同じインテント、同じランタイム、同じバイト。誤った数字が誤った加算ではなく展開されたジョインから来る場合、失敗はより微妙で静かになる――それはそれ自体の話だ。しかし規律は一文に収まる:モデルは問いを書く、答えは決して書かない。

誤った売上数字は自ら名乗り出ない。整形され、引用され、自信を持って届く――そして5桁の掛け算では、決して正しくない。それが入り込めないパイプラインを構築せよ。