想象你是一位校医。每天都有学生来看病,他们不会直接告诉你“我得了什么病”,只会说“我咳嗽”“我发烧”。你必须在看不到病因的情况下,根据症状做出诊断。对于AI辅导老师来说,难题如出一辙:屏幕上,学生答对了这道题——他是真的懂了,还是蒙对的?下一道题答错了——是没掌握,还是粗心失误?真正重要的“掌握状态”藏在脑子里,看不见摸不着,你能看到的只有一串串答题记录。 贝叶斯知识追踪(Bayesian Knowledge Tracing,简称BKT)就是这位“AI校医”的看诊手册。它把学生的知识状态当作一个隐藏变量,像病情一样,通过每一次做题(症状)来不断修正判断。它不纠结“这次对错”,而是计算“你有多大可能已经学会”。在此基础上,BKT还从海量病例中总结临床经验(参数估计),在关键时刻给出治疗方案(教学决策)——真正做到因材施教。 这套方法从1995年诞生至今,一直是自适应学习系统的核心引擎。无论你未来做智能题库、在线辅导还是教育数据挖掘,“用观测推断隐变量”的思维框架都会成为你的强力武器。

岗位关联

学习BKT,等于掌握AI自适应教育的“决策大脑”。它将概率建模、隐变量推断与教育实践连成一条完整的价值链条,是AI+教育从业者的必修核心课。

目录
  1. 可视化演示
  2. 何谓BKT
  3. 概率框架
  4. 参数字典
  5. 推断算法
  6. 参数估计
  7. 实践改进
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

演示隐马尔可夫模型推断学生知识状态,观察答题序列如何更新掌握概率,理解BKT四参数与前向算法。

本节配有交互动效(进入视口后自动加载,约 3KB)。

HMM状态推断 隐状态L:掌握程度 观测:答对OK P(L_t|O) 每次答题更新掌握概率

何谓BKT

校园诊所里来了一位新病人小明。他低头说:“老师,这道题我答对了。”校医点点头,却没有急着记下“病情好转”。因为她知道,答对不等于会,可能只是蒙的;答错也不等于不会,可能是看错了题目。真正重要的“知识掌握状态”,就像藏在皮肉之下的病因,无法直接观察。

这正是贝叶斯知识追踪(BKT)要解决的问题。BKT诞生于1995年,由Corbett和Anderson在智能导师系统的研究中提出。它的核心思想只有一句话:把“学生是否掌握某技能”视作一个隐藏变量,借助“答题对错”这个可见表现来推断它的真实取值。在BKT看来,每次答题都是一次“身体检查”:先根据上一次的掌握状态预测这次表现,再根据实际表现修正判断,周而复始,形成一条不断逼近真相的“诊断曲线”。

在BKT中,知识状态用一个二值变量表示,“1“代表已掌握,”0“代表未掌握。这就像医生的诊断结论只有”有病“和”没病”两种,虽然现实更复杂,但先二分,才能做出清晰判断。

你看,校医从不指望一眼看穿病情,而是靠着“观察—推断—再观察”的循环,一次次逼近真相。BKT 所做的,正是把医生的经验浓缩成数学公式。

Zt∈{0,1},t=1,2,…,N\displaystyle Z_t \in \{0, 1\}, \quad t = 1, 2, \ldots, N
这个式子是 BKT 的“世界观”:学生的知识状态是一个随时间变化的隐变量,取值只有 0 或 1,下标 t 表示这是第几道题。
  1. 状态取值$Z_t$ 表示第 $t$ 次练习时的知识状态,只能取两个值——0 表示“未掌握”,1 表示“已掌握”。
    Zt∈{0,1}Z_t \in \{0, 1\}
  2. 时间下标$t$ 代表答题序号,从 1 数到 $N$,像医生每次记录体温的时间点。
    t=1,2,…,Nt = 1, 2, \ldots, N
  3. 序列长度$N$ 表示一共做了 $N$ 道题,答题越多,诊断依据越充分。
    N∈N+N \in \mathbb{N}^+

概率框架

校医明白,病情不是静止的——病人今天没发烧,明天可能高烧;今天吃不下饭,明天可能食欲恢复。同样,学生的知识状态也会随练习发生变化:上一题不会,做完这题可能就会了。BKT 想要描述这种动态变化,就需要一个“病情随时间变化的模型”。

BKT的数学外壳,正是通信与统计领域赫赫有名的隐马尔可夫模型(HMM)。它用两层结构描述学习过程:上层是看不见的知识状态,像地下暗河;下层是看得见的答题表现,像河面上的水花。暗河改变流向会影响水花,但我们只能通过水花来猜测暗河。

状态之间的变化由转移概率控制:如果上一题还“未掌握”,这题结束后“学会了”的概率就是 P(T)。而观测层上,如果学生“已掌握”,答对的概率是 1 减去失误率 P(S)。用一句话理解:状态决定表现,但表现不等于状态。

有了这套“病情发展模型”,校医就可以对未来说“如果现在没病,明天发病的概率是 P(T)”;对当下说“如果真病了,检测呈阳性的概率是 1-P(S)”。

P(Zn=0∣Zn−1=0)=1−P(T),P(Xn=1∣Zn=1)=1−P(S)\displaystyle P(Z_n = 0 \mid Z_{n-1} = 0) = 1 - P(T), \quad P(X_n = 1 \mid Z_n = 1) = 1 - P(S)
第一个式子说“没学会的人下一题还是不会的概率是多少”,第二个式子说“学会的人答对这题的可能性是多少”。它们共同构成 HMM 的两大核心:状态转移与观测发射。
  1. 未掌握保持$P(Z_n = 0 \mid Z_{n-1} = 0) = 1 - P(T)$ 表示上一题不会的学生,做完这题后仍然不会的概率,等于学习转移概率的补数。
    P(Zn=0∣Zn−1=0)=1−P(T)P(Z_n = 0 \mid Z_{n-1} = 0) = 1 - P(T)
  2. 掌握者答对$P(X_n = 1 \mid Z_n = 1) = 1 - P(S)$ 表示学生确实掌握了该知识点时,答对这道题的概率,等于 1 减去失误概率。
    P(Xn=1∣Zn=1)=1−P(S)P(X_n = 1 \mid Z_n = 1) = 1 - P(S)
  3. 状态与观测$Z_n$ 是隐变量(真实掌握状态),$X_n$ 是观测变量(答题对错)。观测由状态决定,但中间隔着“失误”和“猜测”两层噪声。
    Xn⊥其他∣ZnX_n \perp \text{其他} \mid Z_n

参数字典

校医的诊室里挂着一张“临床经验表”:当地感冒发生率、发烧时测出体温升高的概率、喉咙红肿对诊断的参考价值……这些数字来自长期积累。BKT 也有这样一张经验表,四个参数缺一不可。

第一个参数是 P(L0),表示学生在开始练习前就掌握该知识点的概率——相当于病人的基础体质,有人底子好,有人白纸一张。第二个是 P(T),表示做完一题后从“未掌握”变为“掌握”的概率,相当于“做一题就学会一点”的治疗效果。第三个是 P(G),猜测概率,指学生明明不会,却蒙对了答案,像病人没病但化验单假阳性。第四个是 P(S),失误概率,指学生明明会,却因粗心做错,像真有病却没查出来。

有了这四个参数,就可以预测学生答对一道题的概率:要么“掌握且没失误”,要么“没掌握但蒙对”。两种情景各算各的账,加起来就是总答对率。

四个参数联手,校医就能给每个学生算出“答对概率”——这比直接说“你会”或“你不会”更精细,因为它自带“几分把握”。

P(Correctn)=P(Ln)(1−P(S))+(1−P(Ln))P(G)\displaystyle P(\text{Correct}_n) = P(L_n)(1 - P(S)) + (1 - P(L_n))P(G)
这是 BKT 最有名的公式:答对概率 = 掌握者答对概率 + 未掌握者猜对概率。它解释了为什么“会做”和“做对”之间永远隔着一层纱。
  1. 掌握且做对$P(L_n)(1 - P(S))$ 表示第 $n$ 题时学生确实掌握,并且没有发生失误的概率。
    P(Ln)(1−P(S))P(L_n)(1 - P(S))
  2. 未掌握但蒙对$(1 - P(L_n))P(G)$ 表示学生确实没掌握,但凭猜测答对了这题的概率。
    (1−P(Ln))P(G)(1 - P(L_n))P(G)
  3. 总答对概率把“真会”和“蒙对”两种互斥情况相加,得到观测到“答对”的边缘概率。
    P(Correctn)=P(掌握且做对)+P(未掌握但蒙对)P(\text{Correct}_n) = P(\text{掌握且做对}) + P(\text{未掌握但蒙对})

推断算法

真正的看诊开始了。学生答对了第一题,校医要回答:他在多大程度上是因为真正会做?又有多少是碰运气?这就要用到贝叶斯公式,把“做题结果”转化为“对掌握状态的更新”。

BKT 的推断分两步走。第一步:观测更新。答对时,掌握概率向上调整;答错时,掌握概率向下调整。但调整多少,不是拍脑袋定的,而由 P(G) 和 P(S) 共同决定。第二步:转移更新。做完一题后,即使刚才还不会,也有 P(T) 的概率学会,所以掌握概率还要再加上“刚学会”的那部分。

以答对为例,观测更新用下面的贝叶斯后验公式计算。

每一次答题结束,校医手里的“掌握概率”就刷新一次。她不需要打开学生的脑袋,只需要观察、计算、更新——这便是贝叶斯式诊断的优雅之处。

P(Ln∣Xn=1)=P(Ln)(1−P(S))P(Ln)(1−P(S))+(1−P(Ln))P(G)\displaystyle P(L_n \mid X_n = 1) = \frac{P(L_n)(1 - P(S))}{P(L_n)(1 - P(S)) + (1 - P(L_n))P(G)}
这个公式回答了一个关键问题:“看到他答对了,他真正掌握的概率从 P(L_n) 变成了多少?”分子是“掌握且答对”,分母是“答对的总概率”,二者相除就是后验概率。
  1. 分子$P(L_n)(1 - P(S))$ 是“先掌握、再答对”的联合概率,表示证据支持“掌握”的强度。
    P(Ln)(1−P(S))P(L_n)(1 - P(S))
  2. 分母$P(L_n)(1 - P(S)) + (1 - P(L_n))P(G)$ 是“答对”这个观测结果在所有可能情况下出现的总概率,上一节的公式在此复用。
    P(Correctn)P(\text{Correct}_n)
  3. 后验结果分子除以分母,得到“看到答对之后”的掌握概率。只要 $1 - P(S) > P(G)$,这个值就比更新前的 $P(L_n)$ 大。
    P(Ln∣Xn=1)>P(Ln)P(L_n \mid X_n = 1) > P(L_n)

参数估计

校医的经验表从哪来?她翻遍十年病历,统计出“咳嗽+发烧+三天不见好≈肺炎”的规律。BKT 的四个参数同样不能拍脑袋,必须从大量学生的答题数据中“学”出来。可问题来了:我们只看到答题对错,看不到真实掌握状态——这就是带隐变量的参数估计。

最常用的解法是 EM 算法(期望最大化),它专门处理“隐变量+观测数据”的参数估计问题。思路像医生学徒在带教老师面前反复试诊:先按当前经验对每个病例下判断(E步),再根据集体诊断结果整体修正经验值(M步),一轮一轮交替,直到经验值稳定下来。

EM 的目标写成数学式是下面这个迭代过程。

EM 的过程,像一位年轻医生在带教老师面前反复试诊:先按当前经验给病人下判断(E步),再根据误诊记录修正经验(M步),直到诊断水平稳定。值得注意的是,EM 保证收敛,但只保证收敛到局部最优——所以经验丰富的团队会换多组初始值“多试几次诊”。

θ(t+1)=arg⁡max⁡θEZ∼P(Z∣X,θ(t))[ln⁡P(X,Z∣θ)]\displaystyle \theta^{(t+1)} = \arg\max_{\theta} \mathbb{E}_{Z \sim P(Z \mid X, \theta^{(t)})}[\ln P(X, Z \mid \theta)]
这个式子看着复杂,实际只讲了两件事:E 步在第 $t$ 轮参数下补全隐变量的期望值;M 步用补全后的“完整数据”重新估参数,让对数似然最大。
  1. 参数更新$\theta^{(t+1)}$ 是第 $t+1$ 轮迭代后的新参数,它的目标是在所有可能的参数中找一个让似然最大的。
    θ(t+1)=arg⁡max⁡θ⋯\theta^{(t+1)} = \arg\max_{\theta} \cdots
  2. E 步$\mathbb{E}_{Z \sim P(Z \mid X, \theta^{(t)})}$ 表示在固定当前参数 $\theta^{(t)}$ 的情况下,对所有可能的隐变量 $Z$ 求期望,相当于“补充完整数据”。
    Z∼P(Z∣X,θ(t))Z \sim P(Z \mid X, \theta^{(t)})
  3. M 步$\arg\max_{\theta} \ln P(X, Z \mid \theta)$ 表示求解使“观测与隐变量的联合对数似然”最大的参数。
    ln⁡P(X,Z∣θ)\ln P(X, Z \mid \theta)

实践改进

诊断不是终点,治疗才是。校医判断出病情后,要决定:开药、住院,还是回家观察?BKT 的价值同样不止于“知道学生掌握没有”,更在于“接下来该怎么办”。

教学中最常见的手段是设定掌握阈值。当推断出的 P(L) 超过某个数值,就认为学生“掌握了”,可以推送下一难度内容;否则继续巩固练习。

与此同时,研究者们把 BKT 扩展出许多变体:引入题目难度的 PFA、用深度学习替代马尔可夫链的 DKT、结合遗忘曲线的 BKT-FC。它们都在朝着同一个方向努力——让“诊断”更准,“用药”更狠。

至此,校医完成了从“看诊”到“开方”再到“精进医术”的完整循环。BKT 用概率语言证明了一件事:看不见的,不等于不可知;知道得越多,教得越准。

Mastery={1P(Lt)≥θ教学0其他\displaystyle \text{Mastery} = \begin{cases} 1 & P(L_t) \geq \theta_{\text{教学}} \\ 0 & \text{其他} \end{cases}
掌握阈值就像“出院标准”:体温连续三天低于 37.5°C 才能出院。BKT 中,P(L) 达标了就放行,不到就继续“留院观察”。
  1. 掌握判定$P(L_t) \geq \theta_{\text{教学}}$ 表示第 $t$ 次答题后推断出的掌握概率达到了老师设定的标准。
    P(Lt)≥θ教学P(L_t) \geq \theta_{\text{教学}}
  2. 进入下一层$\text{Mastery} = 1$ 代表判定为“已掌握”,系统推送更难的题。
    Mastery=1\text{Mastery} = 1
  3. 继续练习$\text{Mastery} = 0$ 代表“未达标”,系统继续推荐同类题目,收集更多观测再判断。
    Mastery=0\text{Mastery} = 0

AI 应用场景

自适应题库的“智能出题官”

阶段:在线学习决策引擎

解决的问题:传统题库按固定顺序出题,学生会的题反复出现、不会的题永远被跳过,学习效率低。BKT 实时推断每个知识点的 P(L),掌握度高的减少练习、掌握度低的多练多测,让“刷题”变成“精准补弱”。

具体案例:某 K12 数学 App 接入了 BKT 模型,学生每做完一道“一元二次方程”题,后端立即更新 P(L)。当 P(L) 超过 0.9 时,系统自动切入“二次函数”子技能;当 P(L) 低于 0.4 时,推送同知识点的变式题,并在连续 3 次答对后才提升难度。上线三个月后,该模块的平均练习量下降 22%,而测验正确率提升了 11%。

教师的“班级体检报告”

阶段:学情分析与教学辅助

解决的问题:一个老师面对四十名学生,很难及时发现谁在哪个知识点上掉队。BKT 对全班学生的答题序列建模后,可以输出“掌握度最低的 10 名学生 + 各自薄弱知识点”的名单,让教学干预从“凭感觉”变为“看数据”。

具体案例:某中学数学教研组用 BKT 分析初二月考数据,发现 3 班有 8 名学生的“因式分解”P(L) 低于 0.3。老师在周末布置了针对性练习,下一次测验中,这些学生的该知识点均分提升了 15 分。

政法网校的学法考情预警

阶段:在线培训效果评估

解决的问题:司法人员在政务平台上在线学法,经常出现“刷时长、不看课、考不过”的问题。传统平台只能统计登录时长,无法定位知识盲点。BKT 通过答题记录推断每个知识点的掌握度,低于阈值者自动触发专项练习与考试预判。

具体案例:某省政法网校接入 BKT 后,将平台练习题正确率从 68% 提升至 82%,并自动生成“高风险人员名单”推送至单位培训负责人,用于定向督促。这一做法也呼应了政法智能化建设中“因人施训”的数字化转型要求。

Python 演示

python49 行
import random class BKTModel:    """贝叶斯知识追踪模型:用答题表现为学生掌握状态做诊断"""     def __init__(self, p_l0=0.2, p_t=0.25, p_g=0.2, p_s=0.1):        self.p_l0 = p_l0  # 初始掌握概率        self.p_t = p_t    # 学习转移概率        self.p_g = p_g    # 猜测概率        self.p_s = p_s    # 失误概率        self.p_l = p_l0   # 当前掌握概率,随观测更新     def update(self, correct):        # 第一步:根据本题对错做观测更新        if correct:            p_obs = self.p_l * (1 - self.p_s) + (1 - self.p_l) * self.p_g            self.p_l = self.p_l * (1 - self.p_s) / p_obs        else:            p_obs = self.p_l * self.p_s + (1 - self.p_l) * (1 - self.p_g)            self.p_l = self.p_l * self.p_s / p_obs        # 第二步:做完一题后可能会学会,做转移更新        self.p_l = self.p_l + (1 - self.p_l) * self.p_t        return self.p_l     def predict_correct(self):        # 预测下一次答对概率 = 掌握且不失误 + 未掌握但蒙对        return self.p_l * (1 - self.p_s) + (1 - self.p_l) * self.p_g  def simulate_student(true_p_l0, n=10, seed=42):    """模拟一个学生的连续作答过程"""    random.seed(seed)    model = BKTModel(p_l0=true_p_l0)    records = []    for _ in range(n):        correct = 1 if random.random() < model.predict_correct() else 0        model.update(correct)        records.append((correct, round(model.p_l, 3)))    return records  if __name__ == '__main__':    print('=== BKT 诊断报告 ===')    print('参数: P(L0)=0.30, P(T)=0.25, P(G)=0.20, P(S)=0.10')    records = simulate_student(true_p_l0=0.30)    for i, (c, pl) in enumerate(records, 1):        print(f'第{i}题: {"答对" if c else "答错"} -> P(L)={pl:.3f}')    model = BKTModel()    print(f'\n预测新学生下次答对概率: {model.predict_correct():.3f}')
目的:完整实现 BKT 模型的观测更新与转移更新,并模拟一名学生连续做 10 道题后,AI 校医如何一步步修正对其掌握状态的判断。
  1. self.p_l = self.p_l * (1 - self.p_s) / p_obs答对后用贝叶斯公式上调掌握概率,p_obs 是“答对”的总出现概率。
  2. self.p_l = self.p_l + (1 - self.p_l) * self.p_t做完一题后,未掌握部分乘上学习转移率,模拟“做一题学一点”。
  3. correct = 1 if random.random() < model.predict_correct() else 0用模型预测的答对概率生成模拟对错,形成完整的闭环推演。
  4. records.append((correct, round(model.p_l, 3)))记录每步的观测与更新后的掌握概率,用于后续画“诊断曲线”。

常见误区

误区学生答对了一道题,就说“他已经掌握了这个知识点”。做对题和学会知识,难道不是一回事吗?

正解BKT 的核心洞察恰恰是“观测不等于状态”。答对可能是蒙的,对应猜测概率 P(G);答错可能是粗心,对应失误概率 P(S)。就像病人不咳嗽,也可能有肺炎;咳嗽几声,也可能只是呛到了。诊断必须用贝叶斯公式综合证据,而不是凭一次表现下结论。

为何常见:日常直觉里“做对=会做”在简单题上基本成立,人们就忽略了猜测与失误这两层噪声。

误区P(L)=0.7,那就意味着学生有 70% 的概率答对下一题。

正解P(L) 是“知识状态的掌握概率”,而答对概率是 $P(L)(1 - P(S)) + (1 - P(L))P(G)$。例如 P(L)=0.7、P(G)=0.2、P(S)=0.1 时,答对概率是 0.7×0.9 + 0.3×0.2 = 0.69,并不等于 0.7。两者只在“无猜测、无失误”的完美世界里才相等。

为何常见:中文里“掌握程度”和“答题正确率”听起来语义接近,容易被混为一谈。

误区从数据中估计出一组 P(L0)、P(T)、P(G)、P(S),就把它套用在所有学生身上,一劳永逸。

正解标准 BKT 确实假设学生共享参数,但真实学习者的基础、学习速度、粗心程度差异巨大。实际工程中会按学生分群或分层估计参数,甚至为每个学生拟合个性化先验;否则“校医”用全科平均数据给每个人看病,必然误诊。

为何常见:分组估计会增加计算量与工程复杂度,初学者往往为了省事选择全局一套参数。

误区EM 算法迭代几轮后参数稳定了,就认为找到了全局最优参数,放心上线。

正解EM 只保证收敛到局部最优,不保证全局最优。初始参数的选择直接影响结果,实践中的标准做法是多组随机初始化后保留似然最高的那组。就像医生经验再多也可能误诊,重要病例需要多位专家会诊确认。

为何常见:看到损失曲线单调下降,就直觉地以为“数学已经找到最佳答案了”。

误区BKT 是万能模型,选择题、填空题、主观题、开放性作文题都可以直接套用。

正解BKT 的观测通常要求“对/错”二值且可自动判定,最适合客观题。主观题和开放题需要人工评分或 NLP 自动评分后才能转化为二值观测。脱离这个边界,BKT 的推断结果就会失真。

为何常见:初学者看到 BKT 在教育场景的巨大成功,容易忽略它的观测层假设。

面试题

Q1. BKT 中的“隐变量”指的是什么?

单选题 · easy

  • A.学生的答题分数
  • B.学生的知识掌握状态← 正确答案
  • C.题目难度系数
  • D.学生的做题时间

答案:B。BKT 的核心设定是知识状态无法直接观测,只能通过答题表现反推,因此它是“隐变量”。答题分数、难度系数、做题时间都是可观测的外部数据,不属于隐变量。

Q2. BKT 四个参数中,P(G) 表示什么?

单选题 · easy

  • A.掌握知识的概率
  • B.掌握后答对的概率
  • C.未掌握却蒙对的概率← 正确答案
  • D.答错后学会的概率

答案:C。P(G) 全称 Guess,指学生明明没有掌握该知识点,却靠猜测答对的概率。它和 P(S) 分别对应“假阳性”和“假阴性”两类噪声。

Q3. 某学生 P(L)=0.6,P(G)=0.2,P(S)=0.1,预测其下一题答对概率是多少?

单选题 · mid

  • A.0.62← 正确答案
  • B.0.60
  • C.0.54
  • D.0.92

答案:A。答对概率 = P(L)×(1-P(S)) + (1-P(L))×P(G) = 0.6×0.9 + 0.4×0.2 = 0.54 + 0.08 = 0.62。此题的关键是区分掌握概率与答对概率。

Q4. BKT 的概率框架基于以下哪种模型?

单选题 · mid

  • A.朴素贝叶斯模型
  • B.隐马尔可夫模型← 正确答案
  • C.决策树模型
  • D.线性回归模型

答案:B。BKT 使用隐马尔可夫模型(HMM)的双层结构:上层是隐性的知识状态链,下层是显性的答题观测链,通过转移概率与观测概率连接二者。

Q5. 学生答对一道题后,经过贝叶斯更新,P(L) 的变化趋势是?

单选题 · mid

  • A.一定上升← 正确答案
  • B.一定下降
  • C.保持不变
  • D.要看具体情况

答案:A。答对是“掌握”的正面证据。在合理参数下(1-P(S) > P(G)),后验 P(L|答对)必定大于先验 P(L)。就像看到症状好转,病情好转的概率只会增加不会减少。

Q6. EM 算法中,E 步的主要任务是什么?

单选题 · hard

  • A.直接更新参数
  • B.计算期望统计量← 正确答案
  • C.随机初始化状态
  • D.绘制优化曲线

答案:B。E 步(期望步)在固定当前参数的情况下,计算隐变量的后验分布及其期望充分统计量,为 M 步的似然最大化提供“补全后的完整数据”。

Q7. 关于 EM 算法的收敛性,正确的说法是?

单选题 · hard

  • A.全局最优解
  • B.收敛到极大似然估计
  • C.局部最优解← 正确答案
  • D.得到无偏估计

答案:C。EM 迭代保证似然函数单调不减并收敛,但只保证收敛到局部最优。初始参数不同,结果可能不同,因此工程上常用多起点初始化。

Q8. 下列哪些属于 BKT 的典型应用场景?

多选题 · mid

  • A.智能题库选题策略← 正确答案
  • B.学生知识薄弱点诊断← 正确答案
  • C.图像风格迁移
  • D.自适应学习路径规划← 正确答案

答案:ABD。BKT 用于教育场景的题序选择、掌握度推断与路径规划,核心是“根据掌握状态做教学决策”。图像风格迁移属于计算机视觉任务,与知识点追踪无关。

Q9. 关于 BKT 模型,下列说法正确的有?

多选题 · mid

  • A.知识状态属于隐变量← 正确答案
  • B.掌握后不会再遗忘← 正确答案
  • C.失误率越大越易高估
  • D.答题表现是可观测变量← 正确答案

答案:ABD。标准 BKT 假设掌握状态是隐变量且不会退步(无遗忘);答题对错是观测变量。失误率 P(S) 增大时,答对的证据更“珍贵”,P(L) 上升反而更少,导致低估而非高估掌握度。

Q10. 关于 BKT 的扩展模型,正确的说法有?

多选题 · hard

  • A.DKT 利用深度神经网络← 正确答案
  • B.PFA 考虑题目难度因素← 正确答案
  • C.BKT-FC 引入遗忘曲线← 正确答案
  • D.扩展可处理连续特征

答案:ABC。DKT 用循环神经网络替代马尔可夫链,PFA 引入题目难度与尝试次数,BKT-FC 加入遗忘时间因素。扩展模型可以融合更多特征,并非不能处理连续特征,故 D 错误。