[论文翻译] GIKT: A Graph-based Interaction Model forKnowledge Tracing

news2024/12/23 0:01:00

摘要


随着在线教育的快速发展,知识追踪(KT)已成为追踪学生知识状态并预测他们在新问题上的表现的基本问题。在线教育系统中的问题通常很多,并且总是与更少的技能相关联。然而,以往的文献未能将问题信息与高阶问题-技能相关性结合起来,这主要受到数据稀疏性和多技能问题的限制。从模型的角度来看,以前的模型很难捕捉到学生运动历史的长期依赖性,也无法以一致的方式对学生问题和学生技能之间的相互作用进行建模。在本文中,我们提出了一种基于图的知识追踪交互模型(GIKT)来解决上述问题。更具体地说,GIKT 利用图卷积网络 (GCN) 通过嵌入传播充分结合问题和技能的相关性。此外,考虑到相关问题通常分散在整个练习历史中,而问题和技能只是知识的不同实例,GIKT将学生对问题的掌握程度概括为学生当前状态、学生相关学习记录、目标问题和相关技能之间的相互作用。三个数据集上的实验表明,GIKT 实现了新的最先进的性能,至少有 1% 的绝对AUC提高。

介绍


在MOOC或智能辅导系统等在线学习平台中,知识追踪(KT)是一项必不可少的任务,旨在追踪学生的知识状态。在口语层面上,KT解决了预测学生能否根据以前的学习经历正确地回答新问题。KT任务已被广泛研究,并提出了各种方法来处理它。

现有的KT方法通常基于目标问题对应的技能而不是问题本身来构建预测模型。在KT任务中,存在多个技能和许多问题,其中一个技能与许多问题相关,一个问题可能对应多个技能,可以用关系图表示,如图1所示的示例。由于假设技能的掌握可以在一定程度上反映学生是否能够正确回答相关问题,因此根据技能进行预测是一种可行的替代方案, 就和以前的KT方法一样。

尽管这些仅仅基于技能的KT方法取得了实证成功,但问题的特征被忽视了,这可能会导致性能下降。例如,在图 1 中,即使 q2 和 q3 这两个问题具有相同的技能,但它们不同的难度可能会导致正确回答的概率不同。为此,之前的几部作品利用问题特征作为技能输入的补充。然而,由于问题的数量通常很大,而许多学生只尝试一小部分问题,大多数问题只能由少数学生回答,从而导致数据稀疏性问题。此外,对于那些共享部分共同技能的问题(例如q1和q4),简单地增加问题特征会丢失潜在的问题间和技能间的信息。基于这些考虑,利用问题和技能之间的高阶信息非常重要。

在本文中,我们首先研究如何有效地提取问题-技能关系图中包含的高阶关系信息。图神经网络 (GNN) 通过聚合来自邻居的信息来提取图所表示的信息, 提供了强大推动作用,我们利用图卷积网络 (GCN) 来学习问题和技能的嵌入高阶关系。一旦问题和技能嵌入被聚合,我们可以直接将问题嵌入与相应的答案嵌入一起作为 KT 模型的输入。

嵌入(Embedding)是一种分布式表示方法,即把原始输入数据分布地表示成一系列特征的线性组合

除了输入特征,KT 中另一个关键问题是模型框架。深度学习的最新进展模拟了一系列卓有成效的深度 KT 作品,这些作品利用深度神经网络顺序捕捉学生知识状态的变化。两个具有代表性的深度 KT 模型是深度知识追踪 (DKT) 和动态键值记忆网络 (DKVMN) ,它们分别利用递归神经网络 (RNN) 和记忆增强神经网络 (MANN) 来解决KT。然而,众所周知,它们无法捕获问题串中的长期依赖关系。为了解决这个问题,顺序键值记忆网络 (SKVMN) 提出了一种 hop-LSTM 架构,该架构将相似的练习和隐藏状态聚合为一个新状态,并提出了具有注意机制的练习增强循环神经网络 (EERNNA) 使用注意力机制对所有历史状态进行加权求和聚合。

我们进一步改善了长期依赖捕获和更好地建模学生的掌握程度,而不是将相关的历史信息聚合到一个新的状态中进行预直接用词。受 SKVMN 和 EERNNA 的启发,我们引入了一个回顾(recap)模块,根据注意力权重选择几个最相关的隐藏练习,以达到降噪的目的。考虑到对新问题及其相关技能的掌握,我们推广了交互模块,并将相关练习和当前隐藏状态聚合的问题嵌入和技能嵌入进行交互。推广后的交互模块可以更好地模拟学生对问题和技能的掌握程度。此外,注意力机制应用于每个交互以做出最终预测,该机制自动对所有交互的预测效用进行加权。

综上所述,在本文中,我们提出了一个端到端的深度框架,即基于图的知识追踪交互(GIKT),用于知识追踪。我们的主要贡献总结如下:

  1. 通过利用图卷积网络聚合问题嵌入和技能嵌入,GIKT能够利用高阶问题-技能关系,从而缓解数据稀疏问题和多技能问题。

  1. 在交互模块之后引入recap模块,我们的模型可以更好地以一致的方式模拟学生对新问题及其相关技能的掌握程度

  1. 根据经验,我们对三个基准数据集进行了扩展实验,结果表明我们的 GIKT 大幅优于最先进的基线。

相关工作


知识追踪


现有的知识追踪方法大致可以分为两类: 传统的机器学习方法和深度学习方法。本文主要研究深度KT方法。

传统的机器学习 KT 方法主要涉及两种类型:贝叶斯知识追踪(BKT)和因子分析模型

  • BKT 是一种隐马尔可夫模型,它将每个技能视为一个二元变量,并使用贝叶斯规则来更新状态。几项工作扩展了vanilla BKT模型, 以更多信息纳入其中,例如失误和猜测概率、技能难度和学生个性化。另一方面,因子分析模型侧重于从历史数据中学习一般参数以进行预测。

  • 在因子分析模型中,项目反应理论 (IRT) 为学生能力和问题难度建模参数,绩效因素分析 (PFA) 考虑了技能和知识追踪机的积极和消极反应的数量利用分解机将问题和用户的辅助信息编码到参数模型中。

最近,由于巨大的容量和有效的表示学习,KT 文献中已经利用了深度神经网络。深度知识追踪(DKT)是第一个深度知识追踪方法,它使用循环神经网络(RNN)来追踪学生的知识状态。动态键值记忆网络 (DKVMN) 可以发现每个技能的基本概念并跟踪每个概念的状态。基于这两个模型,已经提出了几种考虑更多信息的方法,例如学生的遗忘行为,被专家标记过的多技能信息、必备技能关系图和学生个性化。GKT构建技能关系图并明确学习它们的关系。然而,这些方法仅使用技能作为输入,这会导致信息丢失。

一些深度 KT 方法在预测中考虑了问题特征。记忆网络动态学生分类(DSCMN)利用问题难度来帮助区分与相同技能相关的问题。具有注意力机制的运动增强循环神经网络(EERNNA)使用问题的内容对问题嵌入进行编码,使问题嵌入可以包含问题的特征信息,但实际上很难收集问题的内容。由于数据稀疏性问题,DHKT通过使用问题和技能之间的关系来增强 DKT 来获得问题表示,但是,这未能捕获问题间和技能间的关系。在本文中,我们使用 GCN 来提取问题-技能图中包含的高阶信息。为了处理长期依赖性问题,顺序键值记忆网络 (SKVMN)使用带有跳跃的改进 LSTM 来增强捕获练习串行中长期依赖性的能力。 EERNNA假设当前学生的知识状态是所有历史学生状态的加权和聚合,基于当前问题和历史问题之间的相关性。我们的方法与这两项工作的不同之处在于它们将相关的隐藏状态聚合到一个新的状态中进行预测,而我们首先选择最有用的历史练习来减少噪声对当前状态的影响,然后我们执行成对交互以进行预测。

图神经网络


近年来,图数据在深度学习模型中得到广泛应用。然而,传统的神经网络存在复杂图的非欧结构。受 CNN 的启发,一些作品对图结构数据使用卷积方法。图卷积网络建议被用于(GCNs)半监督图分类,它根据自身及其邻居更新节点表示。这样,如果使用多个图卷积层,更新的节点表示包含邻居节点的属性和高阶邻居的信息。由于 GCN 的巨大成功,针对图数据进一步提出了一些变体。随着图神经网络(GNN)的发展,许多应用基于 GNN 的算法出现在各个领域,例如自然语言处理 (NLP)、计算机视觉(CV)和推荐系统。由于GNN有助于捕获高阶信息,我们在 GIKT 模型中使用 GCN 将技能和问题之间的关系提取到它们的表示中。据我们所知,我们的方法 GIKT 是第一个通过图形神经网络对问题技能关系进行建模的方案。

初步工作


知识追踪: 在知识追踪任务中,学生依次回答在线学习平台提供的一系列问题。学生回答每个问题后,将发出答案是否正确的反馈。在这里,我们将练习表示为 xi = (qi, ai), 其中 qi 是问题ID,ai ∈ {0, 1} 表示学生是否正确回答了 qi。给定一个练习序列 X = {x1, x2, ..., xt−1} 和新问题 qt,KT 的目标就是预测学生正确回答它的概率 p(at = 1|X, qt)。

问题-技能关系图: 每个问题对应一个或多个技能{s1, ..., sni},而一项技能 sj 通常与许多问题 {q1、...、qnj} 相关,其中 ni 是与问题 qi 相关的技能数量, nj 是与技能 sj 相关的问题数量。这里我们将关系表示为问题-技能关系二分图 G,定义为 { (q, rqs, s) | q ∈ Q, s ∈ S},其中 Q 和 S 分别对应于问题和技能集合。如果问题q与技能s相关,则rqs = 1。

GIKT方案


在本节中,我们将详细介绍我们的方法,整体框架如图 2 所示:

  • GCN: 学习问题-技能关系图上聚合的问题和技能表示

  • RNN: 模拟知识状态的顺序变化

  • 回顾 (Recap) 模块: 捕获长期依赖性并全面利用有用的信息

  • 交互 (Interaction) 模块: 进行最终预测

图2: GIKT在时间步骤t的图示,其中qt是新问题。首先,我们使用GCN来聚合问题和技能嵌入。然后使用RNN对顺序知识状态ht进行建模。在回顾模块中, 我们选择了与qt最相关的隐藏练习,它对应于软选择和硬选择实现。信息交互模块在学生当前状态、所选学生历史练习、目标问题和相关技能之间进行成对交互,以进行预测。

嵌入层


我们的GIKT方法使用嵌入来表示问题,技能和答案。三个嵌入矩阵 Es ∈ R(|S|×d), Eq ∈ R(|Q|×d), Ea ∈ R(2×d)表示查找操作,其中 d 代表嵌入大小。Es 或 Eq 中的每一行对应一个技能一个问题。Ea中的两行分别表示错误正确答案。对于矩阵中的第 i 行向量,我们分别使用 si、qi 和 ai 来表示它们。

在我们的框架中,我们不预训练这些嵌入,它们通过以端到端的方式,在优化最终目标时才被训练。

嵌入传播


从训练的角度来看,问题数据的稀疏性是对学习信息丰富的问题的巨大挑战,尤其是对于那些训练示例非常有限的问题。从推理的角度看,学生能否正确回答新问题,取决于其相关技能的掌握情况和问题的特点。当Ta以前解决过类似问题时,Ta更有可能正确回答新问题。在这个模型中,我们结合了问题-技能关系图 G 来解决稀疏性问题,并利用先验相关性来获得更好的问题表示。

考虑到问题-技能关系图是二分的,一个问题的第一跳邻居应该是它对应的技能,第二跳邻居应该是共享相同技能的其他问题。为了提取高阶信息,我们利用图卷积网络 (GCN) 将相关技能和问题编码为问题嵌入技能嵌入

图卷积网络堆叠多个图卷积层来编码高阶邻居信息,并且在每一层中,节点表示可以通过自身和邻居节点的嵌入来更新。将图中节点i的表示表示为xi(xi 可以表示技能嵌入si或问题嵌入 qi), 将其邻居节点的集合表示为 Ni,则第 l 层 GCN 层的公式可以表示为:

其中 wl 和 bl 是第 l 个GCN层中要学习的总权重偏差,σ是非线性变换,例如ReLU。通过 GCN 进行嵌入传播后,我们得到问题和技能。我们使用~q 和~s 来表示嵌入传播后的问题和技能表示。为了便于实现和更好的并行化,我们为每个批次采样固定数量的问题邻居 nq和技能邻居 ns。在推理过程中,我们多次运行每个示例(对不同的邻居进行采样),并将模型输出取平均,以获得稳定的预测结果。

学生状态演变


对于每个历史时间 t, 我们将问题和回答嵌入连接 (并不是将两个向量直接连在一起) 起来,并通过非线性变换投影到 d 维作为练习的表示, 这里我们使用[ ,]来表示向量连接:

不同练习之间可能存在依赖关系,因此我们需要对整个练习过程进行建模,以捕捉学生状态的变化并了解练习之间的潜在关系。为了模拟学生做练习的顺序行为,我们使用 LSTM 从输入练习表示中学习学生状态:

其中ht、ct、it、ft、ot分别表示隐藏状态、单元状态、输入门、遗忘门、输出门。值得一提的是,这一层对于捕捉粗粒度依赖关系 (例如技能之间的潜在关系等) 很重要,所以我们只是学习一个隐藏状态ht ∈ Rd 作为当前学生状态,其中包含技能的粗粒度掌握状态。

历史回顾模块


在学生的锻炼历史中,相关技能的问题很可能散落在很长的历史记录中。从另一个角度来看,连续的练习可能不会遵循一个连贯的主题。这些现象对传统 KT 方法中的 LSTM 串行建模提出了挑战:

  1. 众所周知,LSTM很难在很长的串行中捕获长期依赖关系,这意味着当前的学生状态ht可能会“忘记”与新目标问题qt相关的历史练习。

  1. 当前学生状态 ht 考虑更多关于最近的练习,这可能包含新目标问题 qt 的噪声信息

当学生在回答一个新问题时,Ta可能会迅速回忆起Ta以前做过的类似问题,以帮助Ta理解新问题。受此行为启发,我们建议选择相关的历史练习(问题-答案对){ei | i ∈ [1, 2, ... , t − 1] } 以更好地表示学生在特定问题 qt 上的能力,即为历史回顾模块

我们开发了两种方法来查找相关的历史练习。第一个是硬选择,即我们只考虑与新问题有相同技能的练习

另一种方法是软选择,即我们通过注意力网络学习目标问题与历史状态之间的相关性,并选择top-k 注意力得分最高的状态:

其中 Ri,t 是注意力函数 f(qi, qt) 的排名,就像余弦相似性一样,Vi,t 是注意力值,v 是过滤不太相关的练习的相似度下限。

广义交互模块


以前的KT方法主要根据学生状态 ht 和问题 qt, 即<ht, qt>之间的交互作用来预测学生的表现。我们将互动概括为以下几个方面:

  1. 我们用<ht, ~qt>来表示学生对问题qt的掌握程度程度,<ht, ~sj>来表示学生对相应技能的掌握程度sj ∈ Nqt,

  1. 我们将当前学生状态的互动推广到历史练习中,这反映了相关的历史掌握,即 <ei, ~qt> 和 <ei,~sj>, ei ∈ Ie,相当于让学生在历史时间步长中回答目标问题

我们尝试其他实现方法, 例如使用历史状态而不是历史练习, 结果表明使用 历史练习会产生更好的性能,因为历史状态包含其他不相关的信息。

然后我们考虑上述所有交互作用进行预测,并定义广义交互作用模块。为了促进相关交互并减少噪声,我们使用注意力网络来学习所有交互作用项的双注意力权重,并计算加权和作为预测:

其中 pt 是正确回答新问题的预测概率,~Nqt 表示 qt 的聚合邻居技能嵌入,我们使用内积来实现函数 g。与在关系图中选择邻居类似,我们通过从这两个集合中采样来设置固定数量的 Ie 和 ~Nqt。

优化器


为了优化我们的模型,我们使用梯度下降法更新模型中的参数,通过最小化回答正确的预测概率和学生回答的真实标签之间的交叉熵损失来更新模型中的参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/168898.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计网必会:电路交换和分组交换

电路交换和分组交换的概念和区别&#xff0c;为什么分组交换更有效&#xff1f; 电路交换&#xff1a;由于电路交换在通信之前要在通信双方之间建立一条被双方独占的物理通路&#xff08;由通信双方之间的交换设备和链路逐段连接而成&#xff09; 特点是源和目标点建立起名副其…

C语言中的void*是什么?

目录1.void *是什么2.void*的解引用3.void*类型的应用场景1.void *是什么 我们之前学过许多类型的指针变量&#xff0c;如整形指针&#xff0c;字符指针&#xff0c;甚至数组指针&#xff0c;函数指针等。 int a 10; int *pa &a;//整形指针pa接受一个整形变量a的地址但…

阻塞队列-BlockingQueue

一、BlockingQueue介绍BlockingQueue 继承了 Queue 接口&#xff0c;是队列的一种。Queue 和 BlockingQueue 都是在 Java 5 中加入的。阻塞队列&#xff08;BlockingQueue&#xff09;是一个在队列基础上又支持了两个附加操作的队列&#xff0c;常用解耦。两个附加操作:支持阻塞…

Win10 每天蓝屏多次,蓝屏代码0x3B:SYSTEM_SERVICE_EXCEPTION

环境&#xff1a; 联想E14笔记本 Win10 专业版 问题描述&#xff1a; Win10 每天发生蓝屏多次&#xff0c;蓝屏代码0x3B:SYSTEM_SERVICE_EXCEPTION 查看事件查看器&#xff0c;系统日志筛选ID1001的事件,蓝屏多次基本上都是3B这错误代码 解决方案&#xff1a; 1.禁用AMD显…

vue3 pinia 状态管理(清晰明了)

前言 最近学习cloud项目&#xff0c;前端使用到 vue3 ts 等技术&#xff0c;其中包括 pinia &#xff0c;从一脸懵到渐渐清晰过程&#xff0c;在此记录一下&#xff0c;若有不足&#xff0c;希望大佬可以指出。 中文官方文档&#xff1a;https://pinia.web3doc.top/ 一、什…

2022年海南省职业院校技能大赛“网络安全”比赛任务书

2022年海南省职业院校技能大赛“网络安全” 比赛任务书 一、竞赛时间 总计&#xff1a;360分钟 二、竞赛任务书内容 &#xff08;一&#xff09;拓扑图 &#xff08;二&#xff09;A模块基础设施设置/安全加固&#xff08;350分&#xff09; 一、项目和任务描述&#xff…

服务器怎么防勒索病毒

行业背景 随着金融行业信息化建设的飞速发展&#xff0c;金融行业信息化系统经过多年的发展建设&#xff0c;目前信息化程度已经达到了较高水平。信息技术在提高管理水平、促进业务创新、提升企业竞争力方面发挥着日益重要的作用。 需求分析 随着金融信息化的深入发展&#…

Linux调试器-gdb使用

目录 1. 背景 2. 开始使用 3. 理解 创建需要调试的代码 debug&&release 4 详细调试 list&#xff0f;l 行号 list&#xff0f;l 函数名 r或run break(b) info b(reak) d num disable breakpoints enable breakpoints n (next) s&#xff08;step&#xff09; breaktrac…

ConcurrentHashMap 的优化及其与HashTable, HashMap的区别

目录 1.优化一:减小锁粒度 2.优化二:只针对写操作加锁 3.优化三:CAS 4.优化四:扩容方式 HashMap是线程不安全的,HashTable是线程安全的,关键方法加锁了.我们更推荐的是ConcurrentHashMap ,更优化的线程安全哈希表 接下来我们总结一下ConcurrentHashMap 进行了哪些优化,比H…

Nessus 扫描log4J漏洞

系列文章 Nessus介绍与安装 Nessus Host Discovery Nessus 高级扫描 Nessus 扫描web服务 Nessus 扫描log4J漏洞 1.扫描环境搭建 1.centos7 安装装宝塔面板 2.面板里下载docker 3.进入centos检查docker是否生效 docker --version4.安装docker-compose Docker Compose是一个…

使用WordPress搭建知识库门户网站的优缺点

使用知识库软件进行知识管理&#xff0c;帮助企业节约成本&#xff0c;为客户提供一个自助服务平台&#xff0c;提高客户满意度&#xff0c;据调查&#xff0c;73%的客户宁愿在网上搜索答案&#xff0c;而不是给工作人员打电话或者发短信&#xff0c;搭建一个知识库可能会耗费时…

TCP如何保证可靠传输,为什么应用层还需要确认机制

TCP的可靠传输实现 以下区别&#xff1a; 1、可靠传输&#xff08;有序&#xff0c;保证对方一定接受到&#xff09; 2、流量控制 这两个功能都是依靠滑动窗口来实现的 TCP实现可靠传输依靠的有 序列号、自动重传、滑动窗口、确认应答等机制。 序列号 首先我们说下序列号&am…

文件操作相关知识

1、为什么使用文件 前面我们在实现通讯录时&#xff0c;每次运行结束后&#xff0c;我们所存储的数据都会消失。这是因为我们将数据存储在栈区、堆区等内存上&#xff0c;而内存是不具有持久性的&#xff0c;程序退出时&#xff0c;权限还给操作系统&#xff0c;这些数据就会丢…

Unity 3D PC平台发布|| Unity 3D Web 平台发布||Unity 3D Android平台发布

Unity 3D PC平台发布 PC 是最常见的游戏运行平台。 随着欧美游戏的崛起&#xff0c;PC 平台随之发生游戏登陆大潮。 在 PC 平台上发布游戏的步骤&#xff1a; 打开要发布的 Unity 3D 工程&#xff0c;执行 File → Build Settings 菜单命令。在 Platform 列表框中选择 PC&am…

Jenkins, docker-compose动态修改镜像版本升级部署

docker-compose镜像版本动态控制 提取.env文件进行配置通用环境变量 # 当前机器用户的home路径 HOST_HOME/home/guimu # 上传文件临时路径 TMP_DATA_PATH${HOST_HOME}/tempdata/ # media的home路径 MEDIA_HOME/media # 挂载的mysql的data路径 MYSQL_DATA_PATH${HOST_HOME}/my…

go 函数或者方法参数调用的过程

前言 最近做项目&#xff0c;使用go开发&#xff0c;但是在发生函数调用传参数时&#xff0c;对指针的指针的传递有难以理解的代码&#xff0c;就此分析过程。尤其是对于多重指针作为参数&#xff0c;而且对于一些内置函数的修改逻辑也需深入的理解。 1. demo package slice…

client-go源码学习(四):自定义Controller的工作原理、WorkQueue

本文基于Kubernetes v1.22.4版本进行源码学习&#xff0c;对应的client-go版本为v0.22.4 4、自定义Controller的工作原理 Controller中主要使用到Informer和WorkQueue两个核心组件 Controller可以有一个或多个Informer来跟踪某一个resource。Informer跟Kubernetes API Server保…

安装 Visual Studio Code、MinGW-w64、CMake

文章目录1.安装 Visual Studio Code1.1 下载1.2 安装2.安装 MinGW-w642.1 下载2.2 解压到合适的目录下2.3 添加到环境变量2.4 测试是否安装成功3.安装 CMake3.1 下载3.2 解压到合适的目录下3.3 添加到环境变量3.4 测试是否安装成功1.安装 Visual Studio Code 1.1 下载 Visual…

Options API

computed计算属性 1、复杂data的处理方式 我们知道&#xff0c;在模板中可以直接通过插值语法显示一些data中的数据。 但是在某些情况&#xff0c;我们可能需要对数据进行一些转化后再显示&#xff0c;或者需要将多个数据结合起来进行显示&#xff1b; 比如我们需要对多个d…

自动驾驶控制算法之车辆纵向控制(project)

本文为深蓝学院-自动驾驶控制与规划-第二章作业 目录 1 project introduction 2 思路提示 3 解决积分饱和的方法 3.1 IC 积分遇限削弱法 3.2 BC 反馈抑制抗饱和 4 ROSLGSVL联合仿真 1 project introduction 本项目希望大家根据PID控制方法实现一个巡航控制系统。我们已…