融合图嵌入和注意力的知识追踪方法与流程
未命名
08-22
阅读:108
评论:0
1.本发明属于教育数据挖掘技术领域,更为具体地讲,涉及一种融合图嵌入和注意力的知识追踪方法。
背景技术:
2.大规模在线学习平台的普及和智能化教学数据分析的应用,为个性化精准教学提供了有利的保障,在线学习平台能够保存学习者详细的交互活动和历史行为轨迹,利用这些数据,可以针对学习者个体,生成自适应的学习路径和推送个性化的学习资源,实现“千人千面”的因材施教。知识追踪(knowledge tracing)利用学习者回答一组习题的正误序列,估计学习者对技能点的掌握状态,并预测学习者能够答对下一道题目的概率。但由于学习活动的多样性和知识体系的复杂性,现阶段要进行精准的认知状态诊断仍然是一项具有挑战的任务。
3.按照建模方法的不同,现有知识追踪方法可以分为3类:贝叶斯知识追踪(bayesian knowledge tracing,bkt)、基于逻辑回归模型的可加性因素模型(additive factor model,afm),以及基于循环神经网络的深度知识追踪(deep knowledge tracing,dkt)。
4.其中,bkt方法将潜在的知识状态看做二元变量,在每一轮学习交互后,根据学习者是否掌握某个技能点,使用隐马尔科夫模型更新二元变量的值。但由于现实中的技能点与变量之间的对应是模糊的,因此bkt无法捕捉不同技能点之间的关系,也因此丧失了对复杂知识的建模能力。afm方法假设学习是一个渐进的变化过程,而非一个离散的过渡;该方法融入了练习次数和学习率两个变量表达对学习者知识状态的影响,实现了知识状态从静态评估到动态分析的跨越。但afm方法需要大量依赖专家经验来标注出领域知识,因此人工成本较高。dkt方法使用循环神经网络来预测知识状态,通过独热(one-hot)编码或压缩感知算法将输入的学习状态数据转化为向量表示,经过输入层、隐藏层的特征提取,由输出层预测出学习者下一次答题的成绩。与传统机器学习模型相比,循环神经网络在表征时间状态方面具有高维、连续的优势,因此更适合对复杂知识体系的建模。dkt的预测性能优于传统的机器学习方法,但其隐藏层的参数因不具有教学的可解释性,比如具有相同技能点的题目也可能存在难度上的差异。近年来,基于注意力机制的transformer被广泛引入到深度学习模型,有效提升了预测准确性,但它的训练成本和计算消耗较高,极大地制约了其在知识追踪任务中的应用。
技术实现要素:
5.本发明的目的在于克服现有技术的不足,提供一种融合图嵌入和注意力的知识追踪方法,利用图结构表达每个题目和技能点的关联关系,并将题目难易程度编码为属性信息一并作为认知状态预测的依据,基于自注意力机制进行认知状态预测,提高知识追踪的准确率。
6.为实现上述发明目的,本发明融合图嵌入和注意力的知识追踪方法包括以下步骤:
7.s1:通过在线学习系统后台获取若干条答题记录,从中提取出题目信息集合技能点信息集合记题目数量为n
x
、技能点数量为ns,对每个题目和技能点进行编码,得到m-1维编码向量,m的值根据实际需要确定;提取每条答题记录的信息,包括题目编码、技能点编码、学习者编号、表示学习者答题是否正确的学习者答题标识,当学习者回答正确,学习者答题标识为1,否则为0;根据答题记录为每位学习者生成历史行为记录集合,每条记录包含该学习者回答的题目编号、答题标识和题目对应的技能者编号集合;
8.s2:将n
x
个题目和ns个技能点作为节点,当某个题目和某个技能点在同一答题记录中出现,则在对应节点生成边,从而生成题目和技能点的关联结构图g,为每个节点生成初始向量,然后进行图嵌入得到每个题目节点和技能点节点的嵌入向量,嵌入向量的维度为m,从而得到题目特征矩阵和技能点特征矩阵
9.s3:构建认知状态预测模型,包括多头注意力模块,点积模块和sigmoid模块,其中:
10.多头注意力模块用于采用多头注意力机制,从学习者的d条历史答题纪录提取出大小为m
×
m的知识状态矩阵w并发送给点积模块,其中多头注意力机制中查询为学习者的d条历史答题纪录中第d条历史答题纪录中题目嵌入向量xd,键为学习者的d条历史答题纪录中第d条历史答题纪录中技能点的嵌入向量sd,sd表示第d条历史答题记录中题目所涉及技能点嵌入向量的平均向量,值为d条历史答题纪录中第d条历史答题纪录中的答题向量ed,ed表示第d条历史答题记录中题目的编码向量和学习者答题标识所拼接得到的答题向量;
11.点积模块用于将待预测的下一道题目的嵌入向量和知识状态矩阵w进入点积计算,得到特征矩阵并发送至sigmoid模块。
12.sigmoid模块用于采用sigmoid非线性激活函数对特征矩阵进行处理,得到学习者答对待预测题目的概率
13.s4:通过在线学习系统后台获取不同学习者的若干条答题记录,然后划分为长度为d+1的答题记录序列;对于每个答题记录序列,得到每条答题记录中题目的嵌入向量xd和学习者答题标识yd,将d+1入嵌入向量和前d个学习者答题正确标识yd作为输入,将第d+1个答题标识作为期望输出,对认知状态预测模型进行训练;
14.s5:对于需要进行知识追踪的学习者,获取其最近d道题目的答题记录,将每条答题记录中题目的嵌入向量记为x
′d,学习者答题正确与否标识记为y
′d,将待回答的下一道题目的嵌入向量记为将以上信息输入至步骤s4训练完成的认知状态预测模型,得到该学习者答对下一道题目的预测概率。
15.进一步地,步骤s2中图嵌入所采用的损失函数loss的计算公式如下:
16.loss=(1-α)*(l1(x,s)+l2(x)+l3(s))+(α)*l4(x,s,θ)
17.其中,l1(x,s)表示题目和技能点的关联性损失函数,计算方法如下:
18.对于第i个题目和第j个技能点,i∈{1,2,
…
,n
x
},j∈{1,2,
…
,ns},记第i个题目的当前特征向量为xi,记第j个题目的当前特征向量为sj,j=1,2,
…
,ns,如果第i个题目和第j个技能点在图g中存在连接边,则令关联系数r
ij
=1,否则令关联系数r
ij
=0;采用如下公式计算第i个题目和第j个技能点之间的局部邻近度
[0019][0020]
其中,σ()表示sigmoid非线性激活函数;
[0021]
然后采用如下公式计算得到题目和技能点之间的关联性损失函数l1(x,s):
[0022][0023]
l2(x)表示题目相似度的交叉熵损失函数,其计算方法如下:
[0024][0025]
其中,r
ii
′
x
表示第i个题目和第i
′
个题目之间真实的关联关系,如果第i个题目和第i
′
个题目都是同一个技能点节点的邻居节点,则r
ii
′
x
=1,否则r
ii
′
x
=0,表示第i个题目和第i
′
个题目之间的相关性估计值,
[0026]
l3(s)表示技能点相似度的交叉熵损失函数,其计算方法如下:
[0027][0028]
其中,r
jj
′s表示第j个技能点和第j
′
个技能点之间真实的关联关系,如果第j个技能点和第j
′
个技能点都是同一个题目节点的邻居节点,则r
jj
′s=1,否则r
jj
′s=0,表示技能点之间的相关性估计值,
[0029]
l4(q,s)表示题目难度损失函数,其计算方法如下:
[0030]
对于第i个题目,根据步骤s1收集的答题记录统计得到该题目的正确率ui,然后采用预设的非线性激活函数将正确率映射为难度属性特征ci=w
t
ui+b,w、b分别表示非线性激活函数的权重和偏置项;采用leakyrelu作为激活函数ci进行处理,得到正确率估计值
[0031][0032]
其中,leak为常数项;
[0033]
然后采用如下公式计算题目的难度损失函数l4(q,s):
[0034][0035]
其中,表示表示非线性激活层的权重w和偏置项b构成的向量,|| ||2表示求取二范数,λ是用来控制经验误差项与正则化项之间关系的系数。
[0036]
进一步地,步骤s3中多头注意力模块包括线性变换模块、注意力计算层、拼接层和全连接层,其中:
[0037]
线性变换模块包括h组线性层,h的值应该实际需要确定,每组线性层包括第一线性层、第二线性层和第三线性层,用于分别对查询qd、键kd、值vd进行线性变换,然后将线性变换后的查询矩阵、键矩阵、值矩阵发送给注意力计算层,第h组线性层中:
[0038]
第一线性层用于对输入的查询qd进行线性计算,得到查询矩阵q
d,h
=linear(qd)=qdw
q,h
并发送给注意力计算层,其中表示查询的第h个权重矩阵;
[0039]
第二线性层用于对输入的键kd进行线性计算,得到键矩阵k
d,h
=linear(kd)=kdw
k,h
并发送至注意力计算层,其中表示键的第h个权重矩阵;
[0040]
第三线性层用于对输入的值vd进行线性计算,得到值矩阵v
d,h
=linear(kd)=kdw
k,h
并发送至注意力计算层,其中表示键的第h个权重矩阵;
[0041]
注意力计算层用于分别采用注意力机制对接收的h组查询矩阵q
d,h
、键矩阵k
d,h
和值矩阵v
d,h
进行计算,得到对应的注意力矩阵headh=attention(q
d,h
,k
d,h
,v
d,h
),然后发送给拼接层;
[0042]
拼接层用于对h个注意力矩阵headh进行拼接,得到多头注意力矩阵multi_head(q,k,v)=concat(head1,...,headh)wo,其中wo是待训练的参数矩阵,然后将多头注意力矩阵multi_head(q,k,v)发送至全连接层;
[0043]
全连接层用于对多头注意力矩阵multi_head(q,k,v)进行降维处理,得到大小为k
×
k的知识状态矩阵w。
[0044]
进一步地,注意力计算层的计算方法如下:
[0045]
首先对查询q
d,h
和键k
d,h
进行二制量化操作,具体方法为:
[0046]
记待进行二制量化操作的矩阵为f,从矩阵f中随机抽取m个子矩阵作为支持样本,γ表示预设的子矩阵大小,将子矩阵任意组合得到m
×
(m-1)个子矩阵对(fm,fm′
),m,m
′
=1,2,
…
,m且m≠m
′
;然后使用核函数κ(fm,fm′
):学习一组哈希函数映射h:λ表示哈希函数的数量;然后进行哈希函数映射得到:
[0047][0048]
上式中,κ()表示哈希核函数,表示权重矩阵,用于对核函数进行归一化处理,且归一化后的核函数均值为0,g:是由定义的映射,h(fm)即为子矩阵fm通过哈希函数映射后的向量;
[0049]
记查询q
d,h
抽取得到的子矩阵为(q
d,h
)m,哈希函数映射后的向量为h((q
d,h
)m),键k
d,h
取得到的子矩阵为(k
d,h
)m,哈希函数映射后的向量为h((k
d,h
)m);对于子矩阵对(q
d,h
)m,(k
d,h
)m′
),m,m
′
=1,2,
…
,m,将对应的向量h((q
d,h
)m)和h((k
d,h
)m′
)的距离作为相似度,选择
前β个相似度最大的子矩阵对构成集合选择前β个相似度最小的子矩阵对构成集合β的值根据实际需要设置;然后采用如下公式计算对应的注意力衰减标签y
d,h
((q
d,h
)m,(k
d,h
)m′
)):
[0050][0051]
从而得到大小为m
×
m的注意力衰减标签矩阵y
d,h
;
[0052]
采用如下公式计算得到注意力矩阵headh:
[0053][0054]
进一步地,步骤s4中认知状态预测模型训练的损失函数采用交叉熵损失函数。
[0055]
本发明融合图嵌入和注意力的知识追踪方法,通过在线学习系统后台获取若干条答题记录,构建得到题目和技能点的关联结构图,进行图嵌入得到每个题目节点和技能点节点的嵌入向量,构建包括多头注意力模块,点积模块和sigmoid模块的认知状态预测模型,通过在线学习系统后台获取不同学习者的若干条答题记录,对认知状态预测模型进行训练,对于需要进行知识追踪的学习者,将其历史答题记录的信息输入训练好的认知状态预测模型中,得到该学习者答对下一道题目的预测概率。
[0056]
本发明具有以下有益效果:
[0057]
1)本发明通过构建题目和时技能点的关联结构图,通过学习者与技能点所关联题目的交互记录,真实模拟学习者对技能点掌握状态的变化;
[0058]
2)本发明在知识状态提取过程中,结合注意力机制,为不同题目的交互记录分配差异化的权重,及时更新学习者的知识状态特征,从而更加准确地预测下一道题目能够答对的概率;
[0059]
3)本发明可以通过低功耗注意力机制,显著降低计算能耗,缩短认知状态预测模型的训练时间。
附图说明
[0060]
图1是本发明融合图嵌入和注意力的知识追踪方法的具体实施方式结构图;
[0061]
图2是本实施例中图嵌入过程示意图;
[0062]
图3是本发明中认知状态预测模型的结构图;
[0063]
图4是本实施例多头注意力模块的结构图;
[0064]
图5是本实施例本发明和对比方法的知识追踪性能对比图;
[0065]
图6是本实施例中本发明和对比方法在assis09数据集上的训练时间对比图。
具体实施方式
[0066]
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许
会淡化本发明的主要内容时,这些描述在这里将被忽略。
[0067]
实施例
[0068]
图1是本发明融合图嵌入和注意力的知识追踪方法的具体实施方式结构图。如图1所示,本发明融合图嵌入和注意力的知识追踪方法的具体步骤包括:
[0069]
s101:获取知识追踪训练数据:
[0070]
通过在线学习系统后台获取若干条答题记录,从中提取出题目信息集合技能点信息集合记题目数量为n
x
、技能点数量为ns,对每个题目和技能点进行编码,得到m-1维编码向量,m的值根据实际需要确定。提取每条答题记录的信息,包括题目编码、技能点编码、学习者编号、表示学习者答题是否正确的学习者答题标识,当学习者回答正确,学习者答题标识为1,否则为0。根据答题记录为每位学习者生成历史行为记录集合,每条记录包含该学习者回答的题目编号、答题标识和题目对应的技能者编号集合。
[0071]
s102:基于图结构进行嵌入表征:
[0072]
将n
x
个题目和ns个技能点作为节点,当某个题目和某个技能点在同一答题记录中出现,则在对应节点生成边,从而生成题目和技能点的关联结构图g,为每个节点生成初始向量,然后进行图嵌入得到每个题目节点和技能点节点的嵌入向量,嵌入向量的维度为m,从而得到题目特征矩阵和技能点特征矩阵
[0073]
图2是本实施例中图嵌入过程示意图。如图2所示,题目和技能点的关联结构图g中每个节点都关联节点属性、节点连接边以及关系属性,在图嵌入过程中通过聚合操作获得图中每个节点的邻居采样,利用邻居采样结果对节点信息进行更新,得到每个节点的低维度嵌入向量。本发明中为了提高嵌入向量的准确性,在图嵌入的损失函数设计中,考虑了“题目——技能点”间的局部依赖性、“题目——题目”间的相似性和“技能点——技能点”间的相似性,同时为了有效提取图结构中包含的知识,所有学习者在当前题目节点上的回答正确率也转换为属性特征嵌入至图结构中,使学习到的图嵌入向量中保留题目难度信息。本实施例中图嵌入损失函数loss的计算公式如下:
[0074]
loss=(1-α)*(l1(x,s)+l2(x)+l3(s))+(α)*l4(x,s,θ)
[0075]
其中,l1(x,s)表示题目和技能点的关联性损失函数,计算方法如下:
[0076]
对于第i个题目和第j个技能点,i∈{1,2,
…
,n
x
},j∈{1,2,
…
,ns},记第i个题目的当前特征向量为xi,记第j个题目的当前特征向量为sj,j=1,2,
…
,ns,如果第i个题目和第j个技能点在图g中存在连接边,则令关联系数r
ij
=1,否则令关联系数r
ij
=0。采用如下公式计算第i个题目和第j个技能点之间的局部邻近度
[0077][0078]
其中,σ()表示sigmoid非线性激活函数,通过sigmoid函数可将关系值归一化至[0,1]的区间内,从而将关系值转换为概率,从而表征题目和技能的局部邻近度。上标t表示转置。
[0079]
然后采用如下公式计算得到题目和技能点之间的关联性损失函数l1(x,s):
[0080]
[0081]
l2(x)表示题目相似度的交叉熵损失函数,其计算方法如下:
[0082]
根据题目和技能点的关联结构图g,如果两个题目节点都具有某个公共邻居的技能点节点,则可以聚合邻居的关系信息作为题目间的相似性,因此采用如下公式计算题目相似度的交叉熵损失函数l2(x):
[0083][0084]
其中,r
ii
′
x
表示第i个题目和第i
′
个题目之间真实的关联关系,如果第i个题目和第i
′
个题目都是同一个技能点节点的邻居节点,则r
ii
′
x
=1,否则r
ii
′
x
=0,表示第i个题目和第i
′
个题目之间的相关性估计值,
[0085]
l3(s)表示技能点相似度的交叉熵损失函数,其计算方法如下:
[0086]
与题目类似,如果两个技能点节点都具有某个公共邻居的一点点节点,则可以聚合邻居的关系信息作为技能点间的相似性,因此采用如下公式计算题目相似度的交叉熵损失函数l3(s):
[0087][0088]
其中,r
jj
′s表示第j个技能点和第j
′
个技能点之间真实的关联关系,如果第j个技能点和第j
′
个技能点都是同一个题目节点的邻居节点,则r
jj
′s=1,否则=1,否则表示技能点之间的相关性估计值,
[0089]
l4(q,s)表示题目难度损失函数,其计算方法如下:
[0090]
从答题记录中可以提取出所有学习者在当前题目节点上的正确率,因此本发明在图嵌入阶段将此类信息映射为难度属性嵌入至图模型中,作为学习者知识状态预测的辅助特征。对于第i个题目,根据步骤s101收集的答题记录统计得到该题目的正确率ui,然后采用预设的非线性激活函数将正确率映射为难度属性特征ci=w
t
ui+b,w、b分别表示非线性激活函数的权重和偏置项。传统的sigmoid非线性激活函数在模型训练阶段容易出现梯度消失问题,因此本实施例中选用leaky rectified linear unit(leakyrelu)作为激活函数对难度属性特征ci进行处理,得到正确率估计值
[0091][0092]
其中,leak为常数项,用于保留梯度值中的负数信息。
[0093]
根据上式可见,当w
it
ui+bi小于等于0时,输出强制等于0。使用leakyrelu激活函数,可以使输出具有一定的稀疏性,从而加快模型的收敛速度。
[0094]
然后采用如下公式计算题目的难度损失函数l4(q,s):
[0095][0096]
其中,表示表示非线性激活层的权重w和偏置项b构成的向量,||||2表示求取二范数,λ是用来控制经验误差项与正则化项之间关系的系数,使模型具有更好的泛化性能。
[0097]
综上所述,本实施例在图嵌入过程中采用联合训练,使用梯度下降算法进行优化,直至损失函数不再减小,得到训练完成的图结构嵌入信息,得到每个题目节点和技能点节点的嵌入向量。
[0098]
s103:构建认知状态预测模型:
[0099]
为了实现对学习者进行认知状态预测,本发明基于多头注意力机制构建了认知状态预测模型。图3是本发明中认知状态预测模型的结构图。如图3所示,本发明中认知状态预测模型包括多头注意力模块,点积模块和sigmoid模块,其中:
[0100]
多头注意力模块用于采用多头注意力机制,从学习者的d条历史答题纪录提取出大小为m
×
m的知识状态矩阵w并发送给点积模块,其中多头注意力机制中查询为学习者的d条历史答题纪录中第d条历史答题纪录中题目嵌入向量xd,键为学习者的d条历史答题纪录中第d条历史答题纪录中技能点的嵌入向量sd,sd表示第d条历史答题记录中题目所涉及技能点嵌入向量的平均向量,值为d条历史答题纪录中第d条历史答题纪录中的答题向量ed,ed表示第d条历史答题记录中题目的编码向量和学习者答题标识所拼接得到的答题向量。
[0101]
图4是本实施例多头注意力模块的结构图。如图4所示,本实施例中多头注意力模块包括线性变换模块、注意力计算层、拼接层和全连接层,其中:
[0102]
线性变换模块包括h组线性层,h的值应该实际需要确定,每组线性层包括第一线性层、第二线性层和第三线性层,用于分别对查询qd、键kd、值vd进行线性变换,然后将线性变换后的查询矩阵、键矩阵、值矩阵发送给注意力计算层,第h组线性层中:
[0103]
第一线性层用于对输入的查询qd进行线性计算,得到查询矩阵q
d,h
=linear(qd)=qdw
q,h
并发送给注意力计算层,其中表示查询的第h个权重矩阵。
[0104]
第二线性层用于对输入的键kd进行线性计算,得到键矩阵k
d,h
=linear(kd)=kdw
k,h
并发送至注意力计算层,其中表示键的第h个权重矩阵。
[0105]
第三线性层用于对输入的值vd进行线性计算,得到值矩阵v
d,h
=linear(kd)=kdw
k,h
并发送至注意力计算层,其中表示键的第h个权重矩阵。
[0106]
注意力计算层用于分别采用注意力机制对接收的h组查询矩阵q
d,h
、键矩阵k
d,h
和值矩阵v
d,h
进行计算,得到对应的注意力矩阵headh=attention(q
d,h
,k
d,h
,v
d,h
),然后发送给拼接层。
[0107]
基于常规的注意力计算方式,本实施例中注意力矩阵可以采用如下公式计算:
[0108][0109]
为了提高多头注意力模块的运算效率,降低计算开销,本实施例中采用低功耗注意力机制,具体方法为:假设查询qd和键kd都是单位向量,可使用二值化对其进行量化表达,则注意力机制计算近似为:
[0110][0111]
上式中,表示外积操作,为了避免分母值为0,在每个内积操作后引入一个偏差项c,使得h(q
d,h
)h(k
d,h
)
t
+c≥0;h()表示哈希函数。
[0112]
虽然上述公式将注意力机制的复杂度降低为了线性运算,公式中依然存在很多浮点乘法运算,还需要进一步改进,具体方法为:
[0113]
首先对查询q
d,h
和键k
d,h
进行二制量化操作,具体方法为:
[0114]
记待进行二制量化操作的矩阵为f,从矩阵f中随机抽取m个子矩阵作为支持样本,γ表示预设的子矩阵大小,将子矩阵任意组合得到m
×
(m-1)个子矩阵对(fm,fm′
),m,m
′
=1,2,
…
,m且m≠m
′
。然后使用核函数κ(fm,fm′
):学习一组哈希函数映射h:λ表示哈希函数的数量。从而把上式中的二值化与精确浮点值之间的乘法运算,替换为简单的加法运算,从而减少计算能耗。此时可以进行哈希函数映射得到:
[0115][0116]
上式中,κ()表示哈希核函数,表示权重矩阵,用来对核函数进行归一化处理,且归一化后的核函数均值为0,g:是由定义的映射,h(fm)即为子矩阵fm通过哈希函数映射后的向量。
[0117]
通过上述二值量化,将原始的高维查询q
d,h
和键k
d,h
映射至保持了相近性的低维空间中,降低计算复杂度。记查询q
d,h
抽取得到的子矩阵为(q
d,h
)m,哈希函数映射后的向量为h((q
d,h
)m),键k
d,h
取得到的子矩阵为(k
d,h
)m,哈希函数映射后的向量为h((k
d,h
)m)。对于子矩阵对(q
d,h
)m,(k
d,h
)m′
),m,m
′
=1,2,
…
,m,将对应的向量h((q
d,h
)m)和h((k
d,h
)m′
)的距离作为相似度,选择前β个相似度最大的子矩阵对构成集合选择前β个相似度最小的子矩阵对
构成集合β的值根据实际需要设置。然后采用如下公式计算对应的注意力衰减标签y
d,h
((q
d,h
)m,(k
d,h
)m′
)):
[0118][0119]
从而得到大小为m
×
m的注意力衰减标签矩阵y
d,h
。注意力矩阵headh通过值v
d,h
与注意力衰减标签y
d,h
加权计算得到,具体计算表达式:
[0120][0121]
上式中,知识状态是由其历史做题记录,联合全部子空间的处理结果进行线性变换而得到,反映不同题目对学习者知识状态更新的贡献度,从而使用轻量化的逐位运算代替了低效的浮点乘法运算,量化出了学习者对不同知识点的掌握情况。
[0122]
拼接层用于对h个注意力矩阵headh进行拼接,得到多头注意力矩阵multi_head(q,k,v)=concat(head1,...,headh)wo,其中wo是待训练的参数矩阵,然后将多头注意力矩阵multi_head(q,k,v)发送至全连接层。
[0123]
全连接层用于对多头注意力矩阵multi_head(q,k,v)进行降维处理,得到大小为m
×
m的知识状态矩阵w。
[0124]
点积模块用于将待预测题目的嵌入向量和知识状态矩阵w进入点积计算,得到矩阵并发送给sigmoid模块。
[0125]
sigmoid模块用于采用sigmoid非线性激活函数对矩阵进行处理,得到学习者答对待预测题目的概率
[0126]
s104:训练认知状态预测模型:
[0127]
通过在线学习系统后台获取不同学习者的若干条答题记录,然后划分为长度为d+1的答题记录序列。对于每个答题记录序列,得到每条答题记录中题目的嵌入向量xd和学习者答题标识yd,将d+1个嵌入向量和前d个学习者答题正确标识yd作为输入,将第d+1个答题标识作为期望输出,对认知状态预测模型进行训练。
[0128]
本实施例中,认知状态预测模型训练所采用的损失函数采用交叉熵损失函数,其计算公式如下:
[0129][0130]
其中,表示真实的答题标识,p
t+1
表示根据学习者当前认知状态所预测出的答题标识。通过模型的参数训练,减小交叉熵的值,以保证模型的预测效果与真实标签逐渐近似。
[0131]
s105:认知状态预测:
[0132]
对于需要进行知识追踪的学习者,获取其最近d道题目的答题记录,将每条答题记录中题目的嵌入向量记为x
′d,学习者答题正确与否标识记为y
′d,将待回答的下一道题目的嵌入向量记为将以上信息输入至步骤s104训练完成的认知状态预测模型,得到该学习
者答对下一道题目的预测概率。
[0133]
为了更好地说明本发明的技术效果,采用具体实例对本发明进行实验验证。本发明采用三个公开数据集:assistments2009、assistments2012和ednet,并选用深度知识追踪(dkt)模型作为对比方法,采用准确率(accuracy,acc)和曲线下面积(area under the curve,auc)作为评价指标对技术效果进行评价。本次实验验证中,本发明分为采用常规注意力机制和低功耗注意力机制两种实现方式。表1是本发明和两种对比方法在3个公开数据集上的评价指标对比表。
[0134][0135]
表1
[0136]
图5是本实施例本发明和对比方法的知识追踪性能对比图。图5中“本发明(normal)”表示采用常规注意力机制,“本发明(lite)”表示采用低功耗注意力机制,“本发明(normal)”和“本发明(lite)”的auc曲线几乎重叠。如表1和图5所示,本发明在三个公开数据集上的性能在3个数据集上的auc和acc值显著优于dkt模型,特别是在assistments2009数据集上提升值最大,auc值相比dkt方法提升到了0.855,acc值相比dkt提升到了0.831。
[0137]
图6是本实施例中本发明和对比方法在assis09数据集上的训练时间对比图。如图6所示,在同一数据集下,dkt方法的训练时间为29.83秒/轮次,本发明采用常规注意力机制为75.36秒/轮次,而低功耗注意力机制下降为33.91秒/轮次,因此本发明采用低功耗注意力机制时与经典的dkt方法训练时长接近,相较于采用常规注意力机制时在保持预测精度的同时显著降低了计算开销。
[0138]
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
技术特征:
1.一种融合图嵌入和注意力机制的知识追踪方法,其特征在于,包括如下步骤:s1:通过在线学习系统后台获取若干条答题记录,从中提取出题目信息集合技能点信息集合记题目数量为n
x
、技能点数量为n
s
,对每个题目和技能点进行编码,得到m-1维编码向量,m的值根据实际需要确定;提取每条答题记录的信息,包括题目编码、技能点编码、学习者编号、表示学习者答题是否正确的学习者答题标识,当学习者回答正确,学习者答题标识为1,否则为0;根据答题记录为每位学习者生成历史行为记录集合,每条记录包含该学习者回答的题目编号、答题标识和题目对应的技能者编号集合;s2:将n
x
个题目和n
s
个技能点作为节点,当某个题目和某个技能点在同一答题记录中出现,则在对应节点生成边,从而生成题目和技能点的关联结构图g,为每个节点生成初始向量,然后进行图嵌入得到每个题目节点和技能点节点的嵌入向量,嵌入向量的维度为m,从而得到题目特征矩阵和技能点特征矩阵s3:构建认知状态预测模型,包括多头注意力模块,点积模块和sigmoid模块,其中:多头注意力模块用于采用多头注意力机制,从学习者的d条历史答题纪录提取出大小为m
×
m的知识状态矩阵w并发送给点积模块,其中多头注意力机制中查询为学习者的d条历史答题纪录中第d条历史答题纪录中题目嵌入向量x
d
,键为学习者的d条历史答题纪录中第d条历史答题纪录中技能点的嵌入向量s
d
,s
d
表示第d条历史答题记录中题目所涉及技能点嵌入向量的平均向量,值为d条历史答题纪录中第d条历史答题纪录中的答题向量e
d
,e
d
表示第d条历史答题记录中题目的编码向量和学习者答题标识所拼接得到的答题向量;点积模块用于将待预测的下一道题目的嵌入向量和知识状态矩阵w进入点积计算,得到特征矩阵并发送至sigmoid模块。sigmoid模块用于采用sigmoid非线性激活函数对特征矩阵进行处理,得到学习者答对待预测题目的概率s4:通过在线学习系统后台获取不同学习者的若干条答题记录,然后划分为长度为d+1的答题记录序列;对于每个答题记录序列,得到每条答题记录中题目的嵌入向量x
d
和学习者答题标识y
d
,将d+1个嵌入向量和前d个学习者答题正确标识y
d
作为输入,将第d+1个答题标识作为期望输出,对认知状态预测模型进行训练;s5:对于需要进行知识追踪的学习者,获取其最近d道题目的答题记录,将每条答题记录中题目的嵌入向量记为x
′
d
,学习者答题正确与否标识记为y
′
d
,将待回答的下一道题目的嵌入向量记为将以上信息输入至步骤s4训练完成的认知状态预测模型,得到该学习者答对下一道题目的预测概率。2.根据权利要求1所述的知识追踪方法,其特征在于,所述步骤s2中图嵌入所采用的损失函数loss的计算公式如下:loss=(1-α)*(l1(x,s)+l2(x)+l3(s))+(α)*l4(x,s,θ)其中,l1(x,s)表示题目和技能点的关联性损失函数,计算方法如下:对于第i个题目和第j个技能点,i∈{1,2,
…
,n
x
},j∈{1,2,
…
,n
s
},记第i个题目的当前
特征向量为x
i
,记第j个题目的当前特征向量为s
j
,j=1,2,
…
,n
s
,如果第i个题目和第j个技能点在图g中存在连接边,则令关联系数r
ij
=1,否则令关联系数r
ij
=0;采用如下公式计算第i个题目和第j个技能点之间的局部邻近度第i个题目和第j个技能点之间的局部邻近度其中,σ()表示sigmoid非线性激活函数;然后采用如下公式计算得到题目和技能点之间的关联性损失函数l1(x,s):l2(x)表示题目相似度的交叉熵损失函数,其计算方法如下:其中,r
ii
′
x
表示第i个题目和第i
′
个题目之间真实的关联关系,如果第i个题目和第i
′
个题目都是同一个技能点节点的邻居节点,则r
ii
′
x
=1,否则r
ii
′
x
=0,表示第i个题目和第i
′
个题目之间的相关性估计值,l3(s)表示技能点相似度的交叉熵损失函数,其计算方法如下:其中,r
jj
′
s
表示第j个技能点和第j
′
个技能点之间真实的关联关系,如果第j个技能点和第j
′
个技能点都是同一个题目节点的邻居节点,则r
jj
′
s
=1,否则r
jj
′
s
=0,表示技能点之间的相关性估计值,l4(q,s)表示题目难度损失函数,其计算方法如下:对于第i个题目,根据步骤s1收集的答题记录统计得到该题目的正确率u
i
,然后采用预设的非线性激活函数将正确率映射为难度属性特征c
i
=w
t
u
i
+b,w、b分别表示非线性激活函数的权重和偏置项;采用leakyrelu作为激活函数c
i
进行处理,得到正确率估计值进行处理,得到正确率估计值其中,leak为常数项;然后采用如下公式计算题目的难度损失函数l4(q,s):其中,表示表示非线性激活层的权重w和偏置项b构成的向量,||||2表示求取二范数,λ是用来控制经验误差项与正则化项之间关系的系数。3.根据权利要求1所述的知识追踪方法,其特征在于,所述步骤s3中多头注意力模块包括线性变换模块、注意力计算层、拼接层和全连接层,其中:线性变换模块包括h组线性层,h的值应该实际需要确定,每组线性层包括第一线性层、
第二线性层和第三线性层,用于分别对查询q
d
、键k
d
、值v
d
进行线性变换,然后将线性变换后的查询矩阵、键矩阵、值矩阵发送给注意力计算层,第h组线性层中:第一线性层用于对输入的查询q
d
进行线性计算,得到查询矩阵q
d,h
=linear(q
d
)=q
d
w
q,h
并发送给注意力计算层,其中表示查询的第h个权重矩阵;第二线性层用于对输入的键k
d
进行线性计算,得到键矩阵k
d,h
=linear(k
d
)=k
d
w
k,h
并发送至注意力计算层,其中表示键的第h个权重矩阵;第三线性层用于对输入的值v
d
进行线性计算,得到值矩阵v
d,h
=linear(k
d
)=k
d
w
k,h
并发送至注意力计算层,其中表示键的第h个权重矩阵;注意力计算层用于分别采用注意力机制对接收的h组查询矩阵q
d,h
、键矩阵k
d,h
和值矩阵v
d,h
进行计算,得到对应的注意力矩阵head
h
=attention(q
d,h
,k
d,h
,v
d,h
),然后发送给拼接层;拼接层用于对h个注意力矩阵head
h
进行拼接,得到多头注意力矩阵multi_head(q,k,v)=concat(head1,...,head
h
)w
o
,其中w
o
是待训练的参数矩阵,然后将多头注意力矩阵multi_head(q,k,v)发送至全连接层;全连接层用于对多头注意力矩阵multi_head(q,k,v)进行降维处理,得到大小为k
×
k的知识状态矩阵w。4.根据权利要求1所述的知识追踪方法,其特征在于,所述注意力计算层的计算方法如下:首先对查询q
d,h
和键k
d,h
进行二制量化操作,具体方法为:记待进行二制量化操作的矩阵为f,从矩阵f中随机抽取m个子矩阵作为支持样本,γ表示预设的子矩阵大小,将子矩阵任意组合得到m
×
(m-1)个子矩阵对(f
m
,f
m
′
),m,m
′
=1,2,
…
,m且m≠m
′
;然后使用核函数κ(f
m
,f
m
′
):学习一组哈希函数映射h:λ表示哈希函数的数量;然后进行哈希函数映射得到:上式中,κ()表示哈希核函数,表示权重矩阵,用于对核函数进行归一化处理,且归一化后的核函数均值为0,g:是由定义的映射,h(f
m
)即为子矩阵f
m
通过哈希函数映射后的向量;记查询q
d,h
抽取得到的子矩阵为(q
d,h
)
m
,哈希函数映射后的向量为h((q
d,h
)
m
),键k
d,h
取得到的子矩阵为(k
d,h
)
m
,哈希函数映射后的向量为h((k
d,h
)
m
);对于子矩阵对(q
d,h
)
m
,(k
d,h
)
m
′
),m,m
′
=1,2,
…
,m,将对应的向量h((q
d,h
)
m
)和h((k
d,h
)
m
′
)的距离作为相似度,选择
前β个相似度最大的子矩阵对构成集合选择前β个相似度最小的子矩阵对构成集合β的值根据实际需要设置;然后采用如下公式计算对应的注意力衰减标签y
d,h
((q
d,h
)
m
,(k
d,h
)
m
′
)):从而得到大小为m
×
m的注意力衰减标签矩阵y
d,h
;采用如下公式计算得到注意力矩阵head
h
:5.根据权利要求1所述的知识追踪方法,其特征在于,所述步骤s4中认知状态预测模型训练的损失函数采用交叉熵损失函数。
技术总结
本发明公开了一种融合图嵌入和注意力的知识追踪方法,通过在线学习系统后台获取若干条答题记录,构建得到题目和技能点的关联结构图,进行图嵌入得到每个题目节点和技能点节点的嵌入向量,构建包括多头注意力模块,点积模块和Sigmoid模块的认知状态预测模型,通过在线学习系统后台获取不同学习者的若干条答题记录,对认知状态预测模型进行训练,对于需要进行知识追踪的学习者,将其历史答题记录的信息输入训练好的认知状态预测模型中,得到该学习者答对下一道题目的预测概率。本发明利用图结构表达每个题目和技能点的关联关系,并将题目难易程度编码为属性信息一并作为认知状态预测的依据,基于自注意力机制进行认知状态预测,提高知识追踪的准确率。提高知识追踪的准确率。
技术研发人员:屠静 王亚 赵策
受保护的技术使用者:卓世科技(海南)有限公司
技术研发日:2023.04.27
技术公布日:2023/8/21
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种线路故障指示器安装工具的制作方法 下一篇:灯条组件及其制作方法与流程
