- Published on
间隔重复记忆之SM-5
- Authors
- Name
- 万码皆空
SM-5算法说明
将知识拆分长最小单元。
每一个知识点分配一个efactor,初始值为2.5。
使用重复次数和efactor制作一张表,叫做OF Matrix,使用以下公式初始化:
OF(1,EF):=4
for n>1 OF(n,EF):=EF
其中: ◦ OF(n,EF) - efactor和重复次数对应的最优因数。
使用OF Matrix来计算间隔时间:
I(n,EF)=OF(n,EF)*I(n-1,EF)
I(1,EF)=OF(1,EF)
其中: ◦ I(n,EF) - 知识点efactor和重复次数对应的间隔时间。 ◦ OF(n,EF) - OF Matrix中对应重复次数和efactor的值。
评估知识点记忆结果,值为0-5。具体参见SM-2中说明。
每次重复后更新知识点相关efactor,使用以下公式:
EF':=EF+(0.1-(5-q)*(0.08+(5-q)*0.02))
其中: ◦ EF' - 新的efactor ◦ EF - 旧的efactor ◦ q - 记忆质量,值为0,1,2,3,4,5。
如果计算后的efactor小于1.3,则赋值为1.3。
更新OF Matrix中相关值,示范公示如下:
OF':=OF*(0.72+q*0.07)
OF*:=(1-fraction)OF+fractionOF'*
其中:
◦ OF - 新值 ◦ OF' - 临时辅助 ◦ OF - 旧值, ◦ fraction - 用来调整矩阵收敛速度的系数,0-1之间,1为最快。 ◦ EF - 知识点相关efactor, ◦ q - 知识点记忆质量,0-5。
如果记忆质量小于3,则重置该知识点为初始状态(efactor不变),再次记忆该知识点。
如果记忆质量小于4,则再次记忆该知识点。
相关代码及使用示例
NPM
已经发布到了npm,可以直接安装使用:
npm install spaced-repetition.js
GITHUB
Github仓库地址:spaced-repetition.js