Core Concepts
大規模言語モデルは、単純なプログラムでは一定の程度コードの実行フローを説明できるが、複雑なプログラムでは出力を正しく予測することができない。コード生成能力とコード推論能力は必ずしも相関しない。
Abstract
本論文は、大規模言語モデル(LLM)のコード推論能力を評価するためのフレームワーク「CodeMind」を提案している。CodeMindは、独立実行推論(IER)、従属実行推論(DER)、仕様推論(SR)の3つのタスクを定義し、LLMのコード推論能力を包括的に評価する。
研究結果は以下の通り:
LLMは、単純なプログラムでは一定の程度コードの実行フローを説明できるが、出力を正しく予測することは難しい。特に、ネストした制御構文、複雑な条件式、API呼び出しなどを含むプログラムでは推論能力が低下する。
コード生成能力とコード推論能力は必ずしも相関しない。LLMの順位付けがコード生成とコード推論で大きく異なる場合がある。
仕様にテストデータを含めると、LLMのコード生成性能は向上するが、コード推論能力への影響は限定的である。
プログラミング言語の違いによる大きな差は見られない。むしろ、プログラムの複雑性がLLMのコード推論能力に大きな影響を与える。
ループ条件の理解や、ループ内部の変数値の追跡が、LLMのコード推論において特に困難な要因である。ループの展開によって推論性能が向上することが確認された。
Stats
プログラムの複雑性(循環的複雑度)が高いほど、LLMのコード推論能力が低下する傾向がある。