随着在线教育的快速发展,知识追踪(KT)已经成为一个基本问题,它可以追踪学生的知识状况并预测他们在新问题上的表现。在线教育系统中的问题往往很多,而且总是与较少的技能相关。然而,以前的文献未能将问题信息与高阶问题-技能关联一起涉及,这主要是受到数据稀少和多技能问题的限制。从模型的角度来看,以前的模型很难捕捉到学生练习历史的长期依赖性,也不能以一致的方式建立学生-问题和学生-技能之间的相互作用。在本文中,我们提出了一个基于图的知识追踪互动模型(GIKT)来解决上述问题。更具体地说,GIKT利用图卷积网络(GCN),通过嵌入传播将问题与技能的关联性大大纳入其中。此外,考虑到相关问题通常分散在整个练习历史中,而问题和技能只是知识的不同实例,GIKT将学生对问题的掌握程度概括为学生的当前状态、学生的历史相关练习、目标问题和相关技能之间的相互作用。在三个数据集上的实验表明,GIKT实现了新的最先进的性能,绝对AUC至少提高了1%。
在MOOCs或智能辅导系统等在线学习平台中,知识追踪(KT)[6]是一项基本任务,其目的是追踪学生的知识状态。在口语化的层面上,KT解决的问题是根据学生以前的学习历史预测他们是否能正确回答新问题。KT任务已被广泛研究,并提出了各种方法来处理它。
现有的KT方法[21,35,2]通常根据目标问题所对应的技能而不是问题本身建立预测模型。在KT任务中,存在几个技能和许多问题,其中一个技能与许多问题相关,一个问题可能对应一个以上的技能,这可以用关系图表示,如图1所示的例子。由于假设技能的掌握可以在一定程度上重新确定学生是否能够正确回答相关的问题,所以像以前的KT工作一样,根据技能进行预测是一个可行的选择。
尽管这些纯粹的基于技能的KT方法已经取得了经验上的成功,但问题的特点被忽略了,这可能会导致成绩下降。例如,在图1中,尽管两个问题q2和q3有相同的技能,但它们不同的困难可能会导致不同的正确回答概率。为此,以前的一些工作[14]利用问题特征作为技能输入的补充。然而,由于问题的数量通常很大,而许多学生只尝试一小部分问题,大多数问题只由少数学生回答,导致数据稀少的问题[28]。此外,对于那些共享部分共同技能的问题(如q1和q4),简单地增加问题特征会失去潜在的问题间和技能间信息。基于这些考虑,利用问题和技能之间的高阶信息很重要。
在本文中,我们首先研究如何有效地提取问题-技能关系图中包含的高阶关系信息。受图神经网络(GNN)[26,13,10]通过聚合邻居信息提取图表示的巨大力量的启发,我们利用图卷积网络(GCN)从高阶关系中学习问题和技能的嵌入。一旦问题和技能嵌入被聚合,我们可以直接将问题嵌入与相应的答案嵌入一起作为KT模型的输入。
除了输入特征外,KT的另一个关键问题是模型框架。深度学习的最新进展模拟了一系列富有成效的深度KT工作,它们利用深度神经网络来连续捕捉学生的知识状态变化。两个有代表性的深度KT模型是深度知识追踪(DKT)[21]和动态关键值记忆网络(DKVMN)[35],它们分别利用循环神经网络(RNN)[31]和记忆增强神经网络(MANN)来解决KT。然而,它们无法捕捉到问题序列中的长期依赖关系[1],这是众所周知的。为了处理这个问题,序列键值记忆网络(SKVMN)[1]提出了一个hop-LSTM架构,将类似练习的隐藏状态聚合成一个新的状态,而带有注意力机制的练习增强型循环神经网络(EERNNA)[25]使用注意力机制对所有历史状态进行加权求和聚合。
我们没有直接将相关的历史信息汇总到一个新的状态中进行预测,而是进一步提高了对长期依赖性的把握,更好地模拟了学生的掌握程度。受SKVMN和EERNNA的启发,我们引入了一个重述模块,根据注意力权重选择几个最相关的隐藏练习,目的是为了减少噪音。考虑到对新问题及其相关技能的掌握程度,我们概括了交互模块,并将相关练习和当前的隐藏状态与聚合的问题嵌入和技能嵌入进行交互。
广义的交互模块可以更好地模拟学生对问题和技能的掌握程度。此外,关注机制被应用于每一个互动,以进行最终的预测,它自动加权所有互动的预测效用。
综上所述,在本文中,我们提出了一个端到端的深度框架,即基于图形的知识追踪互动(GIKT),用于知识追踪。我们的主要贡献总结如下。1)通过利用图卷积网络来聚合问题嵌入和技能嵌入,GIKT能够利用高阶问题-技能关系,从而缓解数据稀疏问题和多技能问题。2)通过引入复述模块和互动模块,我们的模型可以更好地模拟学生对新问题及其相关技能的掌握程度,并使之保持一致。3)从经验上看,我们在三个基准数据集上进行了广泛的实验,结果表明我们的GIKT大大超过了现有的基线。
现有的知识追踪方法大致可以分为两类:传统机器学习方法和深度学习方法。在本文中,我们主要关注的是深度KT方法。
传统的机器学习KT方法主要涉及两种类型。贝叶斯知识追踪(BKT)[6]和因子分析模型。BKT是一个隐藏的马尔科夫模型,它将每个技能视为一个二进制变量,并使用贝叶斯规则来更新状态。有几项工作扩展了虚构的BKT模型,将更多的信息纳入其中,如失误和猜测概率[2]、技能难度[19]和学生个性化[18,34]。另一方面,因子分析模型侧重于从历史数据中学习一般参数来进行预测。在因子分析模型中,项目反应理论(IRT)[8]为学生能力和问题难度建立了参数模型,绩效因子分析(PFA)[20]考虑了技能的正负反应数量,知识追踪机[27]利用因子化机器[24]将问题和用户的侧面信息编码到参数模型中。
最近,由于巨大的容量和有效的表征学习,深度神经网络已经被利用到KT文献中。深度知识追踪(DKT)[21]是第一个深度KT方法,它使用递归神经网络(RNN)来追踪学生的知识状态。动态键值记忆网络(DKVMN)[35]可以发现每个技能的基本概念并追踪每个概念的状态。在这两个模型的基础上,通过考虑更多的信息,如学生的遗忘行为[16]、多技能信息和专家标注的先决技能关系图[4]或学生的个性化[15],已经提出了一些方法。GKT[17]建立了一个技能关系图,并明确地学习它们的关系。然而,这些方法只使用技能作为输入,这导致了信息损失。
一些深度的KT方法在预测时考虑到了问题的特征。记忆网络的动态学生分类(DSCMN)[14]利用问题的难度来帮助区分与相同技能相关的问题。带有注意力机制的练习增强型循环神经网络(EERNNA)[25]利用问题的内容对问题嵌入进行编码,这样问题嵌入可以包含问题的特征信息,然而在现实中很难收集问题的内容。由于数据稀少的问题,DHKT[29]通过使用问题和技能之间的关系来增强DKT,从而得到问题表征,然而,这未能捕捉到问题间和技能间的关系。在本文中,我们使用GCN来提取问题-技能图中的高阶信息。
为了处理长期的依赖性问题,序列键值记忆网络(SKVMN)[1]使用了一个带有跳数的模态LSTM来提高捕捉练习序列中长期依赖性的能力。EERNNA[25]假设当前学生的知识状态是所有历史学生状态的加权总和,基于当前问题和历史问题之间的相关性。我们的方法与这两项工作的不同之处在于,他们将相关的隐藏状态汇总到一个新的状态中进行预测,而我们首先选择最有用的历史练习来减少当前状态中嘈杂的影响,然后我们进行配对互动进行预测。
近年来,图数据被广泛用于深度学习模型中。然而,传统的神经网络受制于图的复杂非欧几里得结构。在CNN的启发下,一些作品使用卷积方法处理图结构数据[13,7]。图卷积网络(GCNs)[13]被提议用于半监督的图分类,它基于自身及其邻居更新节点表征。这样一来,如果使用多个图卷积层,更新的节点表示就包含了邻居节点的属性和高阶邻居的信息。由于GCNs的巨大成功,一些变种被进一步提出用于图数据[26,10]。
随着图神经网络(GNNs)的发展,许多基于GNNs的应用出现在各个领域,如自然语言处理(NLP)[3,33],计算机视觉(CV)[22,9]和推荐系统[30,23]。
由于GNN有助于捕捉高阶信息,我们在GIKT模型中使用GCN,将技能和问题之间的关系提取到它们的表示中。据我们所知,我们的方法GIKT是第一个通过图神经网络建立问题-技能关系模型的工作。
Knowledge Tracing. 在知识追踪任务中,学生按顺序回答在线学习平台提供的一系列问题。在学生回答完每个问题后,会发出答案是否正确的反馈。这里我们把一个练习表示为 x i = ( q i , a i ) \bm{x}_i=(q_i,a_i) xi=(qi,ai),其中 q i q_i qi是问题ID, a i ∈ { 0 , 1 } a_i\in\left\{0,1\right\} ai∈{0,1}代表学生是否正确回答了 q i q_i qi。给定一个练习序列 X = { x 1 , x 2 , . . . , x t − 1 } \pmb{X} =\left\{\bm{x}_1,\bm{x}_2,...,\bm{x}_{t-1}\right\} XXX={x1,x2,...,xt−1}和新问题 q t q_t qt,KT的目标是预测学生正确回答的概率 p ( a t = 1 ∣ X , q t ) p(a_t=1|\pmb{X},q_t) p(at=1∣XXX,qt)。
Question-Skill Relation Graph. 每个问题 q i q_i qi对应一个或多个技能 { s 1 , . . . , s n i } \left\{s_1,...,s_{n_i}\right\} {s1,...,sni},一个技能 s j s_j sj通常与许多问题 { q 1 , . . . , q n j } \left\{q_1,...,q_{n_j}\right\} {q1,...,qnj}相关,其中 n i n_i ni和 n j n_j nj分别是与问题 q i q_i qi相关的技能数量和与技能 s j s_j sj相关的问题数量。这里我们把这些关系表示为问题-技能关系双方图 G \mathcal{G} G,表示为 { ( q , r q s , s ) ∣ q ∈ Q , s ∈ S } \left\{(q,r_{qs},s)|q\in\mathcal{Q},s\in\mathcal{S}\right\} {(q,rqs,s)∣q∈Q,s∈S},其中 Q \mathcal{Q} Q 和 S \mathcal{S} S分别对应于问题和技能集。如果问题 q q q与技能 s s s相关,则 r q s = 1 r_{qs}=1 rqs=1。
在本节中,我们将详细介绍我们的方法,整体框架如图2所示。我们首先利用GCN来学习聚集在问题-技能关系图上的问题和技能表征,并使用一个递归层来模拟知识状态的顺序变化。为了捕捉长期的依赖性和全面地利用有用的信息,我们设计了一个回顾模块,然后是一个交互模块来进行最终预测。
GIKT在时间步骤t的说明,其中 q t q_t qt是新问题。首先,我们使用GCN来聚合问题和技能嵌入。然后用一个递归神经网络来模拟连续的知识状态 h t h_t ht。在复述模块中,我们选择qt的最相关的隐藏练习,这对应于软选择和硬选择的实现。信息交互模块在学生当前状态、所选学生的历史练习、目标问题和相关技能之间进行配对交互,以预测 p t p_t pt。
我们的GIKT方法使用嵌入来表示问题、技能和答案。三个嵌入矩阵 E s ∈ R ∣ S ∣ × d \mathbf{E}_s\in\mathbb{R}^{|\mathcal{S}|\times d} Es∈R∣S∣×d, E q ∈ R ∣ Q ∣ × d \mathbf{E}_q\in\mathbb{R}^{|\mathcal{Q}|\times d} Eq∈R∣Q∣×d,
E a ∈ R 2 × d \mathbf{E}_a\in\mathbb{R}^{2 \times d} Ea∈R2×d被表示为查找操作,其中 d d d代表嵌入大小。 E s \mathbf{E}_s Es 或 E q \mathbf{E}_q Eq中的每一行都对应于一个技能或一个问题。 E a \mathbf{E}_a Ea中的两行分别代表错误的和正确的答案。对于矩阵中的第 i i i行向量,我们分别用 s i \mathbf{s}_i si, q i \mathbf{q}_i qi 和 a i \mathbf{a}_i ai来代表它们。
在我们的框架中,我们不对这些嵌入进行预训练,而是以端到端的方式通过优化最终目标来训练它们。
从训练的角度来看,问题数据的稀疏性给学习信息丰富的问题表征带来了巨大的挑战,尤其是对于那些训练实例相当有限的问题。从推理的角度来看,学生是否能正确回答一个新问题,取决于对其相关技能和问题特征的掌握程度。当他/她以前解决过类似的问题时,他/她更有可能正确回答新问题。在这个模型中,我们结合了问题-技能关系图 G \mathcal{G} G来解决稀疏性问题,以及利用先前的关联性来获得更好的问题表述。
考虑到问题-技能关系图是二方的,一个问题的第一跳邻居应该是其对应的技能,而第二跳邻居应该是分享相同技能的其他问题。为了提取高阶信息,我们利用图卷积网络(GCN)[13]将相关技能和问题编码为问题嵌入和技能嵌入。
图卷积网络堆叠了几个图卷积层来编码高阶邻居信息,在每个层中,节点的表示可以通过自身和邻居节点的嵌入来更新。将节点 i i i在图中的表示记为 x i \mathbf{x}_i xi( x i \mathbf{x}_i xi可以表示技能嵌入 s i \mathbf{s}_i si或问题嵌入 q i \mathbf{q}_i qi),其邻居节点的集合记为 N i \mathcal{N}_i Ni,那么第 l l l层GCN的公式可以表示为: x i l = σ ( 1 ∣ N i ∣ ∑ j ∈ N i ∪ { i } w l x j l − 1 + b l ) , \begin{aligned} \mathbf{x}^l_{i} = \sigma(\frac{1}{|\mathcal{N}_i|} \sum_{j\in \mathcal{N}_i\cup\left\{i\right\}} \mathbf{w}^l\mathbf{x}^{l-1}_j+\mathbf{b}^l), \end{aligned} xil=σ(∣Ni∣1j∈Ni∪{i}∑wlxjl−1+bl),其中 w l \mathbf{w}^l wl 和 b l \mathbf{b}^l bl是第 l l l个GCN层要学习的总权重和偏差, σ \sigma σ是ReLU等非线性变换。
经过GCN的嵌入传播,我们得到问题和技能的聚合嵌入。我们使用 q ~ \widetilde{\mathbf{q}} q 和 s ~ \widetilde{\mathbf{s}} s 来表示嵌入传播后的问题和技能表示。为了便于实现和更好的并行化,我们为每一个batch采样固定数量的问题邻居节点(即 n q n_q nq)和技能邻居节点(即 n s n_s ns)。在推理过程中,我们对每个例子运行多次(对不同的邻居进行采样),并对模型输出进行平均,以获得稳定的预测结果。
对于每个历史时间 t t t,我们将问题和答案嵌入连接起来,并通过非线性转换投射到 d d d维的练习表示中:
e t = ReLU ( W 1 ( [ q ~ t , a t ] ) + b 1 ) , \begin{aligned} \mathbf{e}_t = \text{ReLU}(\mathbf{W}_1([\widetilde{\mathbf{q}}_t,\mathbf{a}_t])+\mathbf{b}_1), \end{aligned} et=ReLU(W1([q t,at])+b1),其中我们用 [ , ] [,] [,]表示矢量连接。
不同的练习之间可能存在依赖关系,因此我们需要对整个练习过程进行建模,以捕捉学生的状态变化并了解练习之间的潜在关系。为了对学生做练习的顺序行为进行建模,我们使用LSTM[11]从输入的练习表征中学习学生状态。
i t = σ ( W i [ e t , h t − 1 , c t − 1 ] + b i ) , f t = σ ( W f [ e t , h t − 1 , c t − 1 ] + b f ) , o t = σ ( W o [ e t , h t − 1 , c t − 1 ] + b o ) , c t = f t c t − 1 + i t tanh ( W c [ e t , h t − 1 ] + b c ) , h t = o t tanh ( c t ) , \begin{aligned} \mathbf{i}_t & = \sigma(\mathbf{W}_i [\mathbf{e}_{t}, \mathbf{h}_{t-1}, \mathbf{c}_{t-1}] + \mathbf{b}_i), \\ \mathbf{f}_t & = \sigma(\mathbf{W}_f [\mathbf{e}_{t}, \mathbf{h}_{t-1}, \mathbf{c}_{t-1}] + \mathbf{b}_f), \\ \mathbf{o}_t & = \sigma(\mathbf{W}_o [\mathbf{e}_{t}, \mathbf{h}_{t-1}, \mathbf{c}_{t-1}] + \mathbf{b}_o), \\ \mathbf{c}_t &= \mathbf{f}_t \mathbf{c}_{t-1}+\mathbf{i}_t \tanh\left(\mathbf{W}_{c} [\mathbf{e}_{t},\mathbf{h}_{t-1}]+\mathbf{b}_c\right),\\ \mathbf{h}_{t} &=\mathbf{o}_t\tanh{\left(\mathbf{c}_t\right)}, \end{aligned} itftotctht=σ(Wi[et,ht−1,ct−1]+bi),=σ(Wf[et,ht−1,ct−1]+bf),=σ(Wo[et,ht−1,ct−1]+bo),=ftct−1+ittanh(Wc[et,ht−1]+bc),=ottanh(ct),其中 h t \mathbf{h}_{t} ht, c t \mathbf{c}_{t} ct, i t \mathbf{i}_t it, f t \mathbf{f}_t ft, o t \mathbf{o}_t ot分别代表隐藏状态、单元状态、输入门、遗忘门、输出门。值得一提的是,这一层对于捕捉粗粒度的依赖关系非常重要,比如技能之间的潜在关系,所以我们只是学习一个隐藏状态 h t ∈ R d \mathbf{h}_{t}\in\mathbb{R}^d ht∈Rd作为当前的学生状态,其中包含了技能的粗粒度掌握状态。
在学生的练习历史中,相关技能的问题很可能散落在漫长的历史中。从另一个角度看,连续的练习可能不遵循一个连贯的主题。这些现象给传统KT方法中的LSTM序列建模带来了挑战。(i) 众所周知,LSTM在很长的序列中很难捕捉到长期的依赖关系,这意味着当前的学生状态 h t \mathbf{h}_t ht可能会忘记与新的目标问题 q t q_t qt相关的历史练习。 (ii) 当前的学生状态 h t \mathbf{h}_t ht更多地考虑最近的练习,这可能包含新的目标问题 q t q_t qt的噪音信息。受这种行为的启发,我们建议选择相关的历史练习(问题-答案对)【我们尝试了其他的实现方式,如使用历史状态而不是历史练习,结果显示使用历史练习的效果更好,因为历史状态包含其他不相关的信息。】 { e i ∣ i ∈ [ 1 , … , t − 1 ] } \{\mathbf{e}_i | i \in [1, \dots, t-1]\} {ei∣i∈[1,…,t−1]} 来更好地代表学生在特定问题 q t q_t qt上的能力,称为历史回顾模块。
我们开发了两种方法来寻找相关的历史练习。第一种是硬性选择,即我们只考虑与新问题有相同技能的练习。
I e = { e i ∣ N q i = N q t , i ∈ [ 1 , . . , t − 1 ] } , \begin{aligned} \mathcal{\mathbf{I}}_e = \left\{\mathbf{e}_i| \mathcal{N}_{q_i}=\mathcal{N}_{q_t}, i\in [1,..,t-1]\right\}, \end{aligned} Ie={ei∣Nqi=Nqt,i∈[1,..,t−1]},另一种方法是软选择,即我们通过注意力网络学习目标问题和历史状态之间的相关性,并选择具有最高注意力分数的前k个状态。 I e = { e i ∣ R i , t ≤ k , V i , t ≥ v , i ∈ [ 1 , . . , t − 1 ] } , \begin{aligned} \mathcal{\mathbf{I}}_e = \left\{\mathbf{e}_i|R_{i,t}\leq k , V_{i,t}\geq v ,i\in [1,..,t-1]\right\}, \end{aligned} Ie={ei∣Ri,t≤k,Vi,t≥v,i∈[1,..,t−1]}, 其中 R i , t R_{i,t} Ri,t是注意力函数 f ( q i , q t ) f(\mathbf{q}_i,\mathbf{q}_t) f(qi,qt)的排序,如余弦相似度, V i , t V_{i,t} Vi,t是注意力值, v v v是相似度下限,以过滤不太相关的练习。
以前的KT方法主要是根据学生状态 h t \mathbf{h}_t ht和问题表述 q t \mathbf{q}_t qt之间的交互作用来预测学生的成绩,即 ⟨ h t , q t ⟩ \langle \mathbf{h}_t, \mathbf{q}_t \rangle ⟨ht,qt⟩。
我们在以下几个方面对这种互动进行了概括。(i)我们用 ⟨ h t , q ~ t ⟩ \langle \mathbf{h}_t, \widetilde{\mathbf{q}}_t \rangle ⟨ht,q t⟩表示学生对问题 q t q_t qt的掌握程度, ⟨ h t , s ~ j ⟩ \langle \mathbf{h}_t, \widetilde{\mathbf{s}}_j \rangle ⟨ht,s j⟩表示学生对相应技能 s j ∈ N q t s_j \in \mathcal{N}_{q_t} sj∈Nqt的掌握程度,(ii)我们把对当前学生状态的交互概括为历史练习,反映相关的历史掌握程度,即 ⟨ e i , q ~ t ⟩ \langle \mathbf{e}_{i}, \widetilde{\mathbf{q}}_t \rangle ⟨ei,q t⟩ and ⟨ e i , s ~ j ⟩ \langle \mathbf{e}_i, \widetilde{\mathbf{s}}_j \rangle ⟨ei,s j⟩, e i ∈ I e \mathbf{e}_i \in \mathcal{I}_e ei∈Ie,这相当于让学生在历史时间步数中回答目标问题。
然后,我们考虑所有上述互动的预测,并确定了广义的互动模块。为了鼓励相关的互动并减少噪音,我们使用注意力网络来学习所有互动项的双注意力权重,并计算出加权和作为预测值。
α i , j = Softmax i , j ( W T [ f i , f j ] + b ) p t = ∑ f i ∈ I e ∪ { h t } ∑ f j ∈ N ~ q t ∪ { q ~ t } α i , j g ( f i , f j ) \begin{aligned} \alpha_{i,j} & = \textup{Softmax}_{i,j}(\pmb{W}^T[\pmb{f}_i,\pmb{f}_j]+b) \\ p_t & = \sum_{\pmb{f}_i\in\mathcal{\mathbf{I}}_e\cup\left\{\mathbf{h}_{t}\right\}}\sum_{\pmb{f}_j\in \mathcal{\widetilde{\mathbf{N}}}_{q_t}\cup\left\{\widetilde{\mathbf{q}}_{t}\right\}} \alpha_{i,j} g(\pmb{f}_i,\pmb{f}_j) \end{aligned} αi,jpt=Softmaxi,j(WWWT[fffi,fffj]+b)=fffi∈Ie∪{ht}∑fffj∈N qt∪{q t}∑αi,jg(fffi,fffj)其中 p t p_t pt是预测的正确回答新问题的概率, N ~ q t \mathcal{\widetilde{\mathbf{N}}}_{q_t} N qt代表 q t q_t qt的聚合邻居技能嵌入,我们用内积来实现函数 g g g。与关系图中邻居的选择类似,我们通过从这两个集合中抽样,设定一个 I e \mathcal{\mathbf{I}}_e Ie 和 N ~ q t \mathcal{\widetilde{\mathbf{N}}}_{q_t} N qt的固定数量。
为了优化我们的模型,我们使用梯度下降法更新模型中的参数,使预测的正确回答概率和学生答案的真实标签之间的交叉熵损失最小。
L = − ∑ t ( a t log p t + ( 1 − a t ) log ( 1 − p t ) ) . \begin{aligned} \mathcal{L} = -\sum_t(a_t\log{p_t}+(1-a_t)\log{\left(1-p_t\right)}). \end{aligned} L=−t∑(atlogpt+(1−at)log(1−pt)).
在本节中,我们进行了几个实验来研究我们的模型的性能。我们首先通过在三个公共数据集上比较我们的模型和其他基线来评估预测误差。然后,我们对GCN和GIKT的交互模块进行了消融研究,以显示它们在第5.5节中的有效性。最后,我们在第5.6节中评估了复述模块的设计决定,以研究哪种设计表现得更好。
为了评估我们的模型,我们在KT中广泛使用的三个数据集上进行了实验,详细的统计数据见表1。
请注意,对于每个数据集,我们在实验中只使用长度大于3的序列,因为太短的序列是没有意义的。对于每个数据集,我们将所有序列的80%作为训练集,20%作为测试集。为了评价这些数据集的结果,我们使用曲线下面积(AUC)作为评价指标。
为了评估我们提出的模型的有效性,我们使用以下模型作为我们的基线。{ BKT[6]使用贝叶斯推理进行预测,它将技能的知识状态建模为一个二元变量。
我们用TensorFlow实现所有的比较方法。我们的方法的代码可以在网上找到8。技能、问题和答案的嵌入大小为100,所有的嵌入矩阵在训练过程中随机初始化和更新。在LSTM的实现中,使用了具有两个隐藏层的堆叠LSTM,其中存储单元的大小分别被设置为200和100。在嵌入传播模块中,我们设定最大聚合层数l=3。我们还使用保持概率为0:8的dropout来避免过度。所有的可训练参数都由Adam算法[12]优化,学习率为0.001,小型批次大小被设置为32。其他的超参数通过网格搜索来选择,包括GCN中问题邻居的数量,GCN中技能邻居的数量,与新问题相关的练习和技能。
表2报告了所有比较方法的AUC结果。从结果中我们看到,我们的GIKT模型在三个数据集上取得了最高的性能,这证明了我们模型的有效性。具体来说,我们提出的模型GIKT比其他基线至少高出1%。
在基线模型中,传统的机器学习模型如BKT和KTM的表现比深度学习模型差,这表明了深度学习方法的有效性。DKVMN的平均表现比DKT略差,因为为每个概念建立状态可能会失去概念之间的关系信息。此外,GAKT的表现比我们的模型差,这表明通过选择最相关的练习和进行互动来利用高阶技能-问题关系是有区别的。
另一方面,我们发现,直接使用问题作为输入可能会取得比使用技能更好的性能。对于问题级模型DKT-Q来说,它在ASSIST12和EdNet数据集上的表现与DKT相当或更好。然而,在ASSIST09数据集上,DKT-Q的表现比DKT差。原因可能是ASSIST09数据集中每个问题的平均尝试次数明显少于其他两个数据集,如表1所示,这说明DKT-Q存在数据稀少的问题。此外,DKT-QS模型的AUC结果高于DKT-Q和DKT,但ASSIST12数据集除外,因为它是一个单技能数据集,这表明将问题和技能信息一起考虑可以提高整体性能。
为了深入了解GIKT中每个模块的影响,我们设计了几个消减研究来进一步研究我们的模型。我们首先研究聚合层数量的影响,然后设计一些交互模块的变体来研究它们的有效性。
Effect of Embedding Propagation Layer我们改变了GCN中聚合层的数量,从0到3来显示高阶问题-技能关系的影响,结果如表3所示。特别是,当层数为0时,意味着我们模型中使用的问题嵌入和技能嵌入是直接从嵌入矩阵中索引的。
从表3中我们发现,当聚合层的数量从0到1时,GIKT的性能略有变化,因为我们已经在回顾模块和交互模块中使用了1阶关系。然而,当聚合层的数量增加时,GIKT实现了更好的性能,这验证了GCN的有效性。结果还表明,利用问题-技能图中的高阶关系是获得充分结果的必要条件,因为采用更多的层数比使用更少的层数性能更好。
Effect of Interaction Module 为了验证交互模块在GIKT中的影响,我们对我们模型的四个变体进行了消融研究。这四种设置的细节如下,其性能见表4。
从表4中,我们得出以下结论。我们的GIKT模型考虑了所有的交互方面,取得了最好的性能,这表明了交互模块的有效性。同时,从GIKT-RH的结果中我们可以发现,相关的历史状态可以帮助更好地模拟学生对新问题的能力。此外,GIKT-RS的表现比GIKT略差,这意味着同时建立问题和技能的掌握程度模型可以进一步帮助预测。需要注意的是,由于ASSIST12是一个单一技能的数据集,在选择共享相同技能的历史练习后,在交互模块中使用技能信息是多余的,因此我们将采样的相关技能数量设为0。通过计算不同方面的互动和加权总和进行预测,来自不同层次的信息可以被充分互动。
为了评估GIKT中重述模块的详细设计,我们进行了几个变体的实验。设置的细节如下,其性能如表5所示。
从表5中我们发现,选择历史练习比选择隐藏状态表现得更好。这个结果意味着隐藏状态包含了与下一个问题无关的信息,因为它学习了一个学生的一般掌握情况。相反,直接选择练习可以减少噪音以帮助预测。在不同的数据集上,硬选择和软选择的表现是不同的。使用注意力机制可以实现更好的选择覆盖率,而硬选择的变体可以通过明确的约束条件选择练习。
在本文中,我们提出了一个框架,将高阶问题-技能关系图运用到问题和技能表示中,以实现知识追踪。此外,为了模拟学生对问题和相关技能的掌握程度,我们设计了一个回顾模块来选择相关的历史状态来表示学生的能力。然后,我们扩展了一个通用的交互模块,以一致的方式表示学生对新问题和相关技能的掌握程度。为了区分相关的互动,我们使用注意力机制进行预测。实验结果表明,我们的模型取得了更好的性能。