FSRS算法准备
【摘要】 今天开始为FSRS算法切换做准备。核心工作是整理现有的复习记录,让它们符合FSRS训练所需的格式。现在的SM-2复习记录存在revlog表里,字段包括:卡片ID、复习时间、评分(1-5)、当时的间隔天数。FSRS训练需要更细的数据:每次复习时卡片的稳定性、难度、可提取性这三个参数的历史快照。SM-2没记录这些,所以需要从已有的复习数据里反推。写了个脚本,把过去一个月的复习记录逐条处理,按FS...
今天开始为FSRS算法切换做准备。核心工作是整理现有的复习记录,让它们符合FSRS训练所需的格式。
现在的SM-2复习记录存在revlog表里,字段包括:卡片ID、复习时间、评分(1-5)、当时的间隔天数。FSRS训练需要更细的数据:每次复习时卡片的稳定性、难度、可提取性这三个参数的历史快照。SM-2没记录这些,所以需要从已有的复习数据里反推。
写了个脚本,把过去一个月的复习记录逐条处理,按FSRS的公式回算出每张卡片每次复习时的DSR近似值。跑了一遍,400多条记录全部转换完成,存进了一张新的fsrs_training_data表。
同时做了两件事:
-
写了FSRS的JS实现:从GitHub上找了开源的
ts-fsrs库,研究了一下它的接口。核心是fsrs.repeat()方法,传入当前卡片的DSR和评分,返回更新后的DSR和下次复习间隔。 -
加了一个“算法切换”开关:在设置页加了一个选项,用户可以选择用SM-2还是FSRS。默认还是SM-2,等测试稳定后再切默认。
测试了一轮:用我自己的账号跑了100条模拟复习,对比两种算法的调度结果。FSRS给出的间隔普遍比SM-2长一些,说明它认为我对卡片记得更牢。这个判断准不准,得等实际用一段时间才知道。
明天继续观察数据,同时把卡组搜索的细节再优化一下。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)