FSRS算法准备

举报
知学题库 发表于 2026/09/17 18:25:52 2026/09/17
【摘要】 今天开始为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)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。