基于代码驱动的编程预测方法,通过大规模语言模型(LLM)并结合特征融合技术得到提升

《Information Fusion》:Code-Driven Programming Prediction Enhanced by LLM with a Feature Fusion Approach

【字体: 时间:2026年01月21日 来源:Information Fusion 15.5

编辑推荐:

  编程教育中知识追踪(KT)技术面临传统状态驱动范式无法直接预测代码能否通过测试的问题。本文提出代码驱动特征融合KT(CFKT)框架,包含PP(基于LLM的语义匹配模块)和CP(融合用户历史与群体数据的代码预测模块),通过语义嵌入和特征融合解决大解空间和冷启动问题。实验表明CFKT在多个编程数据集上显著优于基线方法。

  
刘胜英杰|李建新|万倩|何波|黄志军|李青
中国中部师范大学教育大数据国家工程研究中心,武汉,430079,湖北,中国

摘要

编程教育对于培养个人的数字素养技能和发展在现代劳动力市场中取得成功所需的问题解决能力至关重要。在在线编程辅导系统中,知识追踪(KT)技术对于编程预测至关重要,因为它们可以监控用户的表现并模拟用户的认知过程。然而,无论是通用知识转移方法还是编程特定知识转移方法,都依赖于传统的状态驱动范式,这些范式基于用户知识状态间接预测编程结果。这与编程预测的核心目标——判断提交的代码是否能够解决问题——并不一致。为了解决这个问题,我们提出了代码驱动的特征融合KT(CFKT),该方法结合了大型语言模型(LLM)和编码器,用于处理个性化代码特征和通用代码特征。CFKT包括两个模块:通过预测(Pass Prediction)和代码预测(Code Prediction)。通过预测模块利用LLM通过嵌入将问题和代码的语义信息整合在一起,通过代理任务提取关键特征来确定代码的正确性,并通过向量化有效缩小解决方案空间。代码预测模块通过特征融合块整合用户的历史数据和其他用户的数据,从而能够准确预测提交的代码,并有效缓解“冷启动”问题。在多个真实世界的公共编程数据集上的实验表明,CFKT的性能显著优于现有的基线方法。

引言

编程是人类思维的数字表达,涵盖了逻辑推理、问题分解和错误检测等一系列认知活动。其本质在于将复杂问题转化为计算机可读的指令,确保嵌套逻辑结构的一致性和准确性。关于人类编程思维和认知发展的研究已成为一个重要的跨学科课题,涉及心理学[1]、教育[2][3]、认知科学[4]和人工智能[5][6][7]。智能辅导系统(ITS)[8]在编程教育中得到广泛应用,积累了大量的用户编程数据,包括用户的尝试、代码提交和测验结果。分析用户的历史编程数据以构建认知模型并预测他们的未来编程表现已成为验证这些模型有效性的关键方法。如图1(a)所示,基于数据的认知建模方法——知识追踪(KT)[9][10][11]——可以实时评估用户的知识获取情况,并为个性化学习提供强有力的支持。
深度学习将KT的重点从传统的贝叶斯模型转向了深度神经网络。早期研究[12]主要使用循环神经网络(RNN)架构及其变体[13][14]来有效捕捉知识状态的动态变化,并实时确定下一个状态。Transformer架构[15]的出现通过自注意力机制带来了并行计算的优势,使得知识状态的建模更加精确。此后,卷积网络[16][17]和图神经网络[18][19]等各种网络结构越来越多地被集成到KT模型的设计中。这些创新旨在更好地表示用户知识状态并提高未来表现预测的准确性。
然而,通用模型在编程领域的有效性有限,因为它们无法处理代码的独特语义和句法结构。为了解决这一挑战,研究人员正在逐步探索针对编程特定需求的新方法。一种策略[20]是将大型语言模型(LLM)整合到通用模型中,以表示代码文本,并用用户的历史表现数据丰富模型输入,从而增强特征表示。另一种策略[21]强调编程任务的细微差别,开发专门的神经网络或架构来捕捉代码中的结构信息以及用户编程行为的独特特征,旨在提高编程性能预测的准确性。
编程预测本质上涉及判断用户提交的代码是否能够在特定的时间和空间约束下通过给定问题的测试用例。它从根本上检查代码是否正确解决了问题。尽管当前的研究已经探索了多种利用提交代码中的信息的方法,但这些方法通常仍然依赖于传统的状态驱动范式,这些范式通过从用户的历史数据中构建知识状态来间接预测未来表现,如图1(c)所示。这样的方法偏离了编程预测的实际意义。在代码驱动的范式下,如图1(d)所示,任务被直观地划分为两个紧密相关的子任务:通过预测(Pass Prediction,PP)和代码预测(Code Prediction,CP)。
PP强调问题和提交代码之间的语义关系,而不是依赖于用户的历史数据。通过利用LLM的高级语义理解能力,可以有效地增强对提交代码是否满足特定问题要求的评估。相比之下,CP本质上依赖于利用用户之前的提交作为预测他们可能为新问题提交的代码的基础。例如,在解决求前N个数字的编程问题时,传统的状态驱动方法基于用户的过去表现和循环结构构建知识状态,从而推断出他们的答案。然而,这种方法未能捕捉到涉及的具体语义特征,如循环终止条件,导致预测不准确。相比之下,PP和CP的范式利用LLM来更深入地理解问题要求和代码逻辑,精确识别语义需求并划定潜在的编码解决方案。通过分析历史提交模式,系统可以预测用户在下一次尝试中可能会正确修改循环条件,从而生成能够通过测试的代码。这种方法展示了研究的实际应用,表明与传统方法相比,这种策略提供了更准确的编程性能预测。
然而,这种策略面临两个重大挑战:巨大的解决方案空间冷启动。前者源于代码的复杂性,其中结构和语义表示的挑战导致预测的目标空间比知识状态向量更广。后者指的是用户对于特定编程问题类型的提交历史有限,使得准确的代码预测变得困难。
关于巨大解决方案空间的挑战,编程KT的主要目标不是完美复制学习者提交的代码。相反,它强调识别和预测决定代码是否有效解决问题的关键特征。将代码空间转换为代码特征空间的这种转换可以实现减少解决方案空间的效果。因此,在PP阶段利用LLM准确构建和提取这些特征至关重要。对于冷启动挑战,一种实用的策略是通过分析尝试相同问题的其他用户的代码提交模式来解决缺乏用户特定数据的问题。通过将这些聚合的模式与新用户的有限历史数据结合起来,模型可以做出更明智的预测。这有助于缩小潜在的解决方案范围,并使预测与特定编程问题的常见分布模式保持一致,从而有效缓解冷启动问题。
综合上述分析,我们提出了创新的代码驱动特征融合知识追踪(CFKT)框架,该框架包括PP模块和CP模块。PP模块使用LLM对问题陈述和代码进行语义嵌入,然后通过代理任务减少特征维度以提取关键信息。它解决了巨大解决方案空间引起的问题,并构建了一个二元分类模型来判断代码是否可以通过测试。CP模块通过特征融合块重建代码特征,旨在提取和整合个性化代码信息和通用代码信息。它使用问题编码器改进上下文元素,并为个性化代码和通用代码方面开发编码器,以从用户提交的代码中检索相关信息。同时,特征选择掩码优化了融合和更新过程,以缓解冷启动问题。最后,我们合并了PP和CP组件,并在多个真实世界的公共编程数据集上进行了实验。结果表明,我们的方法显著优于现有的基线方法。我们的贡献总结如下。
  • 独特视角:我们对编程预测挑战进行了深入分析,创新地将它们区分为通过预测和代码预测。这种方法为在线编程学习中用户表现的建模提供了新的视角。
  • 有效模型:我们提出了CFKT模型,该模型结合了LLM来增强代码特征的语义,并引入了信息融合机制来整合代码中的个性化和通用信息。它实现了精确的代码表示,并缓解了编程预测中的冷启动问题。
  • 广泛实验:我们在多个真实的在线编程数据集上进行了实验,将我们的方法与通用KT、编程KT和LLM增强型KT进行了基准测试,并在大多数数据集上取得了更好的性能。
  • 为了清楚地概述我们工作的其余部分,第2节回顾了编程预测的相关工作。第3节介绍了初步工作和问题表述。第4节详细介绍了提出的CFKT模型,包括通过预测和代码预测模块。第5节介绍了实验设置、结果和分析。最后,第6节总结了我们的工作并概述了未来的研究方向。

    章节片段

    编程预测

    编程预测[20][22]是编程ITS中的一个关键任务,也是KT在编程学习中的一个具体应用。早期的KT研究[12]引入了RNN并提出了DKT模型,该模型有效地模拟了人类知识状态的动态变化。为了应对数据稀疏性问题并通过并行计算提高训练效率,后续研究采用了Transformer架构中的自注意力机制,从而产生了SAKT[23]和AKT等模型

    初步工作

    编程预测被视为在线编程学习领域中KT的延伸。给定一个来自在线学习平台的学习记录数据集D,每个元素可以表示为一个四元组(u, q, c, r),其中u表示用户,q代表问题,c是用户提交的代码,r表示尝试的结果,且r∈{0, 1}。设Q为问题集,U为用户集。任何用户的历史尝试序列

    提出的方法

    在本节中,我们将详细阐述提出的CFKT的细节,它包括两个组件:PP和CP。PP模块使用LLM对问题陈述和代码进行嵌入,将其转换为向量表示。随后,将构建一个代理预测器来预测指定的代码是否可以通过给定的问题。CP模块利用PP提供的代码表示,将它们与多层特征融合块结合起来

    实验

    为了证明我们方法的有效性,我们进行了实验来研究以下研究问题。
  • RQ1:我们的CFKT在多个真实世界的编程数据集上的编程预测中是否优于各种基线模型?
  • RQ2:CFKT的所有组件是否都有效,它们如何影响整体性能?
  • RQ3:CFKT是否对超参数敏感,哪些超参数对其性能有显著影响?
  • RQ4:在CFKT框架中,PP和
  • 结论

    在这项研究中,我们提出了CFKT,这是一个旨在解决现有KT方法在编程预测中局限性的新框架。传统的基于状态驱动范式的方法无法与判断提交的代码是否能够有效解决问题的核心目标保持一致。CFKT通过整合两个核心模块PP和CP克服了这一问题。PP利用LLM来评估问题和代码之间的语义关系,重点关注

    CRediT作者贡献声明

    刘胜英杰:撰写——原始草稿。李建新:方法论。万倩:可视化、验证。何波:方法论。黄志军:资源、数据管理。李青:撰写——审阅与编辑。

    利益冲突声明

    作者声明他们没有已知的可能会影响本文所述工作的竞争性财务利益或个人关系。
    相关新闻
    生物通微信公众号
    微信
    新浪微博
    • 搜索
    • 国际
    • 国内
    • 人物
    • 产业
    • 热点
    • 科普

    热点排行

      今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

      版权所有 生物通

      Copyright© eBiotrade.com, All Rights Reserved

      联系信箱:

      粤ICP备09063491号