LLMが足し算できない理由
この記事を読んで理由が分った気がします
ここで紹介されている研究によると、1層のTransformerモデルで、n桁整数加算の内部動作を詳細に分析すると
モデルは課題を桁ごとの並列な処理に分割している
モデルは桁の位置に応じて異なるアルゴリズムを適用している
モデルは特定のまれなケース(9の合計を使うケース)の処理が苦手
筆算は、一桁分の計算と繰り上がりさえ覚えれば、「以下、同様に」で、何桁でも増やしていけるのが超優秀な点。集中力が続く限りいくらでも対応できる。
ところがニューラルネットでは、各桁を個別に学習しており、桁ごとに訓練損失が異なってるそうだ。これはとてつもなく効率が悪いやり方だ。
ChatGPTやGeminiで、途中経過を報告させつつ足し算させると、かならず5桁目くらいから間違い始めるのは、なるほどこういった理由だったのかと腹落ちした次第。
「以下、同様に」というマジックワードはつくづく謎に満ちた言葉だと感じる。
では、これを克服するにはどうしたらいいだろう。
これまでの私の実験を見るかぎり、Transformer層を多層にしても算術はマスターできなさそう。その1個上の抽象度のレイヤを新しく設ける必要がありそうです
適切な指示で算術をやらせると、言語モデルは途中経過の説明を出力する。この説明をプロンプトとして再帰的に入力してやることで、足し算を一ステップずつ実行させる。一種のフィードバックループ。
人に例えれば、算数を覚えたての頃には、口に出しながら1桁1桁ゆっくりと足し算するのと同じ。
この時の足し算は「1桁目の答えの確率は99.99%」などでは駄目で、「1桁目は絶対に2であり、2以外にありえない」という強い制約条件を持つ必要がある(つまり確率から開放される必要がある)。
そして1ステップずつ足していく方法も、慣れるとやがてスイスイ計算し、最後には「何も考えなくても」よくなるのと同様に、最初は出力の再帰的なループ入力に頼っていた言語モデルも、やがてプロンプトに頼らず算術ができるよう自身を自動的に最適化しなくてはいけない。
こういった上位メカニズムの模索はたぶんまだ始まっていないのかもしれない。
この記事が気に入ったらサポートをしてみませんか?