浅谈知识追踪(BKT、IRT、DKT)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

第一次写帖子,就想记录一下自己学习的过程,但不是很想与同一个话题中其他帖子那种进行繁杂的理论说明。可能在结构和内容不是很好,欢迎大家批评指正。
从去年寒假到目前毕业设计完成,也算是初步的了解知识追踪是什么,了解到许多前辈付出的工作。我也会在后来的文章中发一些我在论文阅读过程中记的笔记。


`

一、知识追踪是什么?

简单的说就是让我们用一些算法来对在线教育平台中学生的学习状态进行追踪模拟,达到传统的线下教育中因材施教的效果。
目前主流的几种研究方法:基于贝叶斯的知识追踪(BKT)、项目反应理论(IRT)、基于深度学习的知识追踪(DKT)。若是有足够的时间来对这个课题研究的话,可以考虑考虑认知诊断。

二、具体内容

因为毕业设计是基于深度学习的知识追踪,对于BKT和IRT只是做了结果对比,了解很浅,只能浅谈下几个所用参数

1.基于贝叶斯的知识追踪(BKT)

  • 结构化的贝叶斯知识追踪方法,
    (1) 对于BKT的四个参数进行优化
    (2) 在基础上加上学生自身特征进行优化
    (3) 进行学生特点的聚类,减少BKT的开销
    (4) 动态贝叶斯网络进行优化
    (5) 理论上来说,训练数据有多少个知识点,就有多少组对应的(L0,T,G,S)参数
    • L0:表示学生的未开始做这道题目时,或者为开始连续这项知识点的时候,他的一个掌握程度如何(即掌握这个知识点的概率是多少),这个一般我们可以从 - 训练数据里面求平均值获得,也可以使用经验,比如一般来说掌握的程度是对半概率,那么L0=0.5
    • T :表示学生经过做题练习后,知识点从不会到学会的概率
    • G:表示学生没掌握这项知识点,但是还是蒙对的概率
    • S:表示学生实际上掌握了这项知识点,但是还是给做错了的概率 通过这4个参数,可以构造一个HMM的模型,剩下的事就是训练这个模型

项目反应理论(IRT)

加入一些因素(如:学生正确回答问题 的次数等,教学干预、专家知识信息)
(1) 现 IRT 能体现学生之间和 问题之间差异性
(2) 潜 在 因 素 与 知 识 追 踪 模 型 (Latent Factor-Knowledge Tracing,简称 LF-KT),该模型将项目反映理论与 BKT 方法进行结合,弥补了标准 BKT 方法的不足
(3) IRT 模型也存在一些缺陷,例 如,Wilson 等人[20]指出在 IRT 中学生能力被假定为常量,限制 IRT 模型的追踪 效果
(4) Xt表示的是用户答题记录的独热编码,Ht表示的是用户的知识建模,循环神经网络输出向量Yt表示的是用户接下来做对题目的概率

深度知识追踪(DKT)

相信大家也是一篇《Deep Knowledge Tracing》打开的新世界,大多数对于DKT的帖子都是这篇论文的翻译,所以我在此就不重复。

在这里插入图片描述
(1) BKT 方法、IRT 方法是一种结构化的方法,难以处理在线学习中复杂的 问题,例如处理多知识点的问题
(2)而主流DKT模型(LSTM、RNN)都是用隐含层的向量表示学生对所有知识点的综合掌握情况。
(3)Zhang 等[28]提出的动态键值网络( DKVMN) 模型同时解决了 DKT 方法与 BKT 方法存在的两个问题因此 DKVMN 除了更准确地度量 每个学生知识掌握情况外,
(4)对于深度学习的知识追踪主要研究方向:

  1. 学生自身具有的资源(家庭、天赋、生活环境)
  2. 学生答题过程中的行为(答题次数、求助次数、答题时常)
  3. 多模型融合
  4. 对于知识图谱的建设(GKT)
  5. 认知诊断与知识追踪结合
    详细的对于研究的方向可以参考一下
    《教育大数据中认知跟踪模型研究进展》胡学钢; 刘菲; 卜晨阳
    《基于深度学习的知识追踪研究进展》刘铁园"”陈威’常亮’古天龙’
    《深度学习驱动的知识追踪研究进展综述》梁琨,任依梦,尚余虎,张翼英,王聪

下一期

下一期我准备对动态键值网络进行详细点的讲解。非结构化的知识追踪

### 贝叶斯知识追踪 (BKT) 的参数估计方法 贝叶斯知识追踪(Bayesian Knowledge Tracing, BKT)是一种广泛用于教育数据挖掘中的技术,旨在实时评估学生的学习状态。其核心目标是通过观察学生的答题行为来推断他们对某一知识点的掌握情况。 #### 参数定义 BKT 模型通常由四个关键参数组成: 1. **初始掌握概率 \(P(L_0)\)**:表示学生在第一次接触某个知识点时已经掌握该知识点的概率。 2. **学习速率 \(P(T)\)**:表示学生未掌握某知识点但在后续尝试中学会它的概率。 3. **遗忘率 \(P(F)\)**:表示学生曾经掌握了某知识点但后来又忘记的概率。 4. **猜测率 \(P(G)\)** 和滑脱率 \(P(S)\):分别表示学生尽管未掌握知识点却猜对的概率,以及尽管已掌握知识点但仍做错的概率。 这些参数可以通过最大似然估计法或其他优化算法进行估算[^1]。 #### 参数估计方法 常用的 BKT 参数估计方法包括以下几种: 1. **期望最大化算法(EM Algorithm)** EM 算法是一种迭代优化方法,适用于隐变量模型的参数估计。对于 BKT 来说,学生的实际掌握状态是一个隐藏变量,而观测到的是他们的答题记录。通过反复执行 E 步骤(计算隐藏变量的条件分布)和 M 步骤(更新模型参数),最终可以收敛至一组最优参数[^2]。 2. **梯度下降法** 可以将 BKT 模型的目标函数设定为负对数似然函数,并采用梯度下降法对其进行最小化处理。这种方法的优点在于可以直接控制优化过程中的超参数(如步长、正则项系数等)。然而,在高维空间下可能会遇到局部极小值问题[^3]。 3. **马尔可夫链蒙特卡洛采样(MCMC Sampling)** 当面对复杂的数据集或者需要更精确的结果时,可以考虑使用 MCMC 方法来进行贝叶斯推理。相比于传统频率学派的观点,这种做法允许我们获得关于未知参数后验分布的信息而非仅仅点估计值[^4]。 #### Python 实现示例 下面给出一段简单的 Python 代码片段展示如何利用 scikit-learn 库实现基本版的最大似然估计: ```python from sklearn.mixture import GaussianMixture as GMM import numpy as np def estimate_bkt_parameters(data): """ 使用Gaussian混合模型近似求解BKT参数 :param data: 学生作答序列列表 [[correct/incorrect], ... ] :return: dict {parameter_name -> value} """ gmm = GMM(n_components=2, covariance_type='diag', max_iter=500) # 将输入转换成适合GMM的形式 reshaped_data = np.array([item for sublist in data for item in sublist]).reshape(-1, 1) gmm.fit(reshaped_data) means = gmm.means_.flatten() stds = np.sqrt(gmm.covariances_).flatten() p_guess = min(means) / (min(means)+max(stds)) p_slip = max(means)/(max(means)-min(stds)) result_dict = { 'p_learn': abs((means[1]-means[0])/(stds[1]+stds[0])), 'p_forget':abs((means[1]-means[0])/sum(stds)), 'p_guess':p_guess, 'p_slip':p_slip} return result_dict ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好事(花生)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值