表示
超・人工知能研究所 Super AI Research Lab トップへ超・人工知能研究所AI Research Lab / ぱそ太郎工事中

since
平成38年9月29日

← 検索結果に戻る

学生が書きそうなコードを予測し、次の確認問題を選ぶGENCAT

GENCAT

保存した記事を見るこのブラウザに保存します。無料会員で端末間の同期・フォルダ整理
原論文の図

GENCATの原論文から掲載した図です。細部はクリックして拡大できます。

原論文の図の説明を読む

Figure 1: Overview of one GENCAT cycle with Diversity as the question selection algorithm.

出典:GENCAT / arXiv ↗

概要

  • GENCATは学生が書きそうなコードを生成し、その内容を使って次のプログラミング問題を選ぶ。
  • 著者らはCodeWorkoutとProgFeedで評価し、CodeWorkoutの5問出題時に多様性基準でAUC 0.7529を報告した。
  • 導入には同じ学生の複数問題への提出コード、正誤、問題文、技能ラベルが必要で、講座ごとの検証が要る。
補足:編集した模式図で仕組みを確認する

VISUAL EXPLAINER

図でつかむ、GENCATの仕組み

左から右へ読む
  1. 01候補問題と推定理解度
  2. 02回答コードを生成
  3. 03次問を選択
  4. 04実回答で理解度更新

原論文の説明をもとにした模式図です。処理の細部は省略しています。

研究の背景

GENCATは、学生の回答コードから理解度を推定し、次に出すプログラミング問題を選ぶ。適応型テストは、それまでの回答に応じて出題を変え、少ない問題で理解度を測ろうとする方法である。

正誤だけでは、同じ不正解でも、繰り返し処理を誤ったのか配列操作を誤ったのかを区別しにくい。コードの内容を使えば、どの問題で理解度をさらに確かめるかを判断する材料が増える。

手法

まず、問題文、問題に必要な技能のラベル、学生の提出コードと正誤を使い、理解度に応じたコードを生成するモデルを学習する。技能はループや配列など解答に必要な知識を指す。提出コードを使う教師あり学習の後、本人の理解度に合う回答を選好する追加学習で調整する。

出題時は残りの候補問題ごとに、その学生が書きそうなコードを複数生成する。例えば配列の問題なら、生成コードの正誤がどれほど不確かか、コード同士がどれほど異なるか、理解度の推定にどれほど情報を与えるかのいずれかで次問を選ぶ。実際の提出を受けたら理解度を更新し、この手順を繰り返す。

新規性

著者らの提案は、学生が正解する確率だけでなく、候補問題に対して書きそうなコードを生成し、その内容を出題選択に使う点にある。コードの正誤に加え、回答の違いも判断材料にする。

実際の提出コードで学習した生成モデルを、推定した理解度と回答の対応が強まるよう追加調整する。生成コードの正誤予測の不確かさ、コードの多様さ、知識推定に関する情報量に基づく三つの選択方法を示した。

従来手法との違い

従来の適応型テストは、問題の難しさと学生の理解度から正解確率を見積もり、次の問題を選ぶ。比較対象の1PL_IRT、BOBCAT、NCATは正誤を扱い、LACATは問題文も利用するが、学生の回答は正誤として扱う。

GENCATは問題文と予測した回答コードを選択に使う。著者らはこの四手法と出題後の予測性能を比較した。評価では出題方法の違いを見るため、選ばれた問題による理解度の更新と正誤予測に共通の1PL IRTモデルを用いている。

実験結果

著者らはJavaのCodeWorkoutとPythonのProgFeedで初回提出を分析した。前者は246人・50問・10,834件、後者は374人・42問・8,724件である。学生を学習用80%と評価用20%に分ける5分割交差検証を行い、評価用学生の別に確保した問題の正誤予測をAccuracyとAUCで測った。

著者らの報告では、CodeWorkoutで5問出題した時点のAUCは、多様性に基づくGENCATが0.7529、1PL_IRTが0.7299、NCATが0.7343だった。このGENCATの値には、最良の比較手法に対する統計的に有意な改善の印が付いている。AUCは正解と不正解を予測値で区別できる度合いを表す。

応用の可能性

編集上の応用案 · 論文が実証した用途とは区別しています。

編集上の応用案:プログラミング入門講座で、配列を扱う学生の次の確認問題を選ぶ。候補の問題文と必要な技能のラベル、学生の過去の提出コードと採点結果を入力し、各候補で予測したコードを基に教員へ問題候補を示す。

学習には、同じ学生が複数の問題に答えたコード、問題文、技能ラベル、正誤が必要になる。追加のセンサーは想定しない。講座固有の問題と採点基準に合わせてモデルを調整し、教員が選択理由と実際の回答を確認する運用を試す。

応用先の候補からNauhに相談できます。

導入時の検証

導入時の検証案 · 対象データでの再評価が必要です。

導入時の検証案:一つの入門講座で、同じ学生による複数問題への初回提出コード、問題文、正誤、問題ごとの技能ラベルをそろえる。学生単位で学習用と評価用に分け、講座の問題と採点基準に合わせてモデルを調整し、過去の回答から次問を選ぶ試行を行う。

追加のセンサーは想定しない。正誤を使う1PL_IRTを比較対象とし、出題数ごとに未出題問題の正誤予測のAccuracyとAUCを測る。予測コードと実際の誤り方の食い違いも教員が記録し、その講座で判断材料になるか確かめる。

限界と課題

著者らは、実験がプログラミング教育の一分野に限られると述べる。他分野の自由記述データには、同じ学習者による複数問題への回答がそろわず、この方法の検証に使えなかったとしている。ProgFeedは論文執筆時点で非公開で、公開も保証されていない。

編集上の検証事項は、別の講座でも技能ラベルと採点結果を安定して用意できるか、予測コードが実際の誤り方を捉えるかである。報告された正誤予測の評価には共通の1PL IRTモデルを用いており、導入先での出題と指導を通じた効果は別途確かめる必要がある。

応用先の候補
研究内容と応用案に基づく分類です。業界での導入実績を示すものではありません。

出典

元のタイトル・要旨を確認する(英語)

CodeGENCAT: Generative Computerized Adaptive Testing for Open-ended Coding Problems

Existing Computerized Adaptive Testing (CAT) frameworks typically select questions based on the predicted likelihood that the student will answer correctly. This design ignores information contained in students' open-ended responses, especially in domains such as programming education, where code structures and bugs contain rich information on student knowledge. In this work, we propose \textbf{Code} \textbf{GEN}erative \textbf{CAT} (\textbf{CodeGENCAT}), a generative CAT framework that selects questions using predicted student code responses. First, we develop a Generative Item Response Theory (GIRT) model that generates code responses conditioned on estimated student knowledge, trained with supervised fine-tuning followed by direct preference optimization for knowledge-response alignment. Second, we introduce three question-selection algorithms that measure uncertainty, coding style diversity, and information from predicted student code responses. Experiments on two real-world programming education datasets show that CodeGENCAT outperforms all CAT baselines, achieving an AUC improvement of up to 4.32\% over the strongest baseline in the early stages of adaptive testing.

論文本体の取得範囲に基づく解説。AIが作成した未校閲の記事です。性能の数値は著者の評価条件に依存します。応用例と検証計画は編集上の提案です。解説更新:2026-10-01