CN117473041A - 一种基于认知策略的编程知识追踪方法 - Google Patents
一种基于认知策略的编程知识追踪方法 Download PDFInfo
- Publication number
- CN117473041A CN117473041A CN202311106919.4A CN202311106919A CN117473041A CN 117473041 A CN117473041 A CN 117473041A CN 202311106919 A CN202311106919 A CN 202311106919A CN 117473041 A CN117473041 A CN 117473041A
- Authority
- CN
- China
- Prior art keywords
- learner
- knowledge
- code
- sequence
- question
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 230000001149 cognitive effect Effects 0.000 title claims abstract description 23
- 238000012360 testing method Methods 0.000 claims abstract description 110
- 238000012512 characterization method Methods 0.000 claims abstract description 18
- 230000019771 cognition Effects 0.000 claims abstract description 17
- 238000012549 training Methods 0.000 claims abstract description 16
- 238000007781 pre-processing Methods 0.000 claims abstract description 10
- 239000013598 vector Substances 0.000 claims description 24
- 230000003993 interaction Effects 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 16
- 238000013528 artificial neural network Methods 0.000 claims description 15
- 230000007246 mechanism Effects 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 11
- 230000006870 function Effects 0.000 claims description 10
- 238000013507 mapping Methods 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 8
- 230000015654 memory Effects 0.000 claims description 7
- 238000010586 diagram Methods 0.000 claims description 5
- 238000000605 extraction Methods 0.000 claims description 5
- 239000011159 matrix material Substances 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 claims description 4
- 230000004913 activation Effects 0.000 claims description 3
- 238000003064 k means clustering Methods 0.000 claims description 3
- 238000005457 optimization Methods 0.000 claims description 3
- 230000002452 interceptive effect Effects 0.000 claims 2
- 238000013459 approach Methods 0.000 claims 1
- 238000002360 preparation method Methods 0.000 claims 1
- 238000005303 weighing Methods 0.000 claims 1
- 238000005516 engineering process Methods 0.000 abstract description 4
- 230000009977 dual effect Effects 0.000 abstract description 3
- 230000000875 corresponding effect Effects 0.000 description 30
- 230000003935 attention Effects 0.000 description 16
- 230000007547 defect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000010365 information processing Effects 0.000 description 3
- 230000002596 correlated effect Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000007787 long-term memory Effects 0.000 description 2
- 238000005295 random walk Methods 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 230000006403 short-term memory Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 102100027708 Astrotactin-1 Human genes 0.000 description 1
- 241000288105 Grus Species 0.000 description 1
- 101000936741 Homo sapiens Astrotactin-1 Proteins 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000003754 machining Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000010332 selective attention Effects 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3344—Query execution using natural language analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
- G06N3/0455—Auto-encoder networks; Encoder-decoder networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/022—Knowledge engineering; Knowledge acquisition
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Databases & Information Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明属于知识追踪技术领域,提供一种基于认知策略的编程知识追踪方法,包括:(1)问题定义和数据预处理;(2)试题表征;(3)代码表征;(4)认知过程双序列建模;(5)表现预测和模型训练。本发明方法根据学习者的认知过程,即理解试题和编写代码解决问题两方面,来建模编程知识追踪问题,分别利用图嵌入技术来聚合试题困难度、知识技能等信息,优化传统知识追踪中试题的表征,考虑到编程学科的开放性,融合了学生代码中蕴含的语法结构、文本注释等认知信息来表征代码特征,然后结合两者分别建模学习者的知识状态和编程能力,更能模拟学习者的做题场景,更好地建模学习者的认知过程。
Description
技术领域
本发明属于知识追踪技术领域,具体涉及一种基于认知策略的编程知识追踪方法。
技术背景
随着人工智能和大数据技术的不断发展,实施个性化学习已成为全球教育的主流趋势,知识追踪(Knowledge Tracing,KT)则是实现个性化学习的关键环节。具体来说,知识追踪的任务是通过挖掘和分析学习者历史学习数据中蕴含的认知规律和过程,动态追踪其知识掌握情况并预测学习者的未来表现。而当前信息化社会背景下,编程技能逐渐成为每一个人必备的技能之一,因此,编程知识追踪吸引了学者们的关注,即通过研究针对学习者编程能力的评估算法来帮助学习者及时掌握自己的知识掌握情况,查漏补缺,有针对性地提升个人利用算法解决现实问题的能力。编程试题属于开放式主观题,它并无标准答案等,因此需要融合学习者作答的源代码中所蕴含的认知信息来提升模型预测的准确度。
当前编程知识追踪领域已有成熟的模型,如基于抽象语法树的编程知识追踪模型(DKT-P),将学习者提交的代码表示为一个抽象语法树AST,然后利用循环神经网络将代码AST进行向量化,并将该代码向量作为模型输入,最后借助长短期记忆网络来建模学习者的作答序列,但该模型并没有考虑到题目和知识等相关信息;基于抽象语法树神经网络的时态编程知识追踪模型(Temporal-ASTNN),通过ASTNN捕捉代码的语言结构,再利用长短期记忆网络捕捉做题序列中的时态信息,但没有考虑到学习者的记忆认知信息;基于代码-知识点交互的编程知识追踪模型(PKT-attn),通过AST路径上下文代码表示方法Code2Vec得到学习者代码表示向量,再引入注意力机制检索每个编程练习涉及的知识点和代码嵌入,建模得到聚合的知识隐藏状态,但PKT-attn模型忽视了试题困难度信息的重要性;基于循环神经网络的编程深度知识追踪模型(PDKT),通过构造问题与知识点的二部图(bipartitegraph)来引入多知识点信息并得到问题嵌入,并设计了一个预训练模型PLCodeBERT来得到代码嵌入,最后利用具有指数衰减注意力的双序列RNN模型建模做题序列,但该模型未考虑试题的困难度和代码结构信息。
综上,现有的编程知识追踪方法在建模学生认知信息与过程方面存在不足,如忽视了试题和答案表征、学习者记忆和语义加工过程的重要性,导致结果的评估存在片面性。具体来说,在表征试题时考虑不够全面,忽视了试题困难度、关联的多知识点等重要信息;在表征学习者代码时仅捕捉代码语法特征,忽视了代码的结构信息和注释文本;此外,大多方法未能较好地模拟出学习者记忆与语义加工过程。可见现有编程知识追踪方法还有待于进一步提升、改善。
与此同时,教育心理学领域将认知策略定义为信息加工与认知过程中所采用的一系列方法、技术。具体来说,信息加工与认知过程主要包括选择性注意、编码、储存、提取等一系列的心理活动,而这一系列心理活动之间的相互转换都受到认知策略的调节与控制。认知策略之一的复述策略指出及时复习在防止遗忘、加深理解和熟练技能的同时,还可弥补知识缺陷,完善知识结构,发展自身的记忆能力和思维能力。此外,德国心理学家艾宾浩斯对遗忘进行了大量的***研究,发现遗忘的进程是不均衡的,有先快后慢的特点,提出了著名的遗忘曲线。而精加工策略中指出学习者会将学习的内容与自己已有的知识和经验联系起来,理解和解释学习材料的意义和概念,即语义加工。为此,基于上述事实,本技术方案首先通过表征学习者作答试题与答案来模拟信息加工过程,结合复述与精加工等策略来调整与建模学习者认知过程。探索一种基于认知策略的编程知识追踪方法,运用时下热门的大数据挖掘、图神经网络和多头注意力机制等深度学习技术对学习者的历史学习轨迹进行综合分析,结合其认知过程准确评估学习者当前的知识状态并预测其未来的表现,具有重要的研究意义和应用价值。
发明内容
针对现有编程知识追踪方法所存在的不足,本发明提供一种基于认知策略的编程知识追踪方法,能够有效提升知识追踪的预测精确度。
为实现上述目的,本发明采用以下技术方案。
一种基于认知策略的编程知识追踪方法,包括以下步骤:(1)问题定义和数据预处理;(2)试题表征;(3)代码表征;(4)认知过程双序列建模;(5)表现预测和模型训练。
在上述技术方案中,步骤(1)中所述问题定义和数据预处理具体为:编程知识追踪问题定义,数据采集和数据预处理。
(1-1)编程知识追踪问题定义:给定一个学习者的历史作答记录X={x1,x2,…,xt-1},然后评估学习者当前的隐藏学习状态ht,并据此预测学习者在时刻t的表现rt;其中学习者的一条做题记录表示为xτ=(qτ,cτ,rτ),qτ为学习者在τ时刻回答的问题,cτ表示学习者针对问题qτ所编写的代码,而rτ表示学生在qτ上的回答情况,回答正确则值为1,反之则为0。
(1-2)数据采集:数据来源于真实公开数据,其包含了学习者历史答题记录,每位学习者的答题记录包括作答题号、知识点、源代码、时间戳以及学习者回答情况等原始数据。
(1-3)数据预处理:将每一位学习者历史答题记录处理成五行数据,第一行是该学习者的编号和答题数量,第二行是其答题历史记录中的题目编号,第三行为针对相应题目所编写的源代码编号,第四行是回答相应试题的时间戳,第五行是对应试题的回答情况。
在上述技术方案中,步骤(2)中所述试题表征具体为:首先构建知识点-试题-困难度的异构图,然后利用异构神经网络(Heterogeneous Graph Neural Network,HetGNN)去编码、学习得到试题嵌入。
(2-1)困难度编码:首先将学***大致相同的试题划归为一类,总共分为易、偏易、适中、偏难和难五种等级。
(2-2)基于异构图神经网络的试题表示:首先定义一个基于上下文内容的异构图HetG=(V,E,Ov,RE),其中V表示节点集,E是边集,OV={Q,S,Diff}表示节点类型集,Q表示试题,S为知识点,Diff则为困难度等级,RE={ES-Q,EQ-Diff,EQ-Q}则代表边类型的集合,包括知识点和试题之间的关系ES-Q、试题和困难度之间的关系EQ-Diff以及试题和试题之间的关系EQ-Q。然后,利用Bert模型去编码试题文本特征,即T=Bert(Qtext),并作为试题的初步表征。最后,结合上述异构图HetG和试题文本特征T,借助异构神经网络HetGNN去捕捉和学习来自试题文本、其他邻居节点等的异质特征信息,进而得到相应试题的高阶嵌入表示
在上述技术方案中,所述步骤(3)中所述代码表征具体为:针对给定的源代码构建相应的数据流图(Data Flow Graph,DFG),然后利用GraphCodeBert方法得到代码嵌入。
(3-1)数据流图抽取:给定源代码集C={c1,c2,...,cn},先使用tree-sitter解析工具把所有学生代码转化成AST,接着从AST中提取出相应的变量序列V={v1,v2,...,vm},最后从AST中提取变量之间的依赖关系(值的流向)集合E={e1,e2,...,ek},从而构建相应的数据流图,DFG(c)=(Vc,Ec),其中c表示对应源代码,Vc表示该源代码c对应的变量节点集,Ec表示变量间的依赖关系集合。
(3-2)基于GraphCodeBert的代码表示:获得数据流图DFG(c)=(Vc,Ec)后,GraphCodeBert模型的输入为对应的源代码token序列c、相应的注释文本w以及代码变量序列Vc三者拼接后的序列,其中/>表示拼接操作,CLS是位于三者之前的一个特殊token,SEP则代表不同序列间的分隔符。将输入序列X馈送至GraphCodeBert模型中,经过编码-解码过程后,最终得到学生相应源代码的高阶嵌入表示
在上述技术方案中,步骤(4)中所述认知过程双序列建模具体包括:将步骤(2-2)所得到的试题嵌入序列、步骤(3-2)所得到的代码嵌入序列分别馈送至知识状态演化模块(Knowledge State Evolution Module,KSEM)和编程能力编码模块(Programming AbilityEncoding Module,PAEM)中,借助注意力Attention和门控循环单元GRU网络分别从记忆与语义加工两方面进行认知过程的双序列建模,评估学习者的知识状态和编程能力。
(4-1)知识状态演化模块:将试题嵌入作答结果rτ、遗忘时间间隔Δtτ、重复练习次数nτ等认知上下文数据作为输入馈送至知识状态演化模块中,通过使用改进的注意力机制来个性化建模学生的知识状态空间,输出学习者当前的潜在知识状态/>
(4-2)编程能力编码模块:将学***/>
在上述技术方案中,所述步骤(5)表现预测和模型训练具体包括:表现预测和模型训练两部分。
(5-1)表现预测:结合学***/>得到学习者在t时刻的隐藏状态,即/>将其馈送至预测层的全连接网络中,并通过sigmoid激活函数去预测当前学生作答反应/>
其中FC表示全连接层,由线性变化操作和Relu非线性激活函数所组成,
分别为权重和偏差项。
(5-2)模型训练:通过最小化模型预测结果和学生真实作答反应rt之间的二元交叉熵损失来不断训练优化模型的各个参数,直至损失值/>收敛,模型的损失函数为:
本发明与现有技术相比,具有更好的效果。本发明方案根据学***,助力个性化习题推荐和学习路径分析。
附图说明
图1是本发明实施例中基于认知策略的编程知识追踪方法模型图。
图2是本发明实施例中异构图表征试题的示意图。
图3是本发明实施例中数据流图的提取示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明实施例的基于认知策略的编程知识追踪方法,包括以下步骤:
(1)编程知识追踪问题定义和数据预处理
(1-1)问题定义:给定一个学习者的历史作答记录X={x1,x2,…,xt-1},然后评估学习者当前的隐藏学习状态ht,并据此预测学习者在时刻t的表现rt;其中学习者的一条做题记录表示为xτ=(qτ,cτ,rτ),qτ为学习者在τ时刻回答的问题,cτ表示学习者针对问题qτ所编写的代码,而rτ表示学生在qτ上的回答情况,回答正确则值为1,反之则为0。
(1-2)数据采集:采集到的学习者在编程科目上的历史学习记录如表1所示,具体包括用户编号、试题编号、作答结果、时间信息、编写的源代码、所属语言以及知识点编号等原始数据。
表1学生历史学习记录关键字段说明
(1-3)数据预处理:首先,按照学生编号对原始数据进行分组并建立按时间升序排列的学习者做题序列集;然后对数据进行清洗,删除与知识追踪无关的非学生数据以及代码提交记录少于5次的学生数据,将学生的最长答题序列长度固定设为200,对于其后的做题记录则舍弃;再对清洗后的数据做进一步的数据预处理,包括统计出学习者做相应题目的时长、所做系列练习属于相应的同一知识点的重复练习次数,基于3PL-IRT模型获取学习者能力、试题难度以及使用Bert模型学习试题文本的特征向量;最后,将每一位学习者历史答题记录处理成五行数据,第一行是该学习者的编号和答题数量,第二行是其答题历史记录中的题目编号,第三行为针对相应题目所编写的源代码编号,第四行是回答相应试题的时间戳,第五行是对应试题的回答情况,将上述处理好的数据保存到相应的数据集文件当中。
(2)试题表征
(2-1)困难度编码:首先将学习者的历史做题记录处理成由(学习者编号,试题编号,作答情况)组成的三元组列表,然后将处理后的三元组列表作为输入,通过项目反应理论模型3PL-IRT去建模和评估试题i的困难度bi:
其中,P(θ,i)表示能力水平为θ的学生正确回答试题i的概率,ai表示试题的区分度,bi表示试题i的困难度水平,ci表示试题的猜测系数。
在利用3PL-IRT模型得到相应试题的困难度值后,再使用K-Means聚类算法将困难度水平大致相同的试题划归为一类,总共分为易、偏易、适中、偏难和难五种等级。
其中,diffi表示K-Means算法将试题i划归为哪一类困难等级,xi=[ai,bi,ci]表示试题i的困难度向量,uj表示第j类试题集clj的质心,N(clj)表示第j类中试题的个数。
(2-2)基于异构图神经网络的试题表示:首先定义一个基于上下文内容的异构图HetG=(V,E,Ov,RE),其中V表示节点集,E是边集,OV={Q,S,Diff}表示节点类型集,Q表示试题,S为知识点,Diff则为困难度等级,RE={ES-Q,EQ-Diff,EQ-Q}则代表边类型的集合,包括知识点和试题之间的关系ES-Q、试题和困难度之间的关系EQ-Diff以及试题和试题之间的关系EQ-Q。然后,利用Bert模型去编码试题文本特征,即T=Bert(Qtext),并作为试题的初步表征。
再结合上述异构图HetG和试题文本特征T,借助异构神经网络HetGNN去捕捉和学习来自试题文本、其他邻居节点等的异质特征信息,进而得到相应试题的高阶嵌入表示。具体步骤如图2所示,首先采用带重启的随机游走策略(Random Walk with Restart,RWR)采样一定数量的和当前试题具有强相关的异构邻居节点集v,然后从节点集v中抽取相应的内容信息如试题编号、文本等进行编码得到相应的嵌入表示,然后利用注意力机制去聚合这些邻居节点的异质信息,通过不断迭代训练最终得到第i个试题的高阶嵌入表示
其中,E(v)表示不同类型节点嵌入的集合,v∈OV,αi,*表示不同类型嵌入对i个试题节点的重要性,Ti表示该试题节点的文本内容嵌入,f()函数则为LeakyReLU函数。
(3)代码表征
(3-1)数据流图抽取:如图3所示,给定源代码集C={c1,c2,...,cn},先使用tree-sitter解析工具把所有学生代码转化成AST,接着从AST中提取出相应的变量序列V={v1,v2,...,vm},最后从AST中提取变量之间的依赖关系(值的流向)集合E={e1,e2,...,ek},从而构建相应的数据流图,DFG(c)=(Vc,Ec),其中c表示对应源代码,Vc表示该源代码c对应的变量节点集,Ec表示变量间的依赖关系集合。
(3-2)基于GraphCodeBert的代码表示:获得数据流图DFG(c)=(Vc,Ec)后,GraphCodeBert模型的输入为对应的源代码token序列c、相应的注释文本w以及代码变量序列Vc三者拼接后的序列,其中/>表示拼接操作,CLS是位于三者之前的一个特殊token,SEP则代表不同序列间的分隔符。将输入X馈送至GraphCodeBert模型中后会被转化为初始隐藏向量h0,该向量包括了token嵌入和位置嵌入信息,经过N=12层transformer架构的编码-解码过程后,最终得到学生解决第i个试题的作答源代码表示/>
其中,LN()表示层归一化操作,FFN表示前馈神经网络,Attn表示注意力机制,且为改进版的注意力机制,其将数据流图DFG信息引入到其中,具体体现在M矩阵中,矩阵的每一项Mij的值表示如果第i个和第j个token之间没有数据流强关联,则无需关注第j个token变量。
(4)认知过程双序列建模
(4-1)知识状态演化模块:首先,学生试题-反应交互序列X=[(q1,r1),(q2,r2),...,(qt-1,rt-1)]中蕴含了学生对于知识的具体掌握情况,为了让模型能够识别这些数据进而建模学习者的知识状态,需要编码这些交互数据从而得到试题-反应交互嵌入序列,其中单个试题-反应交互嵌入的具体表示如下:
其中0=[0,0,...0],表示零特征向量,其维度与τ时刻的试题嵌入相同,都为d。表示拼接操作,如果学生在τ时刻正确作答出试题qτ,即rτ=1,则将零向量0拼接在试题嵌入/>后面,否则将零向量0拼接在试题嵌入/>前面,这样模型就能够学习到学生做对、做错信息,进而建模出学生在一段时间内不断学习的知识状态变化过程。
接着如图1所示,首先将试题嵌入序列映射为注意力机制中的query向量空间,将试题-反应交互嵌入序列分别映射到key和value向量空间,然后引入了学生能力项λ、学习增长率参数项γ以及遗忘衰减率参数项θ,并使用缩放点击方式得到最终的注意力分数αt,τ:
其中,时刻τ'∈[1,t],d表示嵌入维度,WQ∈Rd×d、WK∈R2d×d分别为query、key的映射矩阵,是模型要训练的参数。λ是一个表示学生能力的标量,其值为步骤(2-1)中IRT模型评估的θ参数值。受IRT思想所启发,认为这种能力与学生学习次数呈正相关,与学生遗忘时间呈负相关。
最终,将相应的注意力分数和value矩阵进行加权求和来综合考虑先前试题-反应交互嵌入序列对t时刻学生知识状态的不同程度影响:
其中,WV∈R2d×d是value映射矩阵。
(4-2)编程能力编码模块:如图1所示,为了对学生的整个编程过程进行建模,学习学生在不同编程阶段的隐藏状态,即编程能力,首先需要编码学生的代码-反应交互数据。具体地,给定学生代码-反应交互序列Y=[(c1,r1),(c2,r2),...,(ct-1,rt-1)],在步骤(3-2)得到的代码嵌入序列基础上编码得到代码-反应交互嵌入序列/>其中,单个代码-反应交互嵌入/>表示为:
其中,0=[0,0,...0],表示零向量。
接下来,通过门控循环单元GRU来输出该生当前的潜在编程能力水平
其中, 分别代表更新门和重置门,/>表示新的记忆,σ为sigmoid函数,W*∈Rd×d、U*∈Rd×d则为权重系数。值得注意的是,具体实施中初始隐藏状态/>设置为d维的零向量,因为,假设学生在最开始的时候属于编程新手,不具备一定的编程能力。
最后,为了进一步增强GRU在处理长序列时捕获长期依赖的能力,引入了注意力机制。具体来说,拟合每个学生从时刻1到时刻t的编程过程中,借助代码嵌入和历史代码嵌入序列/>的相关性,对该生历史潜在编程能力水平进行加权总和得到其t时刻的编程能力水平/>
其中,注意力分数βt,τ表示代码向量之间的余弦相似度。
(5)表现预测和模型训练
(5-1)表现预测:结合学***/>得到学习者在t时刻的隐藏状态,即/>将其馈送至预测层的全连接网络中,并通过sigmoid激活函数去预测当前学生作答反应/>
其中FC表示全连接层,由线性变化操作和Relu非线性激活函数所组成,分别为权重和偏差项。
(5-2)模型训练:通过最小化模型预测结果和学生真实作答反应rt之间的二元交叉熵损失来不断训练优化模型的各个参数,直至损失值/>收敛,模型的损失函数为:
算法1描述了一种基于认知策略的编程知识追踪方法的整个训练过程。
本发明未详细阐述的部分属于本领域公知技术。
应当说明的是,以上包含的本发明实例内容说明,是为了详解释本发明的技术特征。在不脱离本发明的前提下,所做出的若干改进和修饰也受本发明的保护,因此本发明的保护范围应当以本申请的权利要求所界定的内容为标准。
Claims (2)
1.一种基于认知策略的编程知识追踪方法,其特征在于该方法包括以下步骤:
(1)问题定义和数据预处理;定义编程知识追踪问题,采集相应的数据记录,处理成知识追踪模型所需的数据格式,为后续试题与代码表征提供数据准备;
(1-1)编程知识追踪问题定义:给定一个学习者的历史作答记录X={x1,x2,…,xt-1},评估学习者当前的隐藏学习状态ht,并据此预测学习者在时刻t的表现rt;其中学习者的一条做题记录表示为xτ=(qτ,cτ,rτ),qτ为学习者在τ时刻回答的问题,cτ表示学习者针对问题qτ所编写的代码,rτ表示学生在qτ上的回答情况,回答正确则值为1,反之则为0;
(1-2)数据采集:数据来源于真实公开数据,其包含了学习者历史答题记录,每位学习者的答题记录包括作答题号、知识点、源代码、时间戳以及学习者回答情况的原始数据;
(1-3)数据预处理:将每一位学习者历史答题记录处理成五行数据,第一行是该学习者的编号和答题数量,第二行是其答题历史记录中的题目编号,第三行为针对相应题目所编写的源代码编号,第四行是回答相应试题的时间戳,第五行是对应试题的回答情况;
(2)试题表征;构建知识点-试题-困难度的异构图,利用异构神经网络编码、学习得到试题嵌入;
(2-1)困难度编码:将学***大致相同的试题划归为一类,总共分为易、偏易、适中、偏难和难五种等级;
(2-2)基于异构图神经网络的试题表示:定义一个基于上下文内容的异构图HetG=(V,E,Ov,RE),其中V表示节点集,E是边集,OV={Q,S,Diff}表示节点类型集,Q表示试题,S为知识点,Diff为困难度等级,RE={ES-Q,EQ-Diff,EQ-Q}代表边类型的集合,包括知识点和试题之间的关系ES-Q、试题和困难度之间的关系EQ-Diff以及试题和试题之间的关系EQ-Q,利用Bert模型编码试题文本特征,即T=Bert(Qtext),并作为试题的初步表征,结合上述异构图HetG和试题文本特征T,借助异构神经网络HetGNN捕捉和学习来自试题文本、其他邻居节点的异质特征信息,进而得到相应试题的高阶嵌入表示
(3)代码表征;针对给定的源代码构建相应的数据流图,利用GraphCodeBert方法得到代码嵌入;
(3-1)数据流图抽取:给定源代码集C={c1,c2,...,cn},使用tree-sitter解析工具把所有学生代码转化成AST,从AST中提取出相应的变量序列V={v1,v2,...,vm},从AST中提取变量之间的依赖关系集合E={e1,e2,...,ek},构建相应的数据流图,DFG(c)=(Vc,Ec),其中c表示对应源代码,Vc表示该源代码c对应的变量节点集,Ec表示变量间的依赖关系集合;
(3-2)基于GraphCodeBert的代码表示:获得数据流图DFG(c)=(Vc,Ec)后,GraphCodeBert模型的输入为对应的源代码token序列c、相应的注释文本w以及代码变量序列Vc三者拼接后的序列,其中/>表示拼接操作,CLS是位于三者之前的一个特殊token,SEP代表不同序列间的分隔符,将输入序列X馈送至GraphCodeBert模型中,经过编码-解码过程后,最终得到学生相应源代码的高阶嵌入表示
(4)认知过程双序列建模;将步骤(2-2)所得到的试题嵌入序列、步骤(3-2)所得到的代码嵌入序列分别馈送至知识状态演化模块和编程能力编码模块中,借助注意力Attention和门控循环单元GRU网络进行认知过程双序列建模,评估学习者的知识状态和编程能力;
(4-1)知识状态演化模块:将试题嵌入作答结果rτ、遗忘时间间隔Δtτ、重复练习次数nτ,这些认知上下文数据作为输入馈送至知识状态演化模块中,通过使用改进的注意力机制来个性化建模学生的知识状态空间,输出学习者当前的潜在知识状态/>
(4-2)编程能力编码模块:将学***/>
(5)表现预测和模型训练;包括表现预测和模型训练两部分;
(5-1)表现预测:结合学***/>得到学习者在t时刻的隐藏状态,即/>将其馈送至预测层的全连接网络中,并通过sigmoid激活函数去预测当前学生作答反应/>
其中FC表示全连接层,由线性变化操作和Relu非线性激活函数所组成,分别为权重和偏差项;
(5-2)模型训练:通过最小化模型预测结果和学生真实作答反应rt之间的二元交叉熵损失来不断训练优化模型的各个参数,直至损失值/>收敛,模型的损失函数为:
2.根据权利要求1所述的基于认知策略的编程知识追踪方法,其特征在于:步骤(4)认知过程双序列建模中,通过知识状态演化模块和编程能力编码模块分别获得学习者当前的知识状态和编程能力/>的具体方式为:
知识状态演化模块:首先,知识状态演化模块的输入为学生试题-反应交互序列X=[(q1,r1),(q2,r2),...,(qt-1,rt-1)],经过编码得到试题-反应交互嵌入序列,而单个试题-反应交互嵌入的具体表示如下:
其中0=[0,0,...0],表示零特征向量,其维度与τ时刻的试题嵌入相同,都为d,/>表示拼接操作,如果学生在τ时刻正确作答出试题qτ,即rτ=1,则将零向量0拼接在试题嵌入/>后面,否则将零向量0拼接在试题嵌入/>前面;
接着将试题嵌入序列映射为注意力机制中的query向量空间,将试题-反应交互嵌入序列分别映射到key和value向量空间,然后引入了学生能力项λ、学习增长率参数项γ以及遗忘衰减率参数项θ,并使用缩放点击方式得到最终的注意力分数αt,τ:
其中,时刻τ'∈[1,t],d表示嵌入维度,WQ∈Rd×d、WK∈R2d×d分别为query、key的映射矩阵,是模型要训练的参数,λ是一个表示学生能力的标量,其值为步骤(2-1)中IRT模型评估的θ参数值;
最终,将相应的注意力分数和value矩阵进行加权求和来综合考虑先前试题-反应交互嵌入序列对t时刻学生知识状态的不同程度影响:
其中,WV∈R2d×d是value映射矩阵;
编程能力编码模块:给定学生代码-反应交互序列Y=[(c1,r1),(c2,r2),...,(ct-1,rt-1)],在步骤(3-2)得到的代码嵌入序列基础上编码得到代码-反应交互嵌入序列/>其中,单个代码-反应交互嵌入/>表示为:
其中,0=[0,0,...0],表示零向量;
接下来,通过门控循环单元GRU输出该生当前的潜在编程能力水平
其中,rt c分别代表更新门和重置门,/>表示新的记忆,σ为sigmoid函数,W*∈Rd ×d、U*∈Rd×d则为权重系数,具体实施中初始隐藏状态/>设置为d维的零向量;
最后,拟合每个学生从时刻1到时刻t的编程过程中,借助代码嵌入和历史代码嵌入序列/>的相关性,对该生历史潜在编程能力水平进行加权总和得到其t时刻的编程能力水平/>
其中,注意力分数βt,τ表示代码向量之间的余弦相似度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311106919.4A CN117473041A (zh) | 2023-08-30 | 2023-08-30 | 一种基于认知策略的编程知识追踪方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311106919.4A CN117473041A (zh) | 2023-08-30 | 2023-08-30 | 一种基于认知策略的编程知识追踪方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117473041A true CN117473041A (zh) | 2024-01-30 |
Family
ID=89631955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311106919.4A Pending CN117473041A (zh) | 2023-08-30 | 2023-08-30 | 一种基于认知策略的编程知识追踪方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117473041A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117973527A (zh) * | 2024-04-02 | 2024-05-03 | 云南师范大学 | 一种基于gru捕捉问题上下文特征的知识追踪方法 |
-
2023
- 2023-08-30 CN CN202311106919.4A patent/CN117473041A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117973527A (zh) * | 2024-04-02 | 2024-05-03 | 云南师范大学 | 一种基于gru捕捉问题上下文特征的知识追踪方法 |
CN117973527B (zh) * | 2024-04-02 | 2024-06-07 | 云南师范大学 | 一种基于gru捕捉问题上下文特征的知识追踪方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109376242B (zh) | 基于循环神经网络变体和卷积神经网络的文本分类方法 | |
CN112800323B (zh) | 一种基于深度学习的智能教学*** | |
CN112508334A (zh) | 融合认知特性及试题文本信息的个性化组卷方法及*** | |
CN113610235B (zh) | 一种基于深度知识追踪的适应性学习支持装置及方法 | |
CN112257966B (zh) | 模型处理方法、装置、电子设备及存储介质 | |
CN111126552B (zh) | 一种智能学习内容推送方法及*** | |
Wu et al. | Exam paper generation based on performance prediction of student group | |
CN107544960A (zh) | 一种基于变量绑定和关系激活的推理方法 | |
CN114254127A (zh) | 学生能力画像方法、学习资源推荐方法及装置 | |
CN114021722A (zh) | 一种融合认知刻画的注意力知识追踪方法 | |
CN114385801A (zh) | 一种基于分层细化lstm网络的知识追踪方法及*** | |
CN117473041A (zh) | 一种基于认知策略的编程知识追踪方法 | |
CN116012627A (zh) | 一种基于超图聚类的因果时序双增强知识追踪方法 | |
Hamim et al. | Student profile modeling using boosting algorithms | |
CN115310520A (zh) | 融合多特征的深度知识追踪方法及习题推荐方法 | |
Nelyub et al. | Machine learning to identify key success indicators | |
CN113283488B (zh) | 一种基于学习行为的认知诊断方法及*** | |
Huang et al. | Learning consistent representations with temporal and causal enhancement for knowledge tracing | |
Bhusal | Predicting Student's Performance Through Data Mining | |
CN112883723A (zh) | 基于布鲁姆认知分类理论的深度神经网络认知水平评价模型 | |
CN116523402A (zh) | 一种基于多模态数据的网络学习资源质量评估方法及*** | |
CN115795015A (zh) | 一种试题难度增强的综合知识追踪方法 | |
CN113361615B (zh) | 基于语义相关性的文本分类方法 | |
Jiang et al. | Learning analytics in a blended computer education course | |
CN113987124A (zh) | 深度知识追踪方法、***及可存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |