什么是IRT
IRT 是 Item Response Theory(项目反应理论),中文常译为“项目反应理论”或“题目反应理论”。
它常用于把题目按“从易到难”分级,也可以估计学生/用户的能力水平。核心思想是:
题目的难度不是只看答对率,而是结合“作答者能力”和“题目参数”来建模。
最常见的 IRT 模型会估计:
θ:作答者能力,能力越高越容易答对b:题目难度,难度越高越难答对a:题目区分度,题目能不能区分高低能力者c:猜测参数,低能力者靠猜也可能答对的概率
一个常见的三参数模型是:
P(答对) = c + (1 - c) / (1 + e^(-a(θ - b)))
简单理解:
- 如果一个题的
b很低,它是容易题 - 如果
b很高,它是难题 - 通过估计每道题的
b,就可以把题目从易到难排序 - 通过估计每个人的
θ,可以知道其能力水平
所以你说的“从易到难分级(IRT算法)”,大概率指的是:
用 IRT 模型根据用户答题数据估计题目难度,再按难度参数排序或分层。
什么是BKT
BKT 是 Bayesian Knowledge Tracing(贝叶斯知识追踪),常用于判断:学生是否已经掌握某个知识点。
它回答的问题不是“这道题多难”,而是:
这个学生现在会不会这个知识点?
BKT 的核心状态
对每个学生、每个知识点,BKT 通常维护一个隐藏状态:
掌握 / 未掌握
因为我们看不到学生脑子里是否真的掌握,只能通过答题表现来推断,所以它用贝叶斯方法不断更新概率:
P(掌握)
BKT 常见四个参数
-
P(L0):初始掌握概率
学生一开始就会这个知识点的概率。 -
P(T):学习概率
学生经过一次练习后,从“未掌握”变成“掌握”的概率。 -
P(G):猜对概率
学生没掌握,但答对了。 -
P(S):失误概率
学生掌握了,但答错了。
更新逻辑
学生做一道题后,BKT 根据答对/答错更新 P(掌握)。
如果答对:
P(掌握) 会上升
如果答错:
P(掌握) 会下降
然后再考虑一次练习带来的学习效果:
P(掌握 after practice)
举个例子
假设某学生对“分数加法”的掌握概率是:
P(掌握) = 0.40
他答对了一道分数加法题,系统会认为:
他可能更会了,P(掌握) 上升到比如 0.65
再考虑这次练习让他学会了一点:
P(掌握) 可能进一步上升到 0.72
如果连续答对,掌握概率越来越接近 1;如果连续答错,掌握概率会保持较低。
BKT 和 IRT、FSRS 的区别
BKT:学生是否掌握某个知识点
IRT:题目难度与学生能力匹配
FSRS:记忆什么时候会忘,什么时候复习
一句话总结
BKT 是一种用答题对错来动态估计学生“会不会某个知识点”的算法,特别适合知识点掌握追踪和自适应学习路径推荐。
什么是FSRS
见 卡片复习推荐算法介绍——FRSR(Free Spaced Repetition Scheduler)
如何结合IRT、BKT、FSRS
可以把三者组合成一个完整的自适应学习系统:
BKT:判断学生是否掌握某个知识点
IRT:判断题目难度和学生能力是否匹配
FSRS:判断什么时候该复习,防止遗忘
一个合理架构是:
学生做题/复习
↓
记录结果:对错、用时、自评、题目、知识点
↓
BKT 更新知识点掌握概率
↓
IRT 更新学生能力 θ 和题目难度 b
↓
FSRS 更新记忆稳定度、难度、下次复习时间
↓
推荐下一题/下一次复习
三者各自负责什么
| 模型 | 负责的问题 | 输出 |
|---|---|---|
| BKT | 这个知识点会不会 | P(mastery) |
| IRT | 这道题对学生难不难 | P(correct)、题目难度 b、能力 θ |
| FSRS | 什么时候会忘 | retrievability、stability、next_review |
怎么一起用
-
先用 BKT 判断知识点掌握
如果某知识点
P(mastery)很低,系统应该继续安排基础题。P(mastery) < 0.6 → 继续学习/练习 P(mastery) > 0.85 → 进入复习或提高难度 -
再用 IRT 选合适难度的题
在同一个知识点下,选择难度接近学生能力的题。
item_difficulty ≈ student_ability太简单会浪费时间,太难会挫败。
-
最后用 FSRS 安排复习时间
对已经掌握的知识点或卡片,用 FSRS 判断什么时候复习。
retrievability 低 → 近期复习 stability 高 → 间隔拉长
一个推荐策略
如果 P(mastery) 低:
用 BKT 驱动学习路径,安排基础题
如果 P(mastery) 中等:
用 IRT 选略高于当前能力的题,促进提升
如果 P(mastery) 高:
用 FSRS 安排间隔复习,防止遗忘
更具体一点
可以给每个“学生-知识点”维护三类状态:
BKT:
mastery_probability
IRT:
ability_theta
FSRS:
stability
difficulty
retrievability
next_review_at
每次学生作答后:
1. 根据对错更新 BKT 的 mastery_probability
2. 根据题目难度和结果更新 IRT 的 ability_theta
3. 根据答题质量更新 FSRS 的 stability/difficulty
4. 根据三者输出决定下一步:
- 学新内容
- 继续练习
- 提高难度
- 安排复习
简单产品规则示例
优先级 1:FSRS 到期复习
如果某知识点 retrievability < 0.8,先复习
优先级 2:BKT 补薄弱知识点
选择 P(mastery) 最低的知识点
优先级 3:IRT 选题
在该知识点下选择难度接近 θ 的题
一句话总结:
BKT 决定“学哪个知识点”,IRT 决定“做哪道题”,FSRS 决定“什么时候复习”。