メニュー

堺市で運営しているプログラミングスクールADVANCEの教室の様子

【論文解説】AIはプログラミングの「思考力」をどう評価する?動的計画法におけるLLMの採点能力を認知診断モデルで分析

📌 この記事の結論

  • AIによるプログラミングコードの採点は、単なる正誤だけでなく、その裏にある「思考スキル」の習得度を診断することが重要です。
  • 大規模言語モデル(LLM)は「厳格な採点者」であり、誤ってスキルを認定する「Guess」が少ない一方、見落としや厳格すぎる採点による「Slip」が高い傾向にあります。
  • 小規模言語モデル(SLM)は、存在しないスキルを誤って認定してしまう「幻覚的な習得(高Guess)」の傾向が強く見られます。
  • AIは正しい推論を「認識」することはできても、それを「生成」することにはまだ大きな課題があるという「推論と生成の非対称性」が示されました。

1. はじめに:なぜAIのコード採点に「思考スキル」の診断が必要か?

近年、大規模言語モデル(LLM)はコード生成において目覚ましい進歩を遂げています。簡単なプログラミング問題であれば、まるで人間が書いたかのようなコードを生成する能力は、多くの人を驚かせました。しかし、より複雑なアルゴリズム問題、特に「動的計画法(Dynamic Programming, DP)」のような問題になると、その性能はまだ一貫性に欠けます。

現在のAIコード評価の主流は、多くの場合「pass@k」のようなブラックボックス的な指標に依存しています。これは、提出されたコードがテストケースをどれだけ通過したかを示すものであり、「正解か不正解か」という結果のみを評価します。しかし、プログラミング教育において重要なのは、単にコードが動くかどうかだけではありません。もしコードが失敗した場合、それが「なぜ」失敗したのか、どの「思考スキル」が欠けていたのかを理解することが、学習者にとっては非常に価値があります。

例えば、PythonやJavaScriptのコードで「タイムアウト」が発生した場合と、「誤った結果」が返された場合では、原因となる思考プロセスが全く異なります。タイムアウトは「最適化の欠如」、誤った結果は「ロジックの誤り」を示唆するかもしれません。AIが単に「不正解」とだけ返した場合、学習者は次に何を改善すべきか分かりにくいでしょう。このような背景から、本記事で紹介する論文は、AIがプログラミングコードの採点を通じて、学習者の「認知スキル」をどれだけ診断できるかを深く掘り下げています。

2. 紹介する論文の概要

📄 論文情報

タイトル Strict Graders and Hallucinated Mastery: A Cognitive Diagnostic Study of Language Models on Dynamic Programming
著者 Sartaj Solaiman, Md Fahim Arefin
掲載誌 CSEDM’26: 10th Educational Data Mining in Computer Science Education (CSEDM) Workshop, June 28, 2026, Seoul, South Korea
研究対象 大規模言語モデル(LLM)および小規模言語モデル(SLM)のプログラミング採点能力
研究期間 2026年発表の論文(研究期間は不明だが、データは2024年以降のものも含む)

研究の目的

この研究の主な目的は、言語モデル(LLMおよびSLM)がアルゴリズム問題、特に動的計画法(DP)に対して、単なる正誤判定を超えて、「推論」に基づいた診断的な評価を提供できるかを明らかにすることです。具体的には、以下の2つの問いに答えることを目指しています。

  1. 現在のLLMやSLMは、アルゴリズム問題に対して推論しているのか、それとも単に記憶されたソリューションのパターンマッチングをしているだけなのか?
  2. もし推論しているとすれば、その推論はどの程度まで及ぶのか?

特に、AIの評価における「推論と生成のギャップ」と「診断的評価の不足」という2つの課題に焦点を当てています。

研究の方法

本研究では、以下の4つの段階を経て、言語モデルの採点能力を詳細に分析しました。

  1. データ準備とQ-Matrix設計:

    • 問題選定:AtCoderの動的計画法(DP)問題28問を選定。うち約29%は2024年以降のコンテストから抽出され、学習データ汚染(contamination)のリスクを低減しています。これらの問題は、線形DP、グリッド/ツリーDP、部分集合DP、確率DP、最適化DPの5つのカテゴリに分類されました。
    • Q-Matrixの構築:各問題に必要とされる5つの潜在的スキル(K1: 問題分解、K2: 状態表現、K3: 遷移ロジック、K4: 境界条件、K5: 時間/空間最適化)をマッピングしたQ-Matrixを手作業で作成しました。
    • 人間が書いた解答の収集:各問題について、正解(AC)10件と不正解(WA/TLE/MLE)10件のPythonによる人間解答を合計560件収集しました。
  2. 実験グループの設定:

    • グループA(LLMを採点者として利用):Claude Sonnet 4.6とGPT-5.5の2つのLLMに、人間の解答を採点させました。
    • グループB(SLMを採点者として利用):Llama-3.1-8B、Granite-4.1-8B、Phi-4-mini-3.8Bの3つのSLMに、人間の解答を採点させました。
    • グループC(SLMをコード生成者として利用):同じ3つのSLMに、28問のDP問題を解かせ(合計84件のAI生成コード)、それらのコードは人間が手動で採点しました。これにより、「推論」と「生成」の能力差を比較します。
  3. 応答行列の生成:

    • 採点者モデルの評価(グループA, B)と、人間によるAI生成コードの評価(グループC)に基づき、各解答のスキル習得度を1(習得)または0(未習得)で示す応答行列を作成しました。
  4. 認知診断モデル(DINA)の適用:

    • DINAモデル(Deterministic Input, Noisy "And" Gate)を用いて、各モデルの採点行動における「Slip(スキルを習得しているのに見落とす確率)」と「Guess(スキルを習得していないのに偶然正しく採点する確率)」を推定しました。
    • さらに、Grader Reliability Index (GRI)を導入し、モデルの信頼性を評価しました。特に幻覚的な習得(高いGuess)には強いペナルティを課す設定(k=5)が用いられました。

3. 研究結果のポイント3つ

堺市で運営しているプログラミングスクールADVANCEの教室の様子

この研究から、言語モデルのプログラミング採点能力に関して、以下の3つの重要なポイントが明らかになりました。

✅ ポイント1:採点者の「厳格さ」と「幻覚」の二元性

採点者としての言語モデルは、大きく2つのタイプに分かれました。

  • 大規模言語モデル(LLM):Claude Sonnet 4.6やGPT-5.5(特にフィルタリング後やコンセンサスバージョン)は、「Slip(スキルを見落とす/厳格すぎる採点)」が高い一方で、「Guess(存在しないスキルを誤って認定する)」が低いという「厳格な採点者」の特性を示しました。これは、寧ろ評価を控えめにする傾向があることを意味します。
  • 小規模言語モデル(SLM):特にPhi-4-miniは、「Slip」が低い一方で、「Guess」が非常に高いという「幻覚的な採点者」の特性を示しました。これは、本来存在しないスキルを誤って「習得済み」と判定してしまう傾向が強いことを意味します。

この結果は、AIを採点者として導入する際に、モデルの規模だけでなく、その採点行動の傾向(厳格さ vs. 幻覚)を理解し、目的(例えば、厳しく評価して改善点を明確にするのか、それとも肯定的にフィードバックするのか)に応じて使い分ける必要があることを示唆しています。

✅ ポイント2:「推論はできても生成はできない」非対称性

この研究で最も衝撃的な発見の一つは、言語モデルにおける「推論と生成の非対称性(Reasoning-Synthesis Gap)」です。

  • 小規模言語モデル(SLM)は、人間が書いたコードを「採点する」能力においては、ある程度のスキル習得度を診断できました。つまり、正しい推論がコードに表現されているかを「認識」することはできたわけです。
  • しかし、同じSLMにDP問題を解かせ、その「生成されたコード」を人間が採点したところ、モデルが特定のスキルを習得しているという情報が数値的に検出できませんでした。これは、モデルが正しい推論を「生成する」能力においては、ほとんどスキルが欠如していることを示唆しています。

このギャップは、Scratchでブロックを組み合わせたコードは書けても、Pythonで複雑なアルゴリズムをゼロから設計する段階になると途端に難しくなる学習者の姿にも通じます。AIは、模範解答を見て「これは良いコードだ」と判断できても、「では自分で書いてみて」と言われると途方に暮れてしまう、というような状況が考えられます。

✅ ポイント3:特定スキルの診断難易度と信頼性評価

個々のスキルに関して、以下のような傾向が見られました。

  • K1(問題分解)とK5(時間/空間最適化)の難しさ: LLMとSLMのいずれにおいても、問題分解スキル(K1)や時間/空間最適化スキル(K5)の診断は難しいとされました。これは、これらのスキルがより抽象的であり、コードの表面的な構造からは判断しにくいことを示唆します。例えば、Pythonで書かれたDP問題で、時間制限超過(TLE)となる原因がK5の欠如にあると正確に診断することは、AIにとっても高度な判断を要します。
  • K2(状態表現)とK3(遷移ロジック)の強い相関: 興味深いことに、DP問題において「状態表現(K2)」と「遷移ロジック(K3)」の診断には強い相関が見られました。これは、これら2つのスキルが密接に連携しており、片方の理解がもう片方の理解に直結しやすいことを意味します。
  • Grader Reliability Index (GRI) による信頼性評価: 幻覚的な採点(高Guess)に強いペナルティを課すGRIでは、ClaudeとConsensus(両LLMが一致した場合のみ正解とする)が最も信頼性が高いと評価されました。また、小規模モデルの中ではGranite-4.1-8Bが比較的良い成績を収めました。これは、教育現場でAIを採点者として利用する際、単なる正誤率だけでなく、「誤った肯定」をどれだけ避けるかが信頼性の鍵となることを示唆しています。

4. ADVANCEの現場から見た実感

堺市で運営しているプログラミングスクールADVANCEの教室の様子
▲ ADVANCEの教室で学ぶ様子(イメージ)

堺市南区のプログラミングスクールADVANCEで実際にプログラミングを教えている講師としての意見は以下の三つです。

🎮 現場で感じる3つの変化

複雑な問題への挑戦意欲の向上

今回の研究で示されたDPのような抽象的な問題でも、段階的な指導とフィードバックで生徒が粘り強く取り組む姿勢が見られます。特に、K1(問題分解)の重要性を認識することで、大きな問題を小さなステップに分ける思考力が身につきます。例えば、Roblox Studioで複雑なゲームシステムを作る際に、いきなり全体を作るのではなく、まずは「キャラクターの動き」「アイテムの取得」といった個別の要素に分けて考える力が養われます。

デバッグ能力の深化

LLMが「厳格な採点者」として機能するように、生徒自身も自分のコードの何が「間違っているか」だけでなく、「なぜ間違っているか」を深く考えるようになります。特にK4(境界条件)のミスは、デバッグを通じて論理的思考を鍛える良い機会です。ADVANCEでは、Scratchの簡単なプログラムでも、キャラクターが画面の端で止まらない、といった状況を「境界条件のミス」として捉え、自ら修正する力を育んでいます。

多様な解決策への理解と最適化の意識

プログラミングには常に複数の解決策があります。生徒が自分のコードと模範解答を比較する中で、K5(時間/空間最適化)のような効率性の違いを学び、より洗練されたコードを書くことの重要性を理解します。例えば、Unity (C#)でゲームを開発する際、同じ処理でも「より少ないコードで書くには?」「より高速に動かすには?」といった視点を持つことで、より高度なプログラマへと成長していきます。

AIのフィードバックと人間の指導を組み合わせることで、子どもたちは単にコードが動くかどうかだけでなく、その裏にある「思考プロセス」まで深く理解することができます。これは、AIが「推論」はできても「生成」が苦手な部分を、人間が適切にサポートすることで、学習効果を最大化できる可能性を示しています。

5. 保護者の方へ:家庭でできること

今回の論文で明らかになったAIの採点能力や、推論と生成の非対称性は、子どもたちのプログラミング学習にも重要な示唆を与えてくれます。ご家庭でできることとして、以下の3つのポイントを意識してみてください。

🏠

間違いを恐れない環境作り

プログラミング学習において、「間違いは学びの機会である」という認識を共有しましょう。今回の研究で示された「Slip」(見落とし)や「Guess」(誤認定)のように、AIでさえも完璧な判断はできません。お子さんが試行錯誤する過程を温かく見守り、小さな成功も大きく褒めることで、主体的な学習を促します。完璧なコードを書くことよりも、「なぜそうなったのか」を考えるプロセスを大切にしましょう。

📅

思考プロセスに注目する声かけ

「どうやってその問題に取り組んだの?」「どこで難しかった?」「もしうまくいかなかったら、どう改善できそう?」といった質問を通じて、お子さんの問題解決への思考プロセスに興味を示しましょう。K1(問題分解)やK3(遷移ロジック)のようなスキルは、単に答えが合っているかだけでなく、その考え方を言語化することで一層定着します。Scratchでアニメーションを作っている場合でも、「どうしてこの順番にしたの?」と聞いてみることで、論理的思考力を引き出すことができます。

👏

効率性にも目を向ける

初期のプログラミングでは「動くこと」が第一ですが、徐々に「もっと効率よくするには?」という視点も導入しましょう。今回の論文のK5(時間/空間最適化)のように、より少ない手数や時間で解決する方法を考えることは、高度な思考力を育みます。例えば、簡単なゲームを作った後、「この動きをもっとスムーズにできないかな?」「同じ処理を何度も書かずに済む方法はないかな?」などと問いかけてみてください。HTML/CSSでウェブページを作成する際も、同じスタイルを複数回書くのではなく、クラスやIDを使って再利用性を高める意識がこれに当たります。

🎮 ADVANCEで一緒にプログラミングを始めませんか?

堺市南区のプログラミングスクールADVANCEでは、Scratchからはじめて、Roblox、Unity(C#)まで段階的に学べます。

研究で効果が実証されたプログラミング教育を、ゲーム制作を通じて楽しく体験できます。

🕹️ ▶ ぼうけんを はじめる 無料体験会に申し込む! 🎮

6. 参考文献

  1. B. Liu, S. Bubeck, R. Eldan, J. Kulkarni, Y. t. Li, A. Nguyen, R. Ward, Y. Zhang, Tinygsm: Achieving >80% on gsm8k with small language models, arXiv preprint arXiv:2312.09241 (2023). URL: https://arxiv.org/abs/2312.09241.
  2. N. Jain, K. Han, A. Gu, W.-D. Li, F. Yan, T. Zhang, S. Wang, A. Solar-Lezama, K. Sen, I. Stoica, Livecodebench: Holistic and contamination-free evaluation of large language models for code, arXiv preprint arXiv:2403.07974 (2024). URL: https://arxiv.org/abs/2403.07974.
  3. C. Wang, J. Lin, K. R. Koedinger, Leveraging large language models for identifying knowledge components, arXiv preprint arXiv:2511.09935 (2025). URL: https://arxiv.org/abs/2511.09935.
  4. H. Li, Q. Dong, J. Chen, H. Su, Y. Zhou, Q. Ai, Z. Ye, Y. Liu, Llms-as-judges: A comprehensive survey on llm-based evaluation methods, arXiv preprint arXiv:2412.05579 (2024). URL: https://arxiv.org/abs/2412.05579.
  5. K. Wataoka, T. Takahashi, R. Ri, Self-preference bias in llm-as-a-judge, arXiv preprint arXiv:2410.21819 (2024). URL: https://arxiv.org/abs/2410.21819.
  6. J. Moon, Y. Hwang, D. Lee, T. Kang, Y. Kim, K. Jung, Don’t judge code by its cover: Exploring biases in llm judges for code evaluation, arXiv preprint arXiv:2505.16222 (2025). URL: https://arxiv.org/abs/2505.16222.
  7. Y. Song, H. Zhang, C. Eisenach, S. M. Kakade, D. Foster, U. Ghai, Mind the gap: Examining the self-improvement capabilities of large language models, in: International Conference on Learning Representations (ICLR), 2025. URL: https://openreview.net/forum?id=Hgv0tqgaiA.
  8. J. Saad-Falcon, E. K. Buchanan, M. F. Chen, T.-H. Huang, B. McLaughlin, T. Bhathal, S. Zhu, B. Athiwaratkun, F. Sala, S. Linderman, et al., Shrinking the generation-verification gap with weak verifiers, arXiv preprint arXiv:2506.18203 (2025). URL: https://arxiv.org/abs/2506.18203.
  9. B. W. Junker, K. Sijtsma, Cognitive assessment models with few assumptions, and connections with nonparametric item response theory, Applied Psychological Measurement 25 (2001) 258–272. doi:10.1177/01466210122032064.
  10. J. de la Torre, The generalized dina model framework, Psychometrika 76 (2011) 179–199. doi:10.1007/s11336- 011- 9207- 7.
  11. M. B. Garcia, M. Tian, M. Chen, Profiling the skill mastery of introductory programming students: A cognitive diagnostic modeling approach, Education and Information Technologies (2024). doi:10.1007/s10639- 024- 13039- 6.
  12. Y. Shi, T. Schmucker, M. Chi, T. Barnes, T. Price, Kc-finder: Automated knowledge component discovery for programming problems, in: Proceedings of the 16th International Conference on Educational Data Mining (EDM), 2023. URL: https://educationaldatamining.org/edm2023/proceedings/.
  13. Y. Shi, M. Chi, T. Barnes, T. Price, Code-dkt: A code-based knowledge tracing model for programming tasks, in: Proceedings of the 15th International Conference on Educational Data Mining (EDM), 2022. URL: https://arxiv.org/abs/2206.03545.
  14. X. Chen, J. Zhang, T. Zhou, F. Zhang, Llm-cdm: A large language model enhanced cognitive diagnosis for intelligent education, IEEE Access 13 (2025) 47165–47180. doi:10.1109/ACCESS. 2025.3549309.
👨‍🏫

この記事を書いた人

ADVANCE 講師

堺市南区のプログラミングスクールADVANCEで、Scratch・Roblox・Unity等を用いたプログラミング教育を担当。子どもから大人まで幅広い年齢層への指導経験を持つ。