Skip to main content
QUICK REVIEW

[论文解读] Code-DKT: A Code-based Knowledge Tracing Model for Programming Tasks

Yang Shi, Min Chi|arXiv (Cornell University)|Jun 7, 2022
Online Learning and Analytics被引用 8
一句话总结

本文提出 Code-DKT,一种通过注意力机制从学生提交代码中提取特定代码特征来增强深度知识追踪(DKT)的知识追踪模型。通过利用 code2vec 表示抽象语法树(AST),并基于表现反馈学习路径的重要性,Code-DKT 在五个编程作业中相较 DKT 的 AUC 提升了 3.07%–4.00%,表明领域特定的代码特征能显著提升编程教育中的知识追踪性能。

ABSTRACT

Knowledge tracing (KT) models are a popular approach for predicting students' future performance at practice problems using their prior attempts. Though many innovations have been made in KT, most models including the state-of-the-art Deep KT (DKT) mainly leverage each student's response either as correct or incorrect, ignoring its content. In this work, we propose Code-based Deep Knowledge Tracing (Code-DKT), a model that uses an attention mechanism to automatically extract and select domain-specific code features to extend DKT. We compared the effectiveness of Code-DKT against Bayesian and Deep Knowledge Tracing (BKT and DKT) on a dataset from a class of 50 students attempting to solve 5 introductory programming assignments. Our results show that Code-DKT consistently outperforms DKT by 3.07-4.00% AUC across the 5 assignments, a comparable improvement to other state-of-the-art domain-general KT models over DKT. Finally, we analyze problem-specific performance through a set of case studies for one assignment to demonstrate when and how code features improve Code-DKT's predictions.

研究动机与目标

  • 解决现有知识追踪模型仅将学生作答视为正确或错误,而忽略内容与代码结构的局限性。
  • 探究并验证来自学生提交代码的领域特定代码特征是否以及如何提升编程任务中的知识追踪性能。
  • 开发一种将代码表示与基于深度学习的知识追踪相结合的模型,以更准确地捕捉学生对编程概念的掌握程度。
  • 证明相较于通用 KT 模型及朴素的代码特征扩展方法,代码特征在提升预测准确率方面的有效性。

提出的方法

  • 将学生代码提交表示为抽象语法树(AST),并使用 code2vec 模型提取多种代码路径。
  • 应用注意力机制,根据学生在当前及历史提交中的表现,学习不同代码路径的重要性。
  • 将学习到的代码特征表示整合进深度知识追踪(DKT)框架中,以追踪学生随时间的知识进展。
  • 通过问题尝试序列端到端训练模型,损失通过 DKT 和注意力组件反向传播。
  • 使用学生作答的正确性及提交得分作为监督信号,指导代码路径的注意力加权。
  • 将 Code-DKT 与 BKT、DKT 以及两种扩展了简单代码特征(如是否存在 return 语句)的 DKT 变体进行对比。

实验结果

研究问题

  • RQ1RQ1:与领域通用模型相比,从学生提交代码中提取的代码特征是否能提升编程任务中的知识追踪性能?
  • RQ2RQ2:代码特征如何影响模型性能?为何某些代码特征能提升性能,而另一些则不能?
  • RQ3RQ3:在何种条件下(如题目类型或概念熟悉度)下,代码特征最能有效提升预测准确率?

主要发现

  • 在全部五个编程作业中,Code-DKT 相较 DKT 的 AUC 提升了 3.07%–4.00%,表现出一致且显著的性能增益。
  • 该提升幅度与 SOTA 领域通用模型(如 SAINT 和 SAKT)相较 DKT 的提升相当,表明代码特征的影响程度可与模型架构创新相媲美。
  • 简单的代码特征(如是否存在 return 语句)并未提升 DKT 性能,表明仅靠朴素的特征集成而无注意力加权是不够的。
  • 代码特征在具有共享学习概念的问题(如循环、条件判断)中最为有效,因为重复练习使特征泛化能力更强。
  • 代码特征对首次尝试和后续尝试的预测均有增强作用,表明其有助于检测概念掌握的早期迹象及向正确解法的进展。
  • 案例研究显示,模型利用代码结构推断学生接近正确解法的程度,并在重复尝试中检测其对编程构造的先验知识。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。