← 返回目录


10 1995:超媒体 SuperMemo

学校≠教育≠技能;文凭溢价=80%信号传递+20%人力资本

22 👍 / 3 💬

SM-8 算法在山间小屋中诞生

1995 年,SuperMemo 重写。这是个好时机,可以利用 SM-6 算法采用后四年以来的数据,实现新的间隔重复算法。

1995 年 3 月,在汉诺威的 CeBIT 展会上,我们看到了 Borland 开发的全新开发环境:Delphi。它与旧的 Borland Pascal 完全不可同日而语 ,并为 SuperMemo 开启了数十个开发机会。我们决定按照我的博士论文中描绘的思路重新设计程序。不仅能实现间隔重复之外,我们还想加入知识结构和超媒体。项目不会是一团乱麻,用户将能够建立知识树。告别只有问题、答案、图片、声音的模板,我们希望掌握所有可能的组件类型,这些组件可以聚合成新的超媒体形式来更好表达知识。还有一个梦想,那就是可编程的 SuperMemo,其中开发者编写自己的程序来实现各种各样的练习,包括程序练习、盲打练习或者解一元二次方程。于此同时,我们收集了很多数据,这些数据表明 SuperMemo 中使用的算法可以得到改进。例如,最优系数矩阵的数学性质已经相当明显。

1995 年 5月,我带上我的奔腾电脑,前往波兰南部一处偏远的山上小屋去研究这些想法。那是完全与世隔绝的 100 天,只有Krzysztof Biedalak 的一次简短拜访打断了我,其间我和他重新同步了对未来 SuperMemo 的设想。到 1995 年 9 月,新的算法已经就绪,我在自己的数据上测试了这个算法。回到波兹南后,我开始逐步将我所有的学习过程从 SuperMemo 7 中的多个集合转移到开发出的新环境,我亲切地称为「Genius」。两年后,直到新程序终于可以包含 SuperMemo 7 中的所有功能了,Genius 才成为 SuperMemo 8

开发 SM-8 算法中,最重要的数据是遗忘曲线OF 矩阵数据,通过 SuperMemo 6SuperMemo 7 收集可得。这些数据减少了算法中的猜测成分。开发 SM-8 算法与开发 SM-17 算法(2014-2016) 相比是相当轻松了,开发 SM-17 算法时我有庞大如山的间隔重复历史数据需要处理,而且对精度和优良指标的要求也增加了两倍。SM-17 算法光开发就花了整整两年,然而 SM-8 算法从设计,实现,到充分测试仅用了 100 天。

算法 SM-8 的主要想法:

有趣的是,SM-8 算法并不需要元素有完整的间隔重复历史。记录完整重复历史的功能在 1996 年 2 月才实现。不要求完整历史的好处是容易时间,缺点是,一旦用户在学习过程中进行了手动干预,算法就没有这种干预的记录,也就无法防御不正确数据的输入。二十年后 [SM-17 算法]的实现,当然也仰仗于完整的间隔重复历史。

1995 年 8 月 16 日,星期三,我在算法 SM-8 中对自己的数据进行了第一次「实地」间隔重复学习。为了这次测试,我「贡献」了一个小型集合,含有 100 个项目,主要是数字的助记挂钩。在接下来的两年里,我逐渐将我所有的其他集合适配到新算法和新的 SuperMemo 环境。在 1997 年,我的所有知识终于被整合到单独一个结构良好的数据库中。从 1995 年到 1997 年,这种数据库称为「知识系统」。今天,我们只称作集合(如知识集合)。

时至今日,这 1995 年诞生的算法的核心仍在 SuperMemo 17 中默默运行。用户如果对 SM-17 算法建议的间隔不满意,仍可根据该旧算法选择间隔。

绝对项目难度

从 SuperMemo 1.0 到 SuperMemo 3.0,E-系数O-系数 定义相同(即连续间隔的比率)。这两个系数用于近似衡量项目难度(E-系数越高,项目越容易)。然而,间隔重复优化 会迫使 E-系数对应上稳定性增长,可后者会随着稳定性而下降。换句话说,算法 SM-2 中,从定义上项目会被标记为越来越「难」,因为它们会被连续重复。这有点违反直觉,而用户似乎从未注意到。

从 SuperMemo 4.0 开始,E-系数被用于索引 O-系数的矩阵。E-系数仍然用来反映项目的难度,以及计算 O-系数。然而,它们可以与 O-系数不同,从而更好地反映难度。

从 SuperMemo 4 到 SuperMemo 7,给定一个数据库,其中材料的难度会决定 O-系数和 E-系数的关系。比如,在简单的集合中,初始 O-系数(也就是第一次重复和假定的初始难度的O-系数)会相对较高。屡次重复的表现决定了 E-系数,那么即使在简单集合中项目的 E-系数,也会低于在困难集合中的相同难度的项目。在 SuperMemo 8 引入 A-系数后,一切都改变了。A-系数是「绑定」到 O-系数矩阵的第二行上的。这样 A-系数便是项目难度的绝对衡量指标。A-系数的值不因集合内容而变化。比如,如果 A 系数是 1.5, 那么第三次重复前的间隔,就会比第一个间隔长 50%.

存档警告:为什么使用文字档案?

A-系数是与集合中每个元素相关的数字。A-系数决定了在学习过程中,间隔变大的程度。A-系数越高,间隔的增加就越快。A-系数反映了项目的难度。A-系数越高,项目越容易。最难的项目的 A-系数等于 1.2。A-系数被定义为第二个最优间隔和第一个最优间隔的比值。

遗忘后的间隔

SM-8 算法中的遗忘后间隔近似法否定了两个迷思:

在下面的图表中,我们可以看到,如果连续遗忘,最优的遗忘后间隔不断变短。这无非说明,较高的遗忘次数,仅仅来自表述得很差劲的项目,或者那些语义上难以记忆,或者有其他干扰知识的项目。对于以 Lapse=10 开始的记忆,我建议用「有毒」这个术语来表达它们对学习过程的影响。如果大脑拒绝记忆一个信息那么多次,我们应该明白:这个知识的表述很糟糕,或者由于其他原因(例如与学习有关的压力,如在学校)而变得有毒。

存档警告:为什么使用文字档案?

首个间隔 - 第一次重复后的第一次间隔的长度,取决于某个项目被遗忘的次数。注意,这里的第一次重复是指遗忘后的第一次重复,而不是项目创建以来的第一次重复。换句话说,一个重复了两次的项目在被遗忘后,其重复次数将等于 1 而不等于 3。首个间隔画成图线,得到了指数回归曲线,这条曲线近似描述了不同次数的记忆错误(包括与新记忆的项目相对应的零错误类别)对应的第一区间长度。在下图中,蓝色圆圈对应于学习过程中收集的数据(圆圈越大,记录的重复次数越多)。



图注:上图涵盖了了超过 130,000 次重复的数据,根据这张图,新记忆的项目在 7 天后重复是最理想的。然而,遗忘了 10 次的项目(这在 SuperMemo 中是很少见的)需要 2 天间隔之后出现。(由于按对数缩放,圆圈的大小与数据样本并不成正比;Lapses=0 的重复情况远远大于 Lapses=10 的情况,这一点在分布 : Lapses中可以看出)

首次评分与 A-系数的关系

将首次评分与预估项目难度相关联的做法,是为了刚开始学习时,对项目按难度进行分类。这种相关性似乎很弱,而且极其依赖于用户心中的评分系统。对于一些用户来说,两者几乎没有相关性可言(图片#1)。对其他用户来说,两者相关性足够强,能覆盖全部的难度范围(A-系数)(图片#2)。



此外,从算法 SM-8 发展而来的 SM-11 算法,允许用户提早重复。这些重复对于间隔效应 有作用,但是,它们仍然被归入图标数据中,并使得困难项目的评分被高估。若渐进阅读得到广泛使用,图线将更加平缓。

SM-17 算法不将评分与难度关联,而是根据整个重复历史计算难度。实践表明,即使这样做,估计难度也很困难,因而学习的好做法是让所有项目都足够简单(用公认的记忆法的说法就是,与学生的其他知识相契合)。

存档警告:为什么使用文字档案?

首次评分与 A-系数 - G-AF 图将项目的首次评分与其 A-系数的最终估计值联系起来。在每次重复时,当前元素过往的 A-系数估计值被从图中删除,并添加新的估计值。SM-15 算法用这个图来快速估计 A-系数的第一个值,此时只有首次重复中得到的首个评分是已知的。

评分 vs. 遗忘指数

通过将评分与预期的遗忘指数(预测的可提取性)相关联,我希望能估计出遗忘指数(实际可提取性的重复后估计)。这种相关性似乎很弱,因为所有用户自己都有一套评分准则,而这套准则往往前后不一致。评分和可提取性的关联可归因于这个事实:复杂的项目评分更差,而且往往遗忘得更快(至少在开始时)。在这个意义上,评分更好地反映了复杂性,而非可提取性

如下图所示,预期遗忘指数的整个范围似乎都落在 3 分左右。



对于评分 <=3,我们可以读取最大的估计遗忘指数,对于评分 >=4,我们可以读取最小的估计遗忘指数。从这个角度来看,两个等级系统对算法的影响与六个等级系统完全相同。

对于其他用户来说,预期遗忘指数的某些取值下,评分曲线甚至可能达到峰值,就好像评分反映了记住棘手项目的愿望(宽松的评分)。

SM-17 算法 大范围使用了可提取性,是在重复后估计的。然而,可提取性是根据大量的召回数据和预期的可提取性计算出来的。评分与可提取性的相关性数据也有所收集,但是这两者的相关性可以忽略不计。

存档警告:为什么使用文字档案?

评分与遗忘指数 - FI-G 图将预期遗忘指数与重复评分联系起来。你需要了解算法 SM-15 才能理解这个图。你可以想象,遗忘曲线图的纵轴上可能使用平均评分而不是保留率。把平均评分与遗忘指数相关联,就会得到 FI-G 图。这个图表是用来计算估计遗忘指数的,而估计遗忘指数又用来对评分进行归一化处理(对于延迟或提前的重复),并估计项目的 A-系数的新值。评分是用如下公式计算出来的:Grade=\exp^{A*FI+B},其中 A 和 B 是对复重复期间收集的原始数据进行指数回归的参数。

每次重复后,根据预期遗忘指数和实际评分来更新 FI-G 图。预期遗忘指数可以很容易地从重复间隔,和从 OF 矩阵中计算出的最佳间隔中计算出。预期遗忘指数的值越高,评分就越低。利用评分和 FI-G 图,我们可以计算出估计遗忘指数,即在完成项目重复后,估算得出的项目重复之前的遗忘概率。由于遗忘和回忆的随机性,同一个项目或许能回忆起来,或许回忆不起来,这取决于大脑当前的整体认知状态;即使所有贡献记忆的突触的记忆强度和可提取性是/以前是相同的!这样,我们就可以谈论一个刚刚回忆(或未被回忆)的项目的重复前回忆概率。这个概率由估计遗忘指数表示。

SM-15 算法

SM-8 算法经过多年的改进,演变成 SM-11 算法(2002),然后是 SM-15 算法(2011)。这里我只介绍最新的版本:SM-15 算法(在 SuperMemo 15、SuperMemo 16 中使用,并作为 SuperMemo 17 的备份算法)。

二十年来, SM-8 算法得到的关键改进有:

存档警告:为什么使用文字档案?

为能计算最优重复间隔,SM-15 算法储存了单个项目的回忆记录(即学习中的评分),将其用来估计某个记忆轨迹的当前强度,以及项目背后的知识(项目)的难度。项目难度反映了记忆的复杂性,以及在脑中留下稳定而不模糊的记忆所需的精力。SuperMemo 将目标回忆率作为优化标准(如 95%),来计算出满足这一标准的间隔。最优间隔的函数以矩阵表示(OF 矩阵),并根据学习过程的结果随时修改。尽管满足优化标准是相对容易的,但算法的复杂性来自于在已知的记忆模型下,收敛速度最大化的需要。

重要!SM-15 算法仅用于计算项目重复的时间间隔。主题的复习时间间隔是用完全不同的算法计算的(这里不做描述)。主题复习的时间是为了管理阅读顺序而优化的,而非为了提升记忆。在 SuperMemo 中,长期记忆主要是借助项目形成的,这些项目是按照 SM-15 算法计算的时间表来复习的。

对 SM-15 算法更详细的描述如下:

1. 最优间隔:使用以下公式计算重复间隔:

I(1)=OF[1,L+1]

I(n)=I(n-1)*OF[n,AF]

其中:

2. 提前重复:由于重复可能提前(如考试前的强制复习),用于计算最优间隔的实际最佳系数(OF)要减去 dOF,利用考虑到学习中间隔效应的公式:

dOF=dOF_{max}*a/(t_{half}+a)

dOF_{max}=(OF-1)*(OI+t_{half}-1)/(OI-1)

其中:

3. 延迟重复:由于在重复时可能出现延迟,OF 矩阵的索引实际上不是重复,而是重复类别。例如,如果第 5 次重复是延迟的,OF 矩阵被用来计算重复类别,即与重复前使用的间隔对应的重复次数的理论值。例如若重复类别取 5.3,便有 I(5)=I(4)*OF[5.3,AF],其中 OF[5.3,AF] 是从 OF[5,AF] 和 OF[6,AF] 得出的中间值

4. 最优间隔矩阵:SuperMemo 并不存储最优间隔矩阵,虽然部分早期版本有存。作为替代,SuperMemo 记录最优系数矩阵,由此可以转换为最优间隔矩阵(由第 1 点中的公式)。第 1 点中使用的最优系数矩阵来自遗忘的数学模型和类似的矩阵,这些矩阵的数据来自一些集合多年重复练习数据。其初始设置按照水平中下的学生取值。在重复过程中,随着学生记忆的数据越来越多,矩阵逐步得到修改,进而更接近实际学生的记忆属性。经过多年的重复,新数据可以反过来用于生成更准确的初始 OF 矩阵。在SuperMemo 17中,这个矩阵可以通过工具统计分析3-D图表:O-系数矩阵以 3D 方式查看。

5. 项目难度:绝对项目难度系数(A-系数),在第 1 点中表示为 AF,表示一个项目的难度(AF 越高,项目越容易)。值得注意的是,AF=OF[2,AF]。换句话说,AF 表示第二次重复后的最优间隔增长系数。这也等同于给定项目的最高间隔增长系数。与 SuperMemo 6 和 SuperMemo 7 中使用的算法 SM-6 中的 E-系数 不同,A-系数表示绝对的项目难度,不依赖同一学习材料集合中其他项目的难度。

6. 从 RF 矩阵中计算出 OF 矩阵:OF 矩阵元素的最优值是通过一些近似流程从 RF 矩阵中得出的,RF 矩阵的定义与 OF 矩阵大体相同(见第 1 点),只不过 RF 矩阵的值取自真实学习过程。一开始,OF 矩阵和 RF 矩阵是相同的;然而 RF 矩阵中的项在每次重复时都会被修改,OF 矩阵的新值是通过使用近似程序从 RF 矩阵计算出来的。OF 矩阵实际上是 RF 矩阵的平滑形式。简单地说,RF 矩阵在任何给定的时刻都对应于从学习过程中得到的最优拟合值;然而,每个元素被认为本身上就是最优拟合元素,即从其他 RF 元素的值中抽象出来。同时,OF 矩阵被认为是整体上是最佳匹配的。换句话说,在重复过程中,RF 矩阵是逐条计算的,而 OF 矩阵是 RF 矩阵的一个平滑副本。

7. 遗忘曲线:RF 矩阵的各个元素是根据每个元素的遗忘曲线单独近似计算出来的。每条遗忘曲线都对应着不同的重复次数和 A-系数值(或在第一次重复的情况下的遗忘次数)。RF 矩阵元素的值与遗忘曲线通过目标遗忘指数得出的知识保留点的时间点相对应。例如,对于一个新项目的第一次重复,如果遗忘指数等于 10%,四天后遗忘曲线所表示的知识保留率下降到 90% 以下,那么 RF[1,1] 的值就取为 4。这意味着所有进入学习过程的项目将在四天后被重复使用(假设矩阵 OF 和 RF 在第一列的第一行没有差异)。这满足了 SuperMemo 的主要前提,即当遗忘概率等于 100% 减去以百分比表示的遗忘指数时,就应该进行重复。在 SuperMemo 17 中,遗忘曲线可以用工具统计分析遗忘曲线(或用工具统计分析三维曲线)查看。



图:工具 : 统计 : 分析 : 遗忘曲线为 20 个重复次数类别乘以 20 个A-系数类别。在图片中,蓝色圆圈代表在重复过程中收集的数据。圆圈越大,记录的重复次数就越多。红色曲线对应的是通过指数回归得到的最佳拟合遗忘曲线。对于结构不良的材料,遗忘曲线是弯弯曲曲的,即不完全是指数型的。水平的水蓝色线条与要求的遗忘指数相对应,而垂直的绿色线条表示近似的遗忘曲线与要求的遗忘指数线相交的时间点。这个时间点决定了相关的 R-系数的大小,并间接决定了最优间隔的取值。对于第一次重复,R-系数与第一个最优间隔相对应。O-系数R-系数的值显示在图表的顶部。它们后面是用于绘制图表的重复案例的数量(即 21,303)。在学习过程的开始,没有重复的历史,也没有重复的数据来计算 R-系数。在你的第一个遗忘曲线绘制出来之前,需要一些时间。据此,射频矩阵的初始值取自一个低于平均水平的学生的模型。不使用平均学生的模型是因为从较差的学生参数向上收敛的速度比相反方向的收敛要快。显示在顶部的偏差参数告诉你负指数曲线对数据的拟合程度。偏差越小,拟合效果越好。偏差是以平方差的平均数的平方根计算的(如最小二乘法中所用)



图:单一条目难度和不同记忆稳定性水平下的遗忘曲线族的三维表示(对 U-系数进行归一化)。



图: 混合复杂性与混合稳定性的学习材料的叠加遗忘曲线。该图是通过叠加 400 条遗忘曲线得到的,其归一化后的衰减常数为 0.003567,这相当于在呈现的时间跨度的 100% 时回忆率为 70%(即图中右边缘的 R=70%)。图中包括了 401,828 个重复的案例。单个曲线用黄色数据点表示。累积曲线由蓝色数据点表示,显示所有 400 条曲线的平均回忆率。圆圈的大小与数据样本的大小相对应。

8. 从遗忘曲线计算出 OF 矩阵:OF 矩阵是由 RF 矩阵推导出来的:

  1. 沿 RF 矩阵每一列的 R-系数下降的定点幂近似(定点对应于近似曲线通过 A-系数值的第二次重复),
  2. 对于所有列,计算 D-系数,这个系数表示幂近似的衰减常数,
  3. D-系数在整个 RF 矩阵列中的变化的线性回归,以及
  4. 找出D-系数图中拟合最佳的直线,利用它们的斜率和截距,计算出整个 OF 矩阵。在这最后一步中使用的确切公式超出了本说明的范围。

注意,OF 矩阵的第一行的计算方式有所不同。第一行对应从 RF 矩阵第一行得到的最优拟合指数曲线。每次重复后都会进行一遍上述流程。换句话说,一旦收集到新的遗忘曲线数据,理论上最佳的 OF 矩阵值就会被更新,即在重复期间,一旦当学生提供评分,说明回忆正确还是错误(即遗忘)(在 SM-6 算法 中,必须使用单独的近似程序 Approximate 来寻找最契合的 OF 矩阵,而且重复时使用的 OF 矩阵可能与它的最优拟合值有很大差别)

9. 项目难度A-系数的初始值通过该项目的首次评分,以及首次评分与 A-系数的相关图(G-AF 图)计算得出。该图在每次重复后被更新,同时会计算新的 A-系数近似值,并将其与项目的首次评分相关联。每次重复后,还会进一步计算真实的 A-系数值的近似值,综合运用评分、OF 矩阵和显示评分与预期遗忘指数对应关系的相关图(FI-G 图)等。用于计算初始 A-系数的评分需经过归一化,即根据实际使用的间隔和目标为 10% 遗忘指数的最佳间隔之间的差异进行调整

10. 评分与预期遗忘指数的相关性:FI-G 图在每次重复后,根据预期遗忘指数和实际评分来更新。预期遗忘指数可以很容易地从重复之间使用的间隔和从 OF 矩阵计算的最优间隔中得出。预期遗忘指数的值越高,评分就越低。从评分和 FI-G 图(见:工具统计分析图表中的 FI-G 图),我们可以计算出估计遗忘指数,它相当于在假设的重复前阶段,对刚刚重复的条目的遗忘概率的重复后估计。由于遗忘和回忆的随机性,同一个条目可能被回忆,也可能不被回忆,这取决于大脑当前的整体认知状态;即使所有贡献突触的记忆强度和可检索性是/是相同的这样,我们就可以谈论一个刚刚被回忆(或未被回忆)的条目的重复前回忆概率。这个概率用估计遗忘指数表示。

11. 计算 A-系数:从(1)估计遗忘指数,(2)间隔长度和(3)OF 矩阵,我们可以很容易地计算出 A-系数的最准确值。请注意,A-系数相当于 OF 矩阵的索引,而利用估计遗忘指数,便能在 OF 矩阵找出一列,使得最优间隔相当于实际使用的间隔,该间隔已针对估计遗忘指数距离期望遗忘指数的偏差进行修正。在每次重复时,计算旧的 A-系数和新的 A-系数的估计值的加权平均。在计算新的最优重复间隔时,新得到的 A-系数被用于 OF 矩阵的索引

总结一下。重复的结果是计算出一套参数表征学生记忆:RF 矩阵,G-AF 图,以及 FI-G 图。它们还用于计算各个项目的 A-系数,以刻画所学材料的难度。对 RF 矩阵进行平滑处理可得出 OF 矩阵,并由此计算不同难度(A-系数),和适用不同重复次数的项目的最优重复间隔(或在第一次重复的情况下的遗忘次数)。一开始,所有学生的记忆参数都按照水平中下的学生取值(比按照水平中等或中上的学生取值收敛得更快),而所有 A-系数都被假定为相等(未知)。


总目录:0 目录《间隔重复的历史》

上一章:09 1994:遗忘的指数性质

下一章:11 1997:启用神经网络


Thoughts Memo 汉化组译制
原文:10 1995: Hypermedia SuperMemo

专栏:Thoughts Memo的文章


← 返回目录