知识追踪入门系列-论文资料汇总

2023-05-16

Paper : 知识追踪相关论文 

下载论文和代码见reference第一个链接

  •  Deep Knowledge Tracing:  

首次提出将RNN用于知识追踪,并能够基于复杂的知识联系进行建模(如构建知识图谱)

  • Deep Knowledge Tracing and Dynamic Student Classification for Knowledge Tracing(DKT-DSC)

跟第一篇论文比较相似,都用到了 LSTM,不同的是这篇论文还考虑了将学生进行分类,在进行预测的时候也有不同,

  • How Deep is Knowledge Tracing

 探究DKT利用到的统计规律并拓展BKT,从而使BKT拥有能够与DKT相匹配的能力

  • Going Deeper with Deep Knowledge Tracing

 对DKT和PFA,BKT进行了模型比较,对DKT模型能碾压其他两种模型的结果进行了怀疑并加以论证,进一步讨论了原论文能够得出上述结果的原因,对进一步使用DKT模型提供了参考。

  • Incorporating Rich Features Into Deep Knowledge Tracing  

对DKT使用上进行数据层扩展,扩展学生和问题层的数据输入,包括结合自动编码器对输入进行转换

  • Addressing Two Problems in Deep Knowledge Tracing viaPrediction-Consistent Regularization

 指出DKT模型现存缺点:对输入序列存在重构问题和预测结果的波动性,进而对上述问题提出了改善方法

  • Exercise-Enhanced Sequential Modeling for Student Performance Prediction  

将题面信息引入,不仅作为输入送入模型,而且将题目编码后的向量计算cosine相似度作为atention的socre

  • A Self-Attentive model for Knowledge Tracing   使用Transformer应用于知识追踪
  •  《Knowledge Tracing Machines: Factorization Machines for Knowledge Tracing》

使用传统的机器学习方法 FM 进行知识追踪,想法很独特,发表于 AAAI-2019 

  • 《Dynamic Key-Value Memory Networks for Knowledge Tracing》

使用键值对记忆网络进行知识追踪,重点学习记忆网络是如何动态更新的  

  • 《Knowledge Tracing with Sequential Key-Value Memory Networks》 使用了改进过的LSTM 和记忆网络进行知识追踪

Graphic neural network for knowledge tracing 该论文首次将图神经网络应用于知识追踪,

 

 

reference:https://github.com/sulingling123/Knowledge_Tracing

论文阅读笔记 https://sulingling123.github.io/2019/08/06/深度知识追踪/

未完待续。。。。。。

有关DKT实现找到了pytorch版本的具体实现

模型代码已经发布在github上,可点击这里查看和下载具体代码。

或者可以直接通过如下命令直接下载到本地:

git clone https://github.com/chsong513/DeepKnowledgeTracing-DKT-Pytorch.git

具体运行和使用方法参考GitHub项目上ReadMe。

项目结构-DKT

在DKT文件夹下包括两个文件夹:KTDataset和KnowledgeTracing。

数据集-KTDataset

KTDataset文件夹下有6个常用的知识追踪数据集,数据都已经处理成三行格式:

第一行:答题数
第二行:题目编号
第三行:答题结果,0表示错,1表示对

举例:

Note:可根据需要,按照数据格式自行添加新的数据集。

模型结构-KnowledgeTracing

模型的整个流程都在KnowledgeTracing目录下,包括模型、参数设置、数据处理、模型训练和评估,分别在四个子目录下:model, Constant,data,evaluation。

参数设置-Constant

Constant下主要设置一些参数和超参数,超参数也分为四大块:数据集存储路径、数据集、题目数、模型超参数。

数据集存储路径


1
  

Dpath = '../../KTDataset'
  

数据集:一共包括6个数据集


1
2
3
4
5
6
7
8
  

datasets = {
    'assist2009' : 'assist2009',
    'assist2015' : 'assist2015',
    'assist2017' : 'assist2017',
    'static2011' : 'static2011',
    'kddcup2010' : 'kddcup2010',
    'synthetic' : 'synthetic'
}
  

题目数:表示每个数据集里面题目的数量


1
2
3
4
5
6
7
8
  

numbers = {
    'assist2009' : 124,  
    'assist2015' : 100,
    'assist2017' : 102,
    'static2011' : 1224, 
    'kddcup2010' : 661,  
    'synthetic' : 50
}
  

模型超参数:主要包括所用数据集、输入输出维度、学习率、最大步长、学习周期等。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  

DATASET = datasets['static2011']
NUM_OF_QUESTIONS = numbers['static2011']
# the max step of RNN model
MAX_STEP = 50
BATCH_SIZE = 64
LR = 0.002
EPOCH = 1000
#input dimension
INPUT = NUM_OF_QUESTIONS * 2
# embedding dimension
EMBED = NUM_OF_QUESTIONS
# hidden layer dimension
HIDDEN = 200
# nums of hidden layers
LAYERS = 1
# output dimension
OUTPUT = NUM_OF_QUESTIONS
  

模型实现-model

模型在model目录下的RNNModel.py文件中实现,模型实际上就是一个简单的LSTM网络,其结构跟DKT原文中所讲述的结构一致,在LSTM模型最后添加了一个线性层和一个sigmoid激活函数。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  

class DKT(nn.Module):
    def __init__(self, input_dim, hidden_dim, layer_dim, output_dim):
        super(DKT, self).__init__()
        self.hidden_dim = hidden_dim
        self.layer_dim = layer_dim
        self.output_dim = output_dim
        self.rnn = nn.RNN(input_dim, hidden_dim, layer_dim, batch_first=True,nonlinearity='tanh')
        self.fc = nn.Linear(self.hidden_dim, self.output_dim)
        self.sig = nn.Sigmoid()

    def forward(self, x):
        h0 = Variable(torch.zeros(self.layer_dim, x.size(0), self.hidden_dim))
        out,hn = self.rnn(x, h0)
        res = self.sig(self.fc(out))
        return res
  

数据处理-data

在data目录下包括三个文件:readdata.py、DKTDataSet.py、dataloader.py。它们的作用分别是定义数据的读取、pytorch框架下的数据集定义、以及pytorch框架下的dataloader的构造。

readata: 在readata.py文件中,定义了一个类:DataReader,从名字可以看出这是一个用来读取数据的类。其中包含两个函数getTrainData()和getTestData(),分别是用来读取训练数据和测试数据。两个函数的定义其实一模一样,只是名字不一样用来区分训练和测试数据,这样的写法有些冗余,后面会再做一些优化。


1
2
3
4
5
6
7
8
9
10
11
  

class DataReader():
    def __init__(self, path, maxstep, numofques):
        self.path = path
        self.maxstep = maxstep
        self.numofques = numofques

    def getTrainData(self):
        ...

    def getTestData(self):
        ...
  

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

知识追踪入门系列-论文资料汇总 的相关文章

随机推荐

  • MATLAB图像处理基本操作(1)

    matlib软件巨大 xff0c 没有安装 找了几个在线网址 http www compileonline com execute matlab online php https octave online net 从文件读取图像 a xf
  • Python学习系列之类的定义、构造函数 def __init__

    python def init self name等多参数 def init self 常见的两种类的定义方式如下 第一种 class Student def init self 两者之间的区别 self name 61 None self
  • ChatGPT,爆了!

    这段时间真是太刺激了 xff0c AI领域几乎每天都会爆出一个超震撼的产品 xff0c 有一种科幻马上要成现实的感觉 不知道大家朋友圈是什么样 xff0c 在整个创业的圈子里面 xff0c 几乎全是 AI 相关 就连 N 多年 xff0c
  • 分类回归模型评估常见方法及ROC AUC

    目录 模型评估常见方法 ROC和AUC定义 sklearn计算ROC具体实现 计算ROC需要知道的关键概念 1 分析数据 2 针对score xff0c 将数据排序 3 将截断点依次取为score值 3 1 截断点为0 1 sklearn
  • Coursera 吴恩达《Machine Learning》课堂笔记 + 作业

    记录一下最近学习的资源 xff0c 方便寻找 xff1a Github 上已经有人把作业整理成为 Python 的形式了 有 py 和 ipynb 两种格式 https github com nsoojin coursera ml py h
  • tensflow学习小知识tf.train.exponential_decay

    tf train exponential decay是tensflow1 X版本的2 版本使用以下语句 tf compat v1 train exponential decay 将指数衰减应用于学习率 tf compat v1 train
  • PyTorch学习系列之PyTorch:nn和PyTorch:optim优化

    PyTorch xff1a nn 在构建神经网络时 xff0c 我们经常考虑将计算分为几层 xff0c 其中一些层具有可学习的参数 xff0c 这些参数将在学习过程中进行优化 在TensorFlow xff0c 像包 Keras xff0c
  • tf.gather()用法详解

    tf gather params indices validate indices 61 None axis 61 None batch dims 61 0 name 61 None 请注意 xff0c 在CPU上 xff0c 如果找到超出
  • 代码学习之Python冒号详解

    最近看代码发现对冒号用法理解不够透彻 xff0c 记录学习一下 xff1a 1 冒号的用法 1 1 一个冒号 a i j 这里的i指起始位置 xff0c 默认为0 xff1b j是终止位置 xff0c 默认为len a xff0c 在取出数
  • Jupyter Notebook导入和删除虚拟环境 超详细

    记录一下Jupyter Notebook导入和删除虚拟环境的步骤 xff0c 网上博客参差不齐 xff0c 每次找好几个才看到简明容易理解的 方法一步骤 为不同的环境配置kernel 有时候使用conda命令创建了新的python环境 xf
  • tf.expand_dims用法详解

    看官方讲解一些博客感觉一直不是很懂 xff0c 下面是我的个人理解结合官方文档 xff0c 有问题欢迎指出 tf expand dims tf expand dims input axis 61 None name 61 None dim
  • argparse 命令行选项、参数和子命令解析器

    最近看到很多论文代码都是用解析器写的 argparse 命令行选项 参数和子命令解析器 argparse 模块可以让人轻松编写用户友好的命令行接口 程序定义它需要的参数 xff0c 然后 argparse 将弄清如何从 sys argv 解
  • torch.unsqueeze和 torch.squeeze() 详解

    1 torch unsqueeze 详解 torch unsqueeze input dim out 61 None 作用 xff1a 扩展维度 返回一个新的张量 xff0c 对输入的既定位置插入维度 1 注意 xff1a 返回张量与输入张
  • Android中获取唯一的id

    文章目录 Android唯一设备ID现状IMEIMAC地址唯一Id实现方案那些硬件适合硬件标识工具类 Android唯一设备ID现状 设备ID xff0c 简单来说就是一串符号 xff08 或者数字 xff09 xff0c 映射现实中硬件设
  • debian虚拟机下如何安装增强功能

    1 安装gcc和kernel headers gcc有可能默认安装的有 xff08 如果没有还需要安装gcc xff09 xff0c 但是还需要安装build essential sudo apt get install build ess
  • PyTorch学习系统之 scatter() 函数详解 one hot 编码

    torch Tensor scatter scatter 和 scatter 的作用是一样的 xff0c 只不过 scatter 不会直接修改原来的 Tensor xff0c 而 scatter 会 torch Tensor scatter
  • 最新RNN相关模型

    最近在看最新RNN相关模型 找到很多论文 Fundamentals of Recurrent Neural Network RNN and Long Short Term Memory LSTM network 递归神经网络 xff08 R
  • 知识追踪模型的应用

    背景 MOOC 近年来 xff0c 随着在线学习系统在教育环境中越来越普及 xff0c 在线学习人数越来越多 xff0c 教育者不可能追踪每一个学习者的知识状态并提供个性化的学习指导 xff1b 在线学习系统中的知识需要学习者通过各种冗余信
  • 自然语言处理之语料库

    语料库 定义 xff1a 语料库 corpus 就是存放语言材料的仓库 语言数据库 xff09 语料库技术的发展 早期 xff1a 语料库在语言研究中被广泛使用 xff1a 语言习得 方言学 语言教学 句法和语义 音系研究等 沉寂时期 xf
  • 知识追踪入门系列-论文资料汇总

    Paper xff1a 知识追踪相关论文 下载论文和代码见reference第一个链接 Deep Knowledge Tracing 首次提出将RNN用于知识追踪 xff0c 并能够基于复杂的知识联系进行建模 xff08 如构建知识图谱 x