赞
踩
知识追踪是基于学生行为序列进行建模,预测学生对知识的掌握程度。知识追踪是构建自适应教育系统的核心和关键。在自适应的教育系统中,无论是做精准推送,学生学习的路径规划或知识图谱的构建,第一步都是能够精准预测学生对知识的掌握程度。
知识追踪问题可以描述为: 给定一学生的观测序列
x
0
,
…
…
,
x
t
x _ { 0 } , \ldots \ldots , x _ { t }
x0,……,xt预测下次表现
x
t
+
1
x_{t+1}
xt+1,通常
x
t
=
{
q
t
,
a
t
}
\mathbf { x } _ { t } = \left\{ q _ { t } , a _ { t } \right\}
xt={qt,at},其中
q
t
q _ { t }
qt代表回答的问题成分(如对应的知识点),
a
t
a _ { t }
at代表对应的回答是否正确,通常
a
t
=
{
0
,
1
}
a _ { t }=\left\{0,1\right\}
at={0,1}。 下图描述了一个学生在八年级数学中的知识追踪结果可视化展示。
传统的知识追踪是基于一阶马尔可夫模型,如贝叶斯知识追踪(Bayesian Knowledge Tracing),2015年 Chris Piech 等人提出利用深度学习来处理知识追踪的任务,之后引发了学者们对利用深度学习来处理知识追踪任务对不断探讨,下面依次介绍相关论文核心内容及思考。
循环神经网络(RNN)是一种时间序列的模型,天然具有高维连续的隐状态表示的特征,RNN能够利用早期的信息进行预测,因此在2015年 Chris Piech 将RNN应用于知识追踪领域,并取得了较好的结果。
文章中,作者采用了传统的RNN模型和其变种LSTM,其输入数据为经过编码的 q t q _ { t } qt,输出为 a t a _ { t } at。对于输入的编码方式有两种:
模型输出
y
t
y _ { t }
yt 长度为M,对应描述了每一个知识成分的掌握程度(即对应知识成分所对应题目的答对概率),模型的核心为使用前
t
t
t时刻的学生做题序列预测
t
+
1
t+1
t+1时刻的知识成分的掌握情况,即:
P
(
y
t
+
1
∣
x
t
,
…
…
,
x
t
)
P(y_{t+1}|x_{t} , \ldots \ldots , x _ { t })
P(yt+1∣xt,……,xt)。
模型的目标函数是观测序列的非负对数似然函数,假设
δ
(
q
t
+
1
)
\delta \left( q _ { t + 1 } \right)
δ(qt+1)为
t
+
1
t+1
t+1时刻的编码输入,
l
l
l为二进制交叉上函数,目标函数如下:
2016年Xiaolu Xiong等人对DKT和PFA(Performance Factor Analysis),BKT(Bayesian Knowledge Tracing)模型进行了比较,对DKT模型能碾压其他两种模型的结果进行了怀疑并加以论证,进一步讨论了原论文能够得出上述结果的原因,对进一步使用DKT模型提供了参考。
文章中指出,对于DKT文章中在ASSISTments数据集上取得好的结果的原因进行了分析,得到以下三个原因来说明为什么DKT能够取得碾压BKT的效果:
作者将上述问题数据依次剔除,形成多个数据集,并采用ACU和
r
2
r ^ { 2 }
r2作指标,对DKT,PFA,BKT模型进行了对比,结果表明DKT相比BKT和PFA没有碾压式的超越但是的确会比其他模型结果要好。
文章中提及,当遇到多知识成分的题目时,使用联合知识成分作为新的知识成分的方式比重复利用做题记录的方式结果要差很多,这也是在我们实际使用DKT模型中需要注意的。
Chun-Kit Yeung等人在2018年6月发表论文中指出DKT模型现存的缺点,即对输入序列存在重构问题和预测结果的波动性,进而论文提出了改善上述问题的方法:增加对应的正则项,得到DKT+(增强的DKT模型)。
如上图所示,纵轴
S
i
S _ { i }
Si表示知识成分,横轴为学生在各个知识成分上的答题情况。
问题1对应的是在
6
t
h
6 ^ { t h }
6thstep,
S
45
S _ { 45 }
S45的评估结果相比前一时刻是增加了的即使当前的输入是
S
45
S _ { 45 }
S45做错了的。
问题2对应为在上述图描述的学习过程中,
S
32
,
S
33
,
S
45
S _ { 32 } , S _ { 33 } , S _ { 45 }
S32,S33,S45和
S
55
S _ { 55 }
S55预测做对的概率随着
S
32
,
S
33
S _ { 32 } , S _ { 33 }
S32,S33的学习有着非常大的波动,这和我们实际情况是不相符的,我们总是期望知识成分的变化是随着时间缓慢变化的,而不是在掌握和没掌握之间跳跃。
对于问题1,作者认为出现这种情况是由于,在DKT模型采用的损失函数中并没有考虑到时间t时刻的输入值,只是考虑了t时刻的输出值和t+1时刻的输入值。为了解决上述问题,作者在损失函数中引入正则项,并在正则项中引入了时间t时刻的输入值,正则项r如下:
对于问题2,作者认为可能是由于RNN的隐层表示问题,RNN的隐含层 h t \mathbf { h } _ { t } ht依赖于前一隐含层的输出 h t − 1 \mathbf { h } _ { t -1} ht−1和当前输入 x t \mathbf { x } _ { t } xt,隐含层表示了潜在的学生知识掌握程度,但是很难说清隐含层的每个状态是如何影响对知识成分的预测。所以简答起见,直接对输出结果进行正则约束(L1,L2正则),使预测结果能够平滑输出,所加正则项如下:
Shirly Montero 等人在2018EDM上发表的paper,通过对比DKT和BKT的不同,来分析得到为何DKT能够获得比较好的结果的原因,论文从三个方面进行了比较:1)模型规模上,DKT是一个具有多自由参数的神经网络模型,而BKT是一个概率模型,拥有有限的自由参数。2)DKT对一个领域内所有skill建模,而BKT是根据skill构造模型。3)DKT是多skill的交叉输入,而BKT是按照skill进行拆分的。最终得到的结论是1),3)是DKT取得好的效果的关键。
为验证,通过如下方式区分DKT和BKT的不同模型:
基于上述不同,作者分别采用了四种模型在三种数据集上做了验证,来证明是哪些特征使得DKT拥有比较好的效果,结果如下:
上述结果中BKT-SM-SS对应于标准的BKT模型,DKT-SM-SS是对不同对skill采用不同对model建模,对应的输入也是当前skill 的序列。DKT-CM-SS使用同一个model对所有skill做预测,区别于标准的DKT是输入是按照skill进行分割的。DKT-CM-CS则对应于标准的DKT模型。
通过上述结果我们可以得到:
该模型是Chun-Kit Yeung等人在参加2017 ASSISTments Data Mining 竞赛中使用的方案,该竞赛是使用中学的学生行为预测高中/大学的结果。本文章在DKT和DKT+的基础上,使用了其他学生相关的综合特征,实验结果表明使用了其他特征的效果要比基础模型好。该文章为我们提供了引入其他学生行为特征的方法。
本文提出的模型主要思想是利用DKT+学习序列数据,得到
X
K
T
\mathbf { X }_{ K T}
XKT代表学生的最新的知识状态,然后结合学生其他特征
X
S
P
\mathbf { X }_{ SP}
XSP得到feature set
x
f
=
[
x
S
P
,
x
K
T
]
\mathbf { x } _ { f } = \left[ \mathbf { x } _ { S P } , \mathbf { x } _ { K T } \right]
xf=[xSP,xKT]送入机器学习模型(如GBDT, LR,LDA, SVM等)得到最终的预测结果。
上述模型的思想比较简单,可以看作集成模型Stacking的一种方式,整个模型的框架如下:
Penghe Chen等人在使用DKT时考虑到数据的稀疏性(skill空间比较大,学生做题比较有限),为解决由于数据稀疏性带来的模型评估不准确,提出了将知识结构的信息纳入模型来解决上述问题,具体是指考虑来知识的前后置关系。
核心观点在于如果
K
1
K_1
K1是
K
2
K_2
K2的前置,则
K
2
K_2
K2的掌握程度要小于等于
K
1
K_1
K1,即后置的掌握程度要小于等于前置的掌握程度。
具体过程如下:
如果
K
1
K_1
K1是
K
2
K_2
K2的前置,则:
上述知识结构上的信息体现在model中是通过修改损失函数的方式实现的,具体损失函数如下:
下面分两部分来解释上面的loss:
最终实验结果表明,加入知识结构信息的model比原始DKT结果要好,具体详见paper。
(PS: 笔者在本公司的数据集上验证并没有得到提升?)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。