论文学习记录:RKT : Relation-Aware Self-Attention for Knowledge Tracing

关系感知的自注意模型用于KT任务

       为了应对新冠肺炎疫情,世界已经进入了在线学习的新阶段。在线学习的一个重要组成部分是知识追踪。KT的目的是根据学生对一系列称为交互的练习的回答来建模学生的知识水平。图1显示了一个学生顺序做练习的例子。当学生遇到一个新的练习(例如“e5”)时,e5包含知识概念“二次方程”,所以她会应用她对于二次方程知识来回答。学生对某一特定知识的掌握是由过去的交互决定的,这些交互对目标知识有明显的影响。通常,有两个因素决定了预测任务中过去交互的影响:(1)练习相关性(它反映了过去练习和新练习之间的关系,直觉上认为,如果交互中的两个练习相互关联,那么其中一个练习的表现会影响另一个练习),以及(2)自过去交互以来经过的时间(它主要考虑了学生的遗忘行为)。传统的知识追踪研究没有明确地对这两个组成部分联合建模,来估计这些交互的影响。

本文提出了一个新的关系感知自注意模型(RKT),将自注意机制应用于知识追踪任务。具体来说,RKT引入了一个关系感知的自注意层,它结合了上下文信息,同时保持了自注意机制的简单性和灵活性。并且使用“关系系数”捕获关系信息。关系系数从练习关系建模和遗忘行为建模中获得。实验结果表明,RKT模型在三个真实数据集上的表现优于最先进的算法。此外,作者对RKT模型进行了全面的消融研究,来显示关键组件的影响。

接下来分为4个部分具体进行介绍

认知模型是指旨在发现每个学生对已定义知识点的潜在掌握程度的模型。广泛使用的方法有:单维模型和多维模型。其中,Rasch模型是典型的一维模型,它基于学生的能力和练习难度,使用logistic回归计算正确回答练习的概率。相比之下,多维模型,DINA模型用二元潜在向量表示学生。与认知模型相似,RKT也建模过去交互对学生表现的影响,它利用注意力机制捕捉过去的交互动态中涉及的复杂性,用于预测任务。

KT任务根据学生的表现数据评估学生的知识状态。基于隐马尔可夫模型的BKT模型,将学习者的潜在知识状态建模为一组二元变量,每一个变量代表对一个概念的理解或不理解。当学生回答练习时,隐马尔可夫模型被用来更新每个二元变量的概率。另一项主要的研究是基于递归神经网络的方法,例如DKT,利用LSTM建模学生的知识状态。DKVMN引入了记忆增强神经网络解决KT问题。最近,提出了自注意知识追踪模型(SAKT) (这个模型是本文作者在2019年提出的),该模型首先从学生过去的交互中识别与要预测其表现的目标KC相关的KC。然后,利用过去KC的表现信息来预测下一个KC的学生掌握程度。

练习关系建模在教育心理学中有着广泛的研究。一些研究人员利用Q矩阵映射带有知识概念的练习。认为两个练习如果属于同一个KC则是相关的。除了基于Q矩阵的方法,也有研究人员利用练习内容推导练习之间的关系。例如,EKT,EERNN,在预测练习之间的语义相似度分数后,使用这些分数作为注意力权重来衡量过去交互的重要性。与以前工作不同的是,本文作者探索了使用练习的文本内容和学生表现数据建模练习关系的方法。

另外已经有一些研究考虑了学生的遗忘行为。遗忘曲线理论认为学生的记忆随着时间推移以指数速率衰减,并且衰减的速率由学生认知能力的强度决定。最近,DKT-forget在DKT模型中引入了不同的基于时间的特征,是具有时间信息的最新方法。

本文工作在KT任务中既利用了练习关系建模又利用了遗忘行为建模,这是以前没有做过的。

注意力机制在涉及序列建模的任务中是有效的。这种机制背后的思想是在预测输出时关注输入的相关部分。因为人们可以找到导致做出特定预测的特定输入的权重,因此,它通常使模型更容易解释。它是针对机器翻译任务而引入的,用于检索输入序列中的单词以在目标句子中生成下一个单词。

一些模型已经认识到,使用上下文信息增强自注意层可以提高模型的性能

在本文中,作者使用自注意机制学习与先前交互相对应的注意力权重,以预测学生是否会为下一个练习提供正确答案。

然后大概介绍一下Transformer。Transformer 是Google团队在2017年提出的一种NLP经典模型,现在的Bert也基于Transformer。Transformer模型使用了Self-Attention机制,不采用RNN的顺序结构,使得模型可以并行化训练,而且能够拥有全局信息。如图所示,是Transformer用于中英文翻译的整体结构,Transformer由Encoder和Decoder两个部分组成,Encoder和Decoder都包含6个block。

Transformer的工作流程大体如下,第一步:获取输入句子的每一个单词的表示向量XX由单词Embedding和单词位置Embedding相加得到,第二步:将得到的单词表示向量传入Encoder中,经过6个Encoder block可以得到句子所有单词的编码信息矩阵C。

第三步:将Encoder输出的编码信息矩阵C传递到Decoder中,Decoder依次根据当前翻译过的单词 翻译下一个单词,在翻译的过程中,翻译到单词i+1 的时候通过 Mask (掩盖)操作遮盖i+1之后的单词。如图所示,Decoder接收了Encoder 的编码矩阵C,然后首先输入一个翻译开始符 “”,预测第一个单词 “I”;然后输入翻译开始符 “” 和单词 “I”,预测单词 “have”,以此类推,这就是Transformer的大致工作流程。

       然后介绍一下Transformer的细节。如图是Transformer的内部结构图,红色圈是Multi-Head Attention,它是由多个Self-Attention组成的,Multi-Head Attention上方还包括一个Add & Norm层,Add表示残差,Norm表示Layer Normalization。然后介绍Transformer的自注意机制,多头注意机制和Add & Norm层。

       中间的图是Self-Attention的结构图,在计算的时候需要用到矩阵Q(查询),K(键值),V(值)。而Q,K,V是通过Self-Attention的输入进行线性变换得到的。Self-Attention的输入用矩阵X表示,通过使用线性变阵矩阵WQ,WK,WV可以计算得到Q,K,V。得到矩阵Q,K,V之后,就可以利用注意力公式计算得到Self-Attention的输出。

Multi-Head Attention是由多个Self-Attention组合形成的。首先将输入X分别传递到h个不同的Self-Attention中(图中显示的是h=8的情况),计算得到h个输出矩阵。然后Multi-Head Attention将得到的8个输出矩阵拼接在一起,然后传入一个Linear层,最后得到Multi-Head Attention的输出 。

Add是一种残差连接,通常用于解决多层网络训练的问题,可以让网络只关注当前差异的部分。Norm指Layer Normalization,通常用于RNN结构,Layer Normalization会将每一层神经元的输入转成均值方差都一样,可以加快收敛。

下面介绍一下SAKT模型的结构。SAKT模型的提出背景是:在KT领域,基于递归神经网络的方法(如DKT,DKVMN)虽然优于传统方法,但是不能很好地处理稀疏数据,为了解决这个问题,提出了SAKT方法。SAKT是第一个在KT任务中使用注意力机制的方法,SAKT将标准的Transformer模型应用到知识追踪中,因此,它与Transformer模型有许多相似之处,主要的区别在于数据的输入。如图所示,key向量和value向量的输入来自于学生先前的问题交互序列xi,可以表示为交互元组的形式(ei, ri),其中ei指学生在时间i做的练习,ri指是否回答正确。query向量的输入来自于学生正在尝试的当前问题ei+1。

SAKT模型可以基于一个学生以前的交互序列,来预测该学生是否能够回答下一个练习。接下来介绍SAKT的嵌入层,首先将交互元组转为数字yt,其中E是练习总数。因此,交互序列中的一个元素可以取的总值是2E,练习序列中的元素可以取E个可能值。

     然后,因为模型只可以处理固定长度序列的输入,所以将序列y转化为序列s,其中n是模型可以处理的最大长度,如果序列长度t小于n,则重复地在序列的左边添加(question-answer对)padding。如果t大于n,将序列划分为多个长度为n的子序列。

然后训练交互嵌入矩阵,M∈R2E×d,其中d是潜在维数。该矩阵用于获得序列中每个元素Si的嵌入Msi。类似的,训练练习嵌入矩阵,E∈RE×d,获得每个练习的嵌入。此外,为了编码序列的顺序,作者使用参数P表示位置嵌入,在训练时进行学习。然后将位置嵌入矩阵的第i行Pi加到交互序列第i个元素的交互嵌入向量上。最后嵌入层的输出是:嵌入的交互输入矩阵M尖和嵌入的练习矩阵E尖。

    然后是SAKT的自注意层,首先利用嵌入层的输出M尖、E尖矩阵计算query、 key、value矩阵,其中WQ、WK、WV分别是query、 key和value的投影矩阵,它们将相应的向量线性投影到不同的空间。然后基于计算得到的Q,K,V矩阵,使用缩放点积注意机制计算注意力权重,确定每个先前交互与当前练习的相关性。

然后SAKT模型还使用了多头注意机制,作用就是为了关注来自不同表示子空间中的信息

除了前面介绍的嵌入层,自注意层,多头注意机制之外,SAKT还使用了前馈层,残差连接,层归一化和预测层,这几部分的实现和本文要介绍的RKT相同,在后面介绍。

这个图显示了SAKT模型的网络结构,图中的query、key和value都是从嵌入层中提取的。在每个时间戳,只为每个先前的元素估计注意力权重。本文提出的RKT模型是SAKT模型的一个扩展,RKT考虑了交互中涉及的练习之间的关系和自上次交互以来经过的时间。

接下来介绍RKT方法

首先进行问题定义:基于学生以前的交互序列X = { x1,x2,…,xn-1},KT旨在预测该学生能否正确回答下一个练习en,学生的每次交互用元组(xi)表示,其中ei是学生做的练习,ri是学生答案的正确性,ti是交互发生的时间,为了准确预测,重要的是确定在tn时刻所做练习en与先前交互之间的潜在关系。在本文中,作者认为过去的交互在预测学生是否能够正确回答下一个练习的重要性由两个因素决定:1)在过去交互中所作练习和下一个练习之间的关系,以及2)自过去交互以来经过的时间。受此思想启发,作者提出了RKT模型。

接下来分为6个部分具体进行介绍

首先是练习表示。作者从每个练习的文本内容中学习其语义表示。利用单词嵌入技术,学习了一个函数f : M → Rd,其中M代表单词字典,f是一个将单词映射到d维分布向量的参数化函数。(在look-up层,练习内容被表示为单词嵌入矩阵)。然后,通过使用平滑逆频率(SIF)对练习i的文本中存在的所有单词的嵌入进行加权组合,获得练习I的嵌入Ei。SIF降级了but、just等不重要的词,保留对练习语义贡献最大的信息。这是练习I的嵌入公式:。其中a是一个可训练的参数,si代表第i个练习的文本,p(w)是单词w的概率。

(d:潜在向量维数)

然后是练习-关系矩阵计算。这个图显示了RKT模型的整体结构,其中图中红色框起来的部分就是练习关系矩阵的计算部分。作者认为RKT模型的一个重要创新就是探索了识别练习之间潜在关系的方法。因为练习之间的关系不明确,所以作者提出从数据中推断这些关系,并建立练习关系矩阵A。矩阵中的值Ai,j表示练习j的表现对练习i的表现的重要性。从图中可以看到,作者利用两个信息源来发现练习之间的关系:学生的表现数据和练习的文本内容。其中学生表现数据用于捕捉在做练习j时获得的知识与做练习I的相关性,而练习文本内容用来捕捉两个练习之间的语义相似性。

(E:练习总数量)

首先描述如何使用学生的表现数据来获取从练习j中获得的知识对做练习i的相关性。首先考虑I、j对构建如表2所示的列联表,其中j在学习序列中出现在I之前。如果在I之前的学习序列中j多次出现,只考虑最近的一次。然后,计算用作两个二元变量关联度量的φ系数。数学上,描述从j到I的关系的φ系数计算如下:。ϕi,j的值介于-1和1之间,较高的ϕi,j分数意味着学生在练习j的成绩在决定他在练习I的成绩方面起重要的作用。

然后,计算两个练习之间关系的另一个数据源是练习的文本内容,它表明了两个练习的语义相似性。首先从前面的练习表示公式获得练习i和练习j的嵌入Ei和Ej,然后使用嵌入的余弦相似度计算练习之间的相似度。最后,结合前面计算的ϕ系数,得到练习j与练习i的关系计算公式:。其中θ是控制关系矩阵稀疏性的阈值。

接下来这一部分,主要工作是建模上下文信息来计算过去交互的相关性,(也就是关系系数),来预测学生在下一次练习中的表现。图中红色框起来的部分就是关系系数R的计算过程。

从这个图中可以更清楚地看到,作者在计算关系系数这一步结合了练习关系建模和遗忘行为建模。

练习关系建模这一部分包括对交互中涉及的练习之间的关系进行建模。给定一个学生过去做的练习序列(e1,e2,,,en-1)和要预测其表现的下一个练习en,然后,从练习关系矩阵的第en行计算基于练习的关系系数,RE。遗忘曲线理论认为学生随着时间的推移而忘记所学的知识,因此,如果一个学生忘记了在一次特定的交互i后获得的知识,那么交互i对于预测下一次交互中学生表现的相关性应该被减弱,不管所涉及的练习之间的关系如何。它的挑战在于怎样找出学生已经忘记知识的交互。

由于学生会随着时间遗忘,作者使用了一个核函数来建模交互对于时间间隔的重要性。根据遗忘曲线理论的思想,核函数被设计成随时间呈指数衰减的曲线,以随着时间间隔的增加而降低交互的重要性。具体来说,给定学生交互的时间序列t = (t1,t2,.。。TN-1)和学生做下一个练习的时间tn,计算下一次交互和第i次交互之间的相对时间间隔。因此,可以计算基于遗忘行为的关系系数RT。其中,Su指的是学生u的相对记忆强度,是模型中的一个可训练参数。

然后,将从单个信息源获得的权重相加来获得过去交互的修正重要性。因此,将关系系数计算为:。更相关的交互对应的关系系数更高。

现在看这个图中关于关系系数R的计算部分就会比较清楚了,利用前面计算得到的练习关系矩阵A,根据过去做的练习(e1,e2,.。。en-1)和下一个练习En之间的关系以及自交互以来经过的时间(△1,△2,,,,△n-1)来计算关系系数R。

接下来介绍输入嵌入层,交互的原始数据由所做的练习、学生答案的正确性和交互发生时间的元组组成。图中红色框部分表示输入的嵌入。可以看到需要嵌入交互信息和交互位置。

为了获得过去交互j,(ej,rj,tj)的嵌入,首先使用练习表示公式获得相应的练习表示。然后,将分数rj扩展到特征向量rj= [rj,rj,.。。,rj] ∈ Rd并将其与练习嵌入连接。此外,定义位置嵌入矩阵P ∈ Rl×2d,引入交互的顺序信息,(其中l是允许的最大序列长度)因此,可以得到交互嵌入公式。最后,通过结合交互嵌入E和位置嵌入P,输入的交互序列表示为X=[x1,x2,,,,xn]。

然后是RKT模型的核心组成部分:包含关系结构的注意力结构。为此,作者修改了注意机制的对齐分数,以更多地关注由关系系数R确定的相关交互。令α是使用缩放点积注意机制学习的注意力权重,从而有这个公式。其中WQ和WK分别为query和key的投影矩阵。对应于图中的蓝色圆圈部分。

最后,通过将两个权重相加,将注意力权重与关系系数相结合:。其中Rj是关系系数R的第j个元素。λ是可调参数。通过线性变换交互嵌入和位置嵌入的加权和获得第n次交互的输出表示o。其中WV为value空间的投影矩阵。(练习en的练习表示)

作者将点向前馈层(FFN)应用于RKT的输出,就是前面计算得到的o。前馈层FFN有助于将非线性纳入模型,并考虑不同潜在维度之间的交互。它由两个线性变换组成,线性变换之间有一个ReLU非线性激活函数。前馈层FFN的最终输出是F = ReLU(oW(1)+ b(1))W(2)+ b(2),其中W(1),W(2) 是权重矩阵和b(1) 和b(2) 是偏差向量。除了上述建模结构之外,作者还在自注意层和前馈层之后添加了残差连接,以训练更深的网络结构。此外,还将层归一化和dropout应用于每层的输出。

最后,为了获得学生正确回答练习en的能力,将上面获得的学习表示F输入具有Sigmoid激活函数的全连接网络,以预测学生的表现。其中p是一个标量,表示学生正确回答练习en的概率。

网络训练:由于自注意模型适用于固定长度的序列,所以在将输入序列X = (x1,x2,.。。,x|X |)输入到RKT之前需要将它转换成固定长度l的序列。如果序列长度|X|小于l,则在序列的左侧重复添加padding。如果|X|大于l,则序列划分成长度为l的子序列。训练的目标是最小化模型下观察到的学生回答序列的负对数似然。参数通过在每次交互最小化p和r之间的交叉熵损失来学习。其中I表示训练集中的所有交互

接下来分为4个部分进行介绍

本文的实验设置是为了回答以下问题而提出的。分别是:RKT能否超越最先进的知识追踪方法?,RKT架构中各种组成部分的影响是什么?,在计算嵌入时,注意力权重能够学习有意义的模式吗?。这三个问题后面会通过实验进行解答。为了评估本文的模型,作者使用了三个真实世界的数据集ASSISTment2012(ASSIST2012)由ASSISTment在线辅导平台提供,JunyiAcademy (Junyi)由均一教育平台在2015年收集,可用数据集仅包含学生的练习记录。作者从他们的网站上爬取了练习文本内容数据, Peking Online Judge (POJ) ,数据集收集自北京在线编码实践平台,由计算机编程问题组成。我截了后两个网站的首页图。

对于所有这些数据集,作者首先移除尝试少于两个练习的学生,然后移除被尝试少于两个学生的练习。表3显示了所有数据集的统计信息。

因为学生成绩预测是二元分类:即正确或不正确地回答一个练习。因此,使用AUC和ACC来比较性能。具体的评估流程是:在训练阶段和测试阶段使用交互来训练模型,在收到每个练习回答后更新模型。然后使用更新后的模型对下一个练习进行预测。一般AUC或ACC的值0.5代表随机猜测的性能预测结果。

本文选取了一些最先进的KT方法进行比较,包括:DKT,SAKT,DKVMN,DKT+Forget,EERNN,EKT。

SAKT用自注意机制为先前回答的练习分配权重,以预测学生在特定练习中的表现

DKT+Forget是DKT的扩展,它利用学生的学习顺序和遗忘行为来预测学生的表现

EERNN利用练习的文本内容和学生的练习记录来预测学生的表现。此外,该模型利用过去的交互和下一个练习之间的余弦相似性来关注过去的交互。

EKT是EERNN的扩展,它跟踪学生对多种技能的知识获取。

接下来进行实验结果的讨论,也就是回答一开始的三个问题,首先第一个问题:RKT能否超越最先进的知识追踪方法?。

表4显示了所有基线方法和RKT模型的性能比较。可以观察到,不同种类的基线显示出明显的性能差距。SAKT模型性能优于DKT和DKVMN,这源于SAKT识别过去的交互和下一个练习之间的相关性。DKT-forget在大多数情况下性能会获得改善,这表明了考虑时间因素的重要性。此外,EERNN和EKT结合练习的文本内容,识别哪个交互历史更相关,比那些不考虑这些关系的模型表现更好。

RKT的表现始终优于所有基线。与其他基线相比,RKT能够明确地捕捉基于学生成绩数据和文本内容的练习之间的关系。此外,它使用一个核函数来建模学生的遗忘行为,与 DKT+forget模型相比,该核函数是一种更易于解释和证明的建模人类记忆的方法。

作者提出利用交互之间的关系可以使模型对数据集的稀疏性具有鲁棒性。也就是说,利用不同练习之间的关系有助于评估学生在相关练习中的表现,从而缓解稀疏性问题。为了验证这个观点,作者对不同交互次数的学生群体进行了实验。首先根据每个用户的交互数量生成四组学生,从而分别生成少于10、100、1000、10000个交互的组。所有方法的性能如图3所示。从图中可以发现,RKT在所有情况下都优于基线模型,这表明利用关系信息预测表现的重要性。此外,RKT对互动次数较少的学生群体的性能增益更显著。因此,可以出结论:利用交互之间关系的RKT即使在交互较少的情况下也能有效地学习学生的知识表征。

为了深入了解RKT模型,作者通过消融研究验证了模型中各个组件如何影响最终结果。在表5中,有RKT的七种变体,每种变体都从完整模型中移除一个或多个组成部分。具体来说:PE、TE、RE分别指无位置编码的RKT、没有遗忘行为建模的RKT和没有练习关系建模的RKT。PE+TE,PE+RE,TE+RE是指同时去除两个分量。最后,PE+RE+TE指的是RKT没有位置编码建模,遗忘行为建模和练习关系建模来进行交互表示。从表5可以得出一些结论。第一,模型编码的信息越多,性能越好。其次,对于所有数据集,删除练习关系建模会导致性能急剧下降。表明了学习练习关系对于提高KT模型的性能很重要。

为了探索练习关系矩阵计算的影响,使用不同设置的RKT变体,探索了计算练习关系矩阵的方法:(1) 第一种变体认为两个习题属于同一个KC是相关的。 (2)第二种方法是仅使用两个练习的文本内容来估计它们之间的关系。 (3)第三种变体仅使用学生成绩数据计算两个练习之间的关系。 (4)使用练习文本内容和学生成绩数据来计算两个练习之间的相似性。表6总结了实验结果。首先,方法(1)在四种方法中表现最差。这是因为它忽略了不属于同一知识概念的练习之间存在关系的事实。方法(3)相对于方法(2)性能得到了提升,因为学生表现数据很好的表明了学生感知的练习之间关系。即使两个练习的文本内容不相似,解决这两个练习所涉及的知识关联度也可能很高。最后,利用学生成绩数据和练习文本内容数据的方法(4)优于其他方法。

得益于纯粹的注意力机制,RKT和SAKT模型对于预测结果是高度可解释的。为此,作者比较了从这两个模型中获得的注意力权重。首先从均一数据集中选择了一名学生,并获得了与过去交互相对应的注意力权重,以预测她在练习e15中的表现。图4显示了SAKT和RKT分配的权重。可以看到,与SAKT相比,RKT更重视与e15同属一个KC的e2,并且有更强的关联性。由于学生给e2的答案是错误的,她还没有掌握“二次方程”。因此,RKT预测该学生将无法回答e15。因此,得出结论,为KT任务考虑练习之间的关系是有益的。

然后,作者进行了实验来可视化RKT在不同数据集上分配的注意力权重。为此,作者检查了所有序列,通过显示先前交互的平均注意力权重来揭示有意义的模式。图5显示了注意力权重矩阵的热图,(其中第(I,j)个元素表示预测第j次交互表现时第i个元素的注意力权重,横着看的),其中颜色越深,表示注意力权重越大,所以越靠近对角线的部分颜色比较深的话,就说明最近的交互被赋予了更高的权重,而如果上对角部分,颜色分布比较均匀的话,说明注意力权重更多地分布在先前的交互上。

(b)、(c)、(d):是不同数据集的注意力权重的热图显示,与其他交互相比,最近的交互被赋予了更高的权重。这归因于学习过程中的遗忘行为,使得只有最近的交互才能更改学生的知识状态。

(b)与(c):显示了RKT对两种不同类型数据集的权重。在ASSIST2012数据集中,练习是按知识点学习的顺序进行的,学生可以先掌握一个知识点,然后学习下一个知识点。而在POJ数据集中,学生根据自己的需要选择练习。因此,对应于ASSIST2012数据集的热图注意力权重集中在对角线元素上,而对于POJ,注意力权重分布在整个交互中。

(a)与(b):的比较显示了关系信息对修正注意力权重的影响。在没有关系信息的情况下,注意力权重更多地分布在先前的交互上,而在ASSIST2012中,因为相邻交互具有更高的关系,所以关系信息将注意力权重集中在更靠近对角线的位置。

本文提出了一个关系感知的自注意机制用于KT任务。它建模学生的交互历史,并通过考虑从与过去练习的关系中获得的上下文信息和学生的遗忘行为来预测她在下一次练习中的表现。使用学生成绩数据和练习的文本内容来计算练习之间的关系。遗忘行为是使用时间衰减核函数建模的。然后将上下文信息整合到自注意层,因此,称之为关系感知自注意力。在真实数据集上的大量实验表明,RKT模型可以超越最先进的方法。由于纯粹的自注意机制,RKT是可以解释的。

未来作者计划不再从数据中建模练习之间的关系,这将有助于预测新练习之间的关系。此外,可以学习学生知识的嵌入表示,并使用这种嵌入来跟踪学生在各种知识概念上的熟练程度。

 

你可能感兴趣的:(论文学习笔记)