Are Large Language Models Robust in Understanding Code Against Semantics-Preserving Mutations?
本論文は、最先端の大規模言語モデルがコードタスクにおいて高い予測精度を達成する一方で、欠陥のある推論に依存し、意味を保持するコード変換に直面すると予測を変更するなど、著しい脆弱性を示すことを明らかにする。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
非常に優秀な学生がいて、複雑な数学の問題を解き、信じられないほど賢く聞こえる論文を書くことができると想像してみてください。その学生に、問題を「どのように」解いたかを説明させてみると、完璧なステップバイステップの説明が返ってきます。あなたは、その学生が本当に内容を理解していると感じるでしょう。
しかし、もし同じ学生に、「わかった、じゃあ全く同じ問題を解いてほしい。ただし、『りんご』という単語の代わりに『果物』を使い、『足す』という代わりに『合計する』と言うように」と言ったらどうなるでしょうか。
もしその学生が突然混乱し、答えを変えたり、全く異なる(そして間違った)説明をしたりしたら、あなたは彼らが数学の「論理」を実際に理解していたわけではないことに気づくはずです。彼らは単に、あなたが以前に使った特定の単語やパターンを暗記していただけなのです。
これは、オックスフォード大学の研究者たちが、大規模言語モデル(LLM)にコンピュータコードを理解させるよう求めた際に発見した事実と全く同じです。
「雰囲気コーディング」の罠
今日、多くの人がコードを書くために AI ツールを利用しており、この傾向は「雰囲気コーディング」と呼ばれています。私たちはこれらの AI モデルにバグの修正やプログラムの作成を任せています。しかし、研究者たちは恐ろしい問いを投げかけました:これらの AI モデルは実際にコードの仕組みを理解しているのでしょうか、それともパターンに基づいて非常にうまく推測しているだけなのでしょうか。
それを明らかにするために、研究者たちは AI をテストを受ける学生のように扱いましたが、そこにひねりを加えました。
「変形」テスト
研究者たちは、いくつかのコンピュータプログラムを取り出し、それらに対して 5 つの特定の「マジックトリック」を施しました。これらのトリックはコードの「見た目」(構文)を変化させましたが、「意味」と「結果」(意味論)は完全に同一のままに保ちました。まるで、「猫がマットの上に座った」という文を、「マットの上に、その猫は休んだ」と書き換えるようなものです。意味は同一ですが、使われている単語は異なります。
彼らが使用した 5 つのトリックは以下の通りです:
- 変数名の変更:
my_listをx9z2に変更する。 - 比較の鏡像化:
if x > 5をif 5 < xに変更する。 - 論理の入れ替え: 条件分岐の「if」と「else」の部分を切り替える。
- ループ変換: 「for」ループを「while」ループに変更する。
- ループのアンローリング: コンピュータに繰り返し実行させる代わりに、ループの最後の数ステップを手動で記述する。
結果:賢い推測者であって、真の思考者ではない
研究者がこれら 9 つの異なる AI モデル(GPT-5.2 や Gemini-3 といった最も有名なものを含む)に対してこれらのテストを実行したところ、いくつかの懸念すべきパターンが発見されました:
- 「欠陥のある推論」の問題: AI が正解を出したとしても、その理由は間違ったものであることがよくありました。実際、10% から 50% の確率で、AI は完全に破綻した、あるいは無意味な説明に基づいて正解を導き出していました。まるで、数学のテストで正解を推測したが、それを正当化するためにでっち上げた数式を書き込んだ学生のようなものです。
- 「脆弱性」の問題: 上記のトリックを用いてコードが「変形」されたとき、AI のパフォーマンスは崩壊しました。一部のモデルでは、精度が最大で70% 低下しました。
- 比喩: 「牛肉を調理せよ」と言えば完璧にステーキを調理できるシェフが、「牛を調理せよ」と言われるとパニックになり、台所を焦がしてしまうと想像してください。AI モデルはまさにそのようなシェフです。彼らは言葉のわずかな変化に混乱し、その「食事」(プログラムの結果)が全く同じであるにもかかわらず、混乱してしまいます。
- 「変数名」への感受性: モデルは変数名に対して驚くほど敏感でした。
totalからsum_totalへ名前を変更するだけで、コードの論理が同一であるにもかかわらず、失敗することがよくありました。興味深いことに、人間も不適切な命名によってわずかに混乱しますが、AI の反応はそれよりもはるかに極端でした。
「トップの学生」も完璧ではない
研究者たちは、無料のオープンソースモデルと高価なプライベートモデル(GPT-5.2 や Gemini-3 など)の両方をテストしました。
- 高価なモデルは、元のコードに対して正解を出し、良い説明を提供する点で最も優れていました。
- しかしながら、コードがわずかに変更されると、これらの「トップの学生」さえもひどくつまずきました。彼らのパフォーマンスは大幅に低下し、標準的なテストでの高い精度が、彼らが根本的な論理を本当に理解していることを意味しないことを証明しました。
結論
この論文は、現在の AI モデルは脆いものであると結論付けています。彼らはパターンを認識し、人間の推論を模倣することにおいては卓越していますが、コードが実際にどのように機能するかについての「形式的な」理解は欠いています。
彼らに一つの方法で問題を解かせれば、正解するかもしれません。しかし、同じ質問をわずかに異なる方法で(意味が同一であっても)尋ねると、完全に失敗する可能性があります。これは、現時点では、これらのモデルがコードを深く理解していると盲目的に信頼すべきではないことを示唆しています。彼らは正しい答えを暗唱できる非常に高度なオウムのようなものであり、なぜその答えが正しいのかを常に知っているわけではありません。
研究者たちは、AI をコーディングに対して真に信頼できるものにするためには、彼らの学習能力を、厳格で形式的なルール(答えだけでなく、宿題自体をチェックする数学の先生のようなもの)と組み合わせる必要があると提案しています。そうすることで、彼らが単に推測しているだけではないことを保証できるからです。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。