[論文レビュー] CodeHalu: Investigating Code Hallucinations in LLMs via Execution-based Verification
この論文は、実行ベースの検証を用いてLLMにおけるコードハリューサインを定義・分類するフレームワークCodeHaluを紹介する。4つのカテゴリー(マッピング、ネーミング、リソース、論理)を提案し、動的検出アルゴリズムと、699のタスクにまたがる8,883件のサンプルを含むベンチマークを構築する。16のLLMにおける評価では顕著なハリューサイン率が確認され、コード生成におけるモデルの信頼性向上の緊急性が浮き彫りになった。
Large Language Models (LLMs) have made significant progress in code generation, offering developers groundbreaking automated programming support. However, LLMs often generate code that is syntactically correct and even semantically plausible, but may not execute as expected or fulfill specified requirements. This phenomenon of hallucinations in the code domain has not been systematically explored. To advance the community's understanding and research on this issue, we introduce the concept of code hallucinations and propose a classification method for code hallucination based on execution verification. We categorize code hallucinations into four main types: mapping, naming, resource, and logic hallucinations, with each category further divided into different subcategories to understand and address the unique challenges faced by LLMs in code generation with finer granularity. Additionally, we present a dynamic detection algorithm called CodeHalu designed to detect and quantify code hallucinations. We also introduce the CodeHaluEval benchmark, which includes 8,883 samples from 699 tasks, to systematically and quantitatively evaluate code hallucinations. By evaluating 17 popular LLMs using this benchmark, we reveal significant differences in their accuracy and reliability in code generation, offering detailed insights for further improving the code generation capabilities of LLMs. The CodeHalu benchmark and code are publicly available at https://github.com/yuchen814/CodeHalu.
研究の動機と目的
- 文法的妥当性ではなく実行の正しさに基づいて、LLMにおけるコードハリューサインを定義し、体系的に分類すること。
- コード生成におけるハリューサインの標準化された評価が不足している問題に対処し、実行時エラーおよびセキュリティ脆弱性を引き起こす可能性を低減すること。
- 実際のコード実行を通じてハリューサインをリアルタイムに同定する動的検出アルゴリズムの開発。
- 699のタスクにまたがる8,883件のサンプルを含む包括的なベンチマーク(CodeHalu)を構築し、LLMにおけるハリューサインの頻度と種別を評価すること。
- 16の代表的なLLMにおけるハリューサインの広がりを実証的に示し、機能的正しさの向上に向けた今後のモデル改善の根拠を提供すること。
提案手法
- 生成されたコードが文法的に正しくても実行時に失敗する、または機能要件に違反する場合を、コードハリューサインと定義する。
- 実行失敗のパターンに基づいて、4つの主要タイプ(マッピング、ネーミング、リソース、論理)に分類し、それぞれにサブカテゴリを設ける。
- テストケースに対して生成コードを実行することで、リアルタイムにハリューサインを同定する動的検出アルゴリズムを開発する。
- 699のプログラミングタスクと8,883件のハリューサインサンプルを含むCodeHaluベンチマークを構築し、期待される動作と実行結果をアノテーションで付与する。
- 正しさの検証の根幹として実行ベースの検証を用い、ハリューサインを単なる文法的・意味的誤りと区別する。
- 16の代表的なLLMをベンチマークで評価し、ハリューサインの頻度とカテゴリごとの分布を測定する。

実験結果
リサーチクエスチョン
- RQ1LLMを用いたコード生成において生じる主なハリューサインのタイプとサブタイプは何か?
- RQ2実行正しさ基準で評価した場合、異なるLLMはどの程度の頻度でハリューサインコードを生成するか?
- RQ3コード生成におけるハリューサインは、論理的エラー、ネーミングエラー、リソース関連エラー、マッピングエラーのいずれに起因しているか?
- RQ4文法的に正しいが機能的に誤りであるハリューサインを、実行ベースの検証が効果的に検出・分類できるか?
- RQ5実世界のプログラミングタスクにおいて、異なるLLMアーキテクチャやプロンプト戦略におけるハリューサイン率はどのように変動するか?
主な発見
- 16の評価対象LLMすべてにおいてコードハリューサインが広く発生しており、頻度やタイプの分布に顕著な差が認められた。
- 最も頻度の高いハリューサインタイプは論理的エラー(例:誤ったループや条件式の処理)とリソース関連エラー(例:整数オーバーフロー、メモリエラー)であった。
- MagicCoder や StarCoder などの一部のモデルは、大きな整数の取り扱いやジェネレータの誤用により、OverflowError や StopIteration 例外を発生させた。
- 実行ベースの検証は、文法的に正しいが意味的に誤ったハリューサインを効果的に特定でき、ベンチマークの有効性を裏付けた。
- ベンチマークの結果から、最新鋭のLLMですら実行評価では20%以上の確率で正しく動作しないコードを生成することが判明した。
- 本研究は、ハリューサインがランダムではなく、識別可能なパターンに従うことを示し、今後のモデル学習における的確な緩和戦略の実現が可能であることを示した。

より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。