写在前面:
虽然这篇文章年限较久,但其经典的算法很有借鉴意义,它解决了RNN一直存在的长期依赖的问题。
1 摘要
知识追踪 (KT) 是一项在学生参与一系列学习活动时,就一个或多个概念追踪他们不断发展的知识状态的任务。KT的一个重要目的是个性化练习序列,以帮助学生有效地学习知识概念。然而,现有的方法,例如贝叶斯知识追踪和深度知识追踪,要么分别为每个预定义概念建模知识状态,要么无法准确指出学生擅长或不熟悉哪些概念。为了解决这些问题,这项工作引入了一种称为动态键值记忆网络(DKVMN)的新模型,该模型可以利用基础概念之间的关系并直接输出学生对每个概念的掌握程度。与促进单个记忆矩阵或两个静态记忆矩阵的标准记忆增强神经网络不同,我们的模型有一个称为 key 的静态矩阵,用于存储知识概念,另一个称为 value 的动态矩阵,用于存储和更新相应的掌握水平概念。实验表明,我们的模型在一系列 KT 数据集中始终优于最先进的模型。此外,DKVMN 模型可以自动发现通常由人工注释执行的练习的基本概念,并描绘学生不断变化的知识状态。
2 引言
现有的方法,如贝叶斯知识追踪 (BKT) 和深度知识追踪 (DKT) [以特定于概念的方式或在一个汇总的隐藏向量中对学生的知识状态进行建模,如图 1 所示。在 BKT 中,学生的知识状态 s t s_t st被分析为不同的概念状态 s t i {s_t^i} sti,BKT 分别对每个概念状态进行建模。 BKT 将概念状态假设为已知和未知的二进制潜在变量,并使用隐马尔可夫模型更新二元概念状态的后验分布。因此,BKT 无法捕捉到不同概念之间的关系。此外,为了使贝叶斯推理易于处理,BKT 使用离散随机变量和简单的转换模型来描述每个概念状态的演变。因此,虽然 BKT 可以输出学生对一些预定义概念的掌握程度,但它缺乏提取未定义概念和对复杂概念状态转换进行建模的能力。
![](https://raw.githubusercontent.com/zqlaicl/pic/main/img/202209060931398.png)
图一:BKT、DKT 和我们的模型之间的模型差异。 BKT 是特定于概念的。 DKT 使用汇总的隐藏向量对知识状态进行建模。我们的模型同时维护每个概念的概念状态,所有概念状态构成学生的知识状态。
除了从贝叶斯角度解决问题外,一种名为 DKT 的深度学习方法利用了一种称为长短期记忆 (LSTM) 的循环神经网络 (RNN) 变体。 LSTM 假设底层知识状态 S 的高维和连续表示。DKT 的非线性输入到状态和状态到状态转换比 BKT 具有更强的表示能力。不需要人工标注的注释。然而,DKT 将学生对所有概念的知识状态汇总在一个隐藏状态,这使得很难追踪学生对某个概念的掌握程度,并难以确定学生擅长或不熟悉哪些概念 。
目前的工作引入了一种称为动态键值记忆网络 (DKVMN) 的新模型,它结合了两个方法的优点:利用概念之间关系的能力和跟踪每个概念状态的能力。 DKVMN 模型可以自动学习输入练习和底层概念之间的相关性,并为每个概念维护一个概念状态。在每个时间戳,只会更新相关的概念状态。例如,在图 1 中,当一个新的练习 qt 出现时,模型发现 qt 需要应用概念 c j c^j cj和 c k c^k ck 。然后我们读取相应的概念状态 s t − 1 j s_{t-1}^j st−1j和 s t − 1 k s_{t-1}^k st−1k来预测学生是否会正确回答练习。学生完成练习后,我们的模型将更新这两个概念状态。所有的概念状态构成了一个学生的知识状态 S。
3 模型
3.1 用于知识追踪的记忆增强神经网络(MANN)
为了解决 KT 问题,MANN 的外部记忆矩阵被视为学生的知识状态。模型的整体结构如图 2a 所示。内存,表示为 Mt,是一个 N × M 矩阵,其中 N 是内存位置的数量,M 是每个位置的向量大小。在每个时间戳 t 处,MANN 的输入是 ( q t , r t ) (q_t,r_t) (qt,rt)的联合嵌入 v t v_t vt,其中每个 qt 来自一组 Q 个不同的练习标签,而 rt 是一个二进制值,指示学生是否正确回答了练习。嵌入向量 vt 用于计算读取权重 w t r w_t^r wtr和写入权重 w t w w_t^w wtw
在我们的实现中,我们选择余弦相似度注意机制来计算 w t r w_t^r wtr 和 LRUA 机制 来计算 w t w w_t^w wtw 。这两种注意力机制的详细信息显示在文献附录中。 MANN 的流程是,当学生以相同的响应回答已存储在内存中的练习时,vt 将被写入先前使用的内存位置,当新的练习到达或学生得到不同的响应时,vt将被写入最近最少使用的内存位置。
在读取过程中,读取的内容 rt 是所有内存槽的加权和,读取权重
w
t
r
w_t^r
wtr :
r
t
=
∑
i
=
1
N
w
t
r
(
i
)
M
t
(
i
)
(1)
r_t=\sum_{i=1}^{N}w_t^r(i)M_t(i)\tag{1}
rt=i=1∑Nwtr(i)Mt(i)(1)
由 rt 计算得到的输出
p
t
∈
R
Q
{p_t\in \mathbb{R}^Q}
pt∈RQ表示学生在下一个时间戳中正确回答每个练习的概率
![](https://raw.githubusercontent.com/zqlaicl/pic/main/img/202209060943012.png)
图 2:在这两种架构中,模型仅在时间戳 t 处绘制,其中紫色组件描述读取过程,绿色组件描述写入过程。 DKVMN 模型中的蓝色分量表示计算相应权重的注意过程。
3.2 动态简直记忆网络(DKVMN)
与 MANN 不同,在每个时间戳,DKVMN 取一个离散的运动标签 qt,输出响应概率 p ( r t ∣ q t ) p(r_t|q_t) p(rt∣qt),然后用运动和响应元组 (qt, rt) 更新内存。在这里,qt 也来自具有 Q 个不同运动标签的集合,而 rt 是一个二进制值。我们进一步假设练习中有 N 个潜在概念 {c1, c2, …, cN }。这些概念存储在关键矩阵 M k M_k Mk (大小为 N × d k N\times d_k N×dk)中,学生对每个概念的掌握程度,即概念状态 s t 1 , s t 2 , … , s t N {s_t^1,s_t^2,\dots,s_t^N} st1,st2,…,stN 存储在值矩阵 Mvt (大小为 N × d v N\times d_v N×dv),随时间变化。
DKVMN 使用从输入练习和关键矩阵计算的相关权重,通过读取和写入值矩阵来跟踪学生的知识。模型详细信息将在以下部分中详细说明。
3.2.1 计算相关权重
输入练习 qt 首先乘以嵌入矩阵 A(大小为
Q
×
d
k
Q\times d_k
Q×dk),得到维度为
d
k
d_k
dk 的连续嵌入向量
k
t
k_t
kt。通过对
k
t
k_t
kt 和每个关键槽
M
k
(
i
)
M^k(i)
Mk(i) 之间的内积进行 softmax 激活,进一步计算相关权重:
w
t
(
i
)
=
S
o
f
t
m
a
x
(
k
t
T
M
k
(
i
)
)
(2)
w_t(i)=Softmax(k_t^TM^k(i))\tag{2}
wt(i)=Softmax(ktTMk(i))(2)
读写过程都将使用这个权重向量
w
t
w_t
wt,它代表了习题与每个潜在概念之间的相关性。
3.2.2 读取过程
当一个练习
q
t
q_t
qt来临时,读取的内容
r
t
r_t
rt 通过使用
w
t
w_t
wt 的值矩阵中所有内存槽的加权和来检索:
r
t
=
∑
i
=
1
N
w
t
(
i
)
M
t
v
(
i
)
)
(3)
r_t=\sum_{i=1}^{N}w_t(i)M_t^v(i)\tag{3})
rt=i=1∑Nwt(i)Mtv(i))(3)
计算出的读入内容
r
t
r_t
rt 被视为学生对该练习的掌握程度的总结。
鉴于每个练习都有自己的难度,将读取的内容
r
t
r_t
rt 和嵌入的输入练习
k
t
k_t
kt 连接起来,然后通过一个带有 Tanh 激活的全连接层得到一个向量
f
t
f_t
ft ,其中包含学生的掌握水平和练习的先前难度:
f
t
=
T
a
n
h
(
W
1
T
[
r
t
,
k
t
]
+
b
1
)
(4)
f_t=Tanh(W_1^T[r_t,k_t]+b_1)\tag{4}
ft=Tanh(W1T[rt,kt]+b1)(4)
最后,
f
t
f_t
ft 通过另一个带有 Sigmoid 激活函数的全连接层来预测学生的表现:
p
t
=
S
i
g
m
o
i
d
(
W
2
T
f
t
+
b
2
)
(5)
p_t=Sigmoid(W_2^Tf_t+b_2)\tag{5}
pt=Sigmoid(W2Tft+b2)(5)
p_t是一个标量,表示正确回答 q_t 的概率。
3.2.3 写入过程
学生回答问题 qt 后,模型会根据学生回答的正确性更新值矩阵。 (qt, rt) 的联合嵌入将被写入内存的值部分,其相关权重 wt 与读取过程中使用的相关权重 wt 相同。
元组 (qt, rt) 嵌入一个大小为 2 Q × d v 2Q\times d_v 2Q×dv 的嵌入矩阵 B,以获得学生在完成此练习后的知识增长 vt。当将学生的知识增长写入值组件时,在添加新信息之前首先擦除记忆 ,这一步骤的灵感来自 LSTM 中的输入和遗忘门。
给定写入权重(这是我们模型中的相关权重 wt),从 vt 计算擦除向量 et:
e
t
=
S
i
g
m
o
i
d
(
E
T
v
t
+
b
e
)
(6)
e_t=Sigmoid(E^Tv_t+b_e)\tag{6}
et=Sigmoid(ETvt+be)(6)
其中变换矩阵 E 的形状为
d
v
×
d
v
d_v\times d_v
dv×dv,et 是一个列向量,其中 dv 个元素都位于 (0, 1) 范围内。来自前一个时间戳的值分量
M
t
−
1
v
(
i
)
M_{t-1}^v(i)
Mt−1v(i)的内存向量修改如下:
M
~
t
v
(
i
)
=
M
t
−
1
v
(
i
)
[
1
−
w
t
(
i
)
e
t
]
(7)
\tilde{M}_t^v(i)=M_{t-1}^v(i)[1-w_t(i)e_t]\tag{7}
M~tv(i)=Mt−1v(i)[1−wt(i)et](7)
其中 1 是所有值都为1的行向量。因此,仅当该位置的权重和擦除元素都为 1 时,存储位置的元素才被重置为零。如果权重或擦除信号为零,则存储器矢量保持不变。
擦除后,一个长度为 dv 的 增加向量 at 用于更新每个内存槽:
a
t
=
T
a
n
h
(
D
T
v
t
+
b
a
)
T
)
(8)
a_t=Tanh(D^Tv_t+b_a)^T\tag{8})
at=Tanh(DTvt+ba)T)(8)
其中变换矩阵 D 的形状为
d
v
×
d
v
d_v\times d_v
dv×dv,at 是一个行向量。值内存在时间步t 更新通过:
M
t
v
(
i
)
=
M
~
t
−
1
v
(
i
)
+
w
t
(
i
)
a
t
(9)
M_t^v(i)=\tilde{M}_{t-1}^v(i)+w_t(i)a_t\tag{9}
Mtv(i)=M~t−1v(i)+wt(i)at(9)
这种擦除后添加机制允许在学生的学习过程中忘记和加强概念状态。
4 实验
数据集:Synthetic-5, ASSISTments2009, ASSISTments2015, and Statics2011.
4.1 实验细节
使用“one-hot”输入向量将输入的运动数据呈现给神经网络。具体来说,如果总共存在 Q 个不同的练习,那么关键记忆部分的练习标签 qt 是一个长度 Q 向量,除了第 q t t h q_t^{th} qtth 个条目为 1 之外,其条目都为零。类似地,值矩阵分量的组合输入 x t = ( q t , r t ) x_t=(q_t,r_t) xt=(qt,rt)是长度为 2Q 的向量,其中条目 x t = q t + r t × Q x_t=q_t+r_t\times Q xt=qt+rt×Q为 1。
我们在实现中将 LSTM 用于 DKT。标准 MANN 是使用余弦相似度阅读注意机制和 LRUA 写作注意机制实现的。在所有实验中,使用具有动量和范数裁剪的随机梯度下降 [21] 来训练 DKT、MANN 和我们的 DKVMN。我们始终将动量设置为 0.9,将标准裁剪阈值设置为 50.0。鉴于输入序列的长度不同,所有序列的长度都设置为 200(对于长度为 50 的合成),并且使用空符号将短序列填充到 200 的固定大小。
在所有情况下,超参数都使用五重交叉验证进行了调整。使用 100 个时期中验证 AUC 最高的模型计算曲线下的测试面积 (AUC)。我们用不同的初始化σ重复每次训练五次,并报告平均测试 AUC 和标准偏差。
4.2 学生成绩预测
表2:DKVMN 与 DKT 在具有不同状态维数和内存大小 N 的四个数据集上的比较。
“s. dim”,“m. size”和“p. num”分别表示状态维度、内存大小(即概念的数量N)和参数的数量。我们为 DKT 和 DKVMN 选择 10、50、100 和 200 的状态维度。然后对于 DKVMN,我们将每个状态维度的内存大小更改为 1、2、5、10、20、50 和 100,并报告具有相应内存大小的最佳测试 AUC。我们同样比较了两个模型的参数数量。
总而言之,DKVMN 在所有数据集上的表现都优于其他方法,尤其是在具有大量不同练习的 Statics2011 数据集上。这一结果表明,当练习数量非常大时,我们的 DKVMN 可以很好地模拟学生的知识。
图三:DKVMN 和 DKT 在所有数据集上的验证 AUC 和训练 AUC。蓝线代表DKT模型,红线代表我们的DKVMN模型。虚线代表训练 AUC,带有上三角形的线代表验证 AUC。
此外,DKT 模型存在严重的过拟合,而我们的 DKVMN 模型没有遇到这样的问题。如图 3 所示,DKVMN 的训练 AUC 和验证 AUC 之间不存在巨大差距,并且 DKVMN 的验证 AUC 平滑增加。然而,随着 epoch 的进行,DKT 的训练 AUC 不断增加,而 DKT 的验证 AUC 仅在前几个 epoch 增加并开始下降。
4.3 知识状态预测
我们的 DKVMN 也可以用来描述学生不断变化的知识状态。描述知识状态,尤其是每个概念状态,有助于在线学习平台的用户。如果学生掌握了所有概念的概念状态,能够明确自己的优势和劣势,他们就会更有动力独立填补学习空白。在阅读过程中,可以通过以下步骤获得学生不断变化的知识状态。
首先,将value分量中的内容直接作为公式(3)中的读取内容rt,可以通过设置相关权重wt为[0,…,wi,…0]来访问,其中wi概念 c i c^i ci 等于 1。
然后,我们在公式(4)中屏蔽输入内容嵌入的权重,以忽略练习的信息:
f
t
=
T
a
n
h
(
[
W
1
r
,
0
]
T
[
r
t
,
m
t
]
+
b
1
)
(11)
f_t=Tanh([W_1^r,0]^T[r_t,m_t]+b_1)\tag{11}
ft=Tanh([W1r,0]T[rt,mt]+b1)(11)
其中 W1 分为两部分
w
1
r
w_1^r
w1r 和
W
1
m
W_1^m
W1m ,并令
W
1
m
W_1^m
W1m = 0。
最后,我们计算公式(5)中的标量 p 以作为概念(概念状态)的预测掌握水平。
图6:学生在 5 个概念上不断变化的知识状态的示例。概念在左侧以不同的颜色标记。回答 50 个习题后,学生掌握了第二、第三和第四个概念,但未能理解第五个概念。
图 6 显示了一个描述学生五种不断变化的概念状态的示例。第一列代表学生回答任何练习之前每个概念的初始状态,这种状态因概念而异。由于我们的模型能够为每个练习发现概念,每次学生回答练习时,发现的概念的概念状态都会增加或减少。例如,当学生正确回答前三个练习时,第二个和第五个概念的概念状态会增加;当学生第四题答错时,第三个概念的概念状态下降。在回答了 50 个习题后,表明学生已经掌握了第二、第三和第四个概念,但未能理解第五个概念。
每个练习发现概念,每次学生回答练习时,发现的概念的概念状态都会增加或减少。例如,当学生正确回答前三个练习时,第二个和第五个概念的概念状态会增加;当学生第四题答错时,第三个概念的概念状态下降。在回答了 50 个习题后,表明学生已经掌握了第二、第三和第四个概念,但未能理解第五个概念。