【论文阅读】Deep KnowLedge Tracing

摘要

知识追踪是机器在学生与作业互动之间,建模知识状态
本文采用循环神经网络
Deep深度神经网络/时间维度深
DKT不需要专家手动给每道题打上知识点标签,直接从学生做题数据自动学习题目关系

引言

  • 定义知识追踪任务,根据学生历史交互x0…xt,预测下一次交互
  • 定义交互形式{题目编号,对错}
    在这里插入图片描述
    根据学生五十道题的做题历史,一步步记录学生对不同知识点的掌握情况,借此推测下一道题答题正确率,最后针对50道题目求出E[p], 是对整个序列的平均预测概率,代表"这个学生在这50道题的学习过程中,平均掌握程度如何",不等于最终状态

相关工作

BKT贝叶斯知识追踪

  • 学生知识认知状态只有掌握与没掌握,不符合认知
  • 一道题目只对应一个概念,不符合现实
  • 只能处理二值响应数据,题目只有对错区分
  • 认为技能一旦学会,永不遗忘

其他的动态概率模型
POMDPs:框架灵活,状态空间巨大,计算不可行
PFA/LFA+集成方法:用AdaBoost、随机森林、神经网络等集成方法能提升效果,但还是依赖准确的知识点标注
IRT + 卡尔曼滤波:思路有趣,但函数形式受限,而且推断潜变量的计算代价比DKT高。

RNN
隐藏状态是高维向量,表达能力强
能利用历史输入为当前预测,具有记忆功能
RNN在语音识别,翻译,图像扫描时序任务表现好,都是序列建模问题

方法

3.1 model
在这里插入图片描述
figure2,循环神经网络,输入学生每步做题记录(当前做了哪道题,是否做对)
隐藏状态就是学生的知识状态,且在时间维度上传递,输出对所有题目预测的正确率
在这里插入图片描述
ht更新知识状态+当前输入+上一步知识状态
yt生成预测,知识状态线性变化之后经过sigmoid得到概率

长短期记忆(LSTM)网络是RNN的一种更复杂的变体,通常更强大。遗忘门控制哪些历史信息保留,哪些淡忘,更适合建模。

3.2输入输出时间序列
题目少:one-hot编码,有M道题目,输入就是长度为2M的向量
{问题一对,问题一错,问题二对,问题二错······}
?为什么不是{问题一对错,问题二对错。。。} !当前题目做错时,输入序列为全0,模型不知道发生了什么
题目多:压缩感知,比如说2M=20000,215=三万,说明十五个维度的随机向量就足够。本质上就是一个查找表:每个交互事件对应一个固定的随机向量,低维但唯一

3.3优化
在这里插入图片描述
损失函数,先从输出向量取出来第qt+1位的概率,也就是预测答对的概率,与真实答案比较衡量差距,作二值交叉熵求损失

教育意义

改进课程设计+发现题目关系

实验

  • 模拟数据:验证DKT能否通过学生做题规律,判断知识点的类别在这里插入图片描述
    AUC是模型正确区分题目答对或者答错的概率
    在这里插入图片描述
    (a)模拟数据集上,RNN和LSTM都可以准确预测隐藏知识点,BKT无法自动学习无标签的知识点
    (b)横轴:把答错预测成答对;纵轴:把答对预测成答对;图线越靠近左上角性能越好
    (c)往未来看八步决定现在给学生出哪道题,让学生知识状态提升最大化

结论

在这里插入图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐