← 返回目录


04 1987 SuperMemo 1.0: 日志

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

32 👍 / 3 💬

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

上一章:03 1986:SuperMemo 的第一步

本文前半部分是 SuperMemo 作者的个人故事,有兴趣可以看。

后半部分是 SM-2 算法的介绍,Anki 的算法就是基于它的变体,推荐阅读。


1987:DOS 上的 SuperMemo 1.0

SuperMemo 1.0: 日志 (1987)

SuperMemo 的历史页面上写着:“Wozniak 用 16 个晚上写了他的第一版 SuperMemo”。实际情况要复杂一些。让我用当天的笔记来详细描述一下。

为这个想法做准备

我不明白我在 1987 年 7 月 3 日写的“我有一个革命性的计划,在 SMTests (SMTests在这里代表 SuperMemo on paper)中安排我的工作和科学实验”是什么意思。从纸张到计算机的过渡似乎是显而易见的一步。在这条路上一定有一些思维上的障碍,需要“跳出框框思考”。不幸的是,我没有写下细节。今天,它唯一重要的是,它说明了一个看似显而易见的想法可能会缓慢得令人痛苦。

1987 年 9 月 8 日,我的第一台个人电脑从德国运来(Amstrad PC 1512)。我的热情无与伦比!我睡不着。我工作了一整夜。我计划编写的第一个程序是用于数学近似。SuperMemo 是第二个。



图:我的版本只有一个磁盘驱动器。操作系统 MS-DOS 必须从一个磁盘加载,Turbo Pascal 3.0 必须从另一个磁盘加载,SuperMemo 必须从又一个磁盘加载。直到 1991 年我有了自己的第一个硬盘前,我的英语集合不得不分成 3000 个部分。我的 39000 条项目被保存在 13 个磁盘上。我有很多其他领域的知识。1997 年 1 月 21 日,SuperMemo World 找到了那台最初的个人电脑,并从它的主人 Jarek Kantecki 手中买了回来。这台个人电脑在整整十年里功能齐全。现在它被埋在公司尘封的档案中。也许我们会在某个时候发布它的照片。图片来自维基百科

1987 年 10 月 16 日,星期五,在 12 个小时内,我用 GW-Basic 写了我的第一个 SuperMemo(719 分钟的不间断编程)。它像蜗牛一样慢,而且很笨重。我不太喜欢它。我没有开始学习。这会是 SuperMemo 的终结吗?错误的编程语言选择?在学校忙碌的日子让我忙于无数不重要的事情。典型的学校影响:什么都不学。没有时间去创造和学习。幸运的是,我从未停止使用 SuperMemo on paper。SuperMemo 的想法不可能消亡。它迟早要自动化。

1987 年 11 月 14 日,纸上的 SuperMemo 迎来了它的第一个用户:Mike Kubiak。他非常热情。热情之火一直在燃烧。11 月 18 日,我了解了 Turbo Pascal。它不能在我的电脑上工作。在那些日子里,如果你有一个有问题的显卡,你可能会非常艰难。我没有使用 Hercules,而是使用了文本单色模式(黑白)CGA。我设法通过在 RPED 文本编辑器而不是在 Turbo Pascal 环境中编辑程序来解决这个问题。后来我得到了正确版本的 Turbo Pascal 适配我的显卡。顺便提一下,旧的 SuperMemo 是有颜色的。我用深浅不一的灰色来编程,但从来不知道它在颜色模式下到底是什么样子。

编写 SuperMemo 1.0

SuperMemo 1.0 大事记:

第一次在 SuperMemo 中重复

1987 年 12 月 12 日是星期六。我通过一个等待处理的队列编辑器扩展了 SuperMemo,似乎准备开始学习,然而,……12 月 13 日,我被一个炸弹击中:“内存不足”。Turbo Pascal 拒绝编译我的程序,因为它太大了。在那些日子里,DOS 中的内存被分割成 64KB 的段,我可能只能使用一个段。我设法通过优化代码来解决这个问题。

我需要添加到 SuperMemo 中的最后一个选项是程序读取日期。在那些日子里,阅读日期是一件大事。如果没有它,我将需要在每天开始使用 SuperMemo 时输入当前日期。

终于,在 1987 年 12 月 13 日的下午,我终于能够将我的第一个项目添加到我的人类生物学收藏中:关于自主神经系统的问题。早在 1985 年 7 月 31 日就被认为是间隔重复的生日。1987 年 12 月 13 日是间隔重复软件诞生的日子。

间隔重复软件诞生于 1987 年 12 月 13 日

到了 1987 年 12 月 23 日,我的论文和计算机数据库包含了 3795 个关于人类生物学的问题(其中近 10% 已经存储在我新的 SuperMemo 程序数据库中)。遗憾的是,那天我不得不从 SuperMemo 中删除存储完整重复历史的可能性。在 360K 的磁盘上没有足够的空间。间隔重复研究需要再等几年。直到 1996 年,SuperMemo 才重新开始收集重复次数的完整记录。



图:SuperMemo 1.0 for DOS(1987)是第一个使用间隔重复的计算机。它引入的算法 SM-2 在 30 年后仍然很流行

算法 SM-2

下面是在 SuperMemo 1.0 for DOS(1987)中使用的算法的描述。这个描述取自我 2.5 年后(1990 年)写的硕士论文。SuperMemo 1.0 很快就被一个更好看的 SuperMemo 2.0 所取代,我把它送给了大学里的朋友们。重复间隔算法在 SuperMemo 版本之后被命名为算法 SM-2。这意味着从来没有算法 SM-1。

在使用的头 8 个月里,我掌握了 1000 道生物题。更棒的是,在最初的 365 天里,我准确地记住了一万对英语单词。我平均每天工作 40 分钟。这种学习速度在 SuperMemo 最初的商业时代被用作广告的基准。即使在今天,每天花 40 分钟来掌握高级英语也是值得的。

算法 SM-2 依然流行,仍然被一些程序使用,比如AnkiMnemosyne

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

这篇文章是:“改进学习” Piotr Wozniak (1990) 的一部分

3.2. 应用计算机对SuperMemo方法的计算结果进行改进

我在 1987 年 12 月编写了第一个 SuperMemo 程序(Turbo Pascal 3.0, IBM PC)。它旨在以两种基本方式增强 SuperMemo 方法:

观察到后续的重复间隔增加了一个近似常数的因子(例如英语词汇量的 SM-0 算法增加了两个),我决定用下面的公式来计算重复间隔:

I(1) = 1
I(2) = 6
当 n > 2 时 I(n) = I(n-1) * EF

上式中:

简易度允许在最困难的 1.1 和最简单的 2.5 之间变化。在将一个项目引入 SuperMemo 数据库时,它的简易度被假定为 2.5。在重复的过程中,这个值会随着回忆问题的出现而逐渐降低。因此,一个项目在回忆中引起的问题越大,其简易度的降低就越显著。

在第一个 SuperMemo 程序实现后不久,我注意到简易度不应该低于 1.3。简易度低于 1.3 的项目经常被重复使用,而且似乎总是存在固有的缺陷(通常它们不符合最小信息原则)。因此,不让简易度降至 1.3 以下大大提高了流程的吞吐量,并为需要重新制定的项目提供了一个指标。计算项目新简易度的公式是启发式构造的,在接下来的 3.5 年里,使用基于计算机的 SuperMemo 方法并没有太大的变化。

为了计算一个简易度的新值,学生必须评估他在重复一个项目时回答问题的质量(我的 SuperMemo 程序使用 0-5 级量表——使用数字键盘的人机工程学决定的范围)。公式的一般形式为:

EF':=f(EF,q)
上式中:

函数 f 最初具有乘法特性,在 SuperMemo 程序的后续版本中,当简易度的解释发生重大变化时,将其转换为加法因子,而不会显著改变 EF'、EF 和 q 之间的相关性。为简化进一步考虑,仅考虑最新形状的函数 f:

EF':=EF-0.8+0.28*q-0.02*q*q

这是以下形式的简化形式:

EF':=EF+(0.1-(5-q)*(0.08+(5-q)*0.02))

注意,对于 q=4,简易度没有变化。

现在让我们考虑在 1987 年 12 月 13 日和 1989 年 3 月 9 日之间的 SuperMemo 程序中使用的 SM-2 算法的最终形式,版本 1.0-3.0 (选择 SM-2 是因为 SuperMemo 2.0 是目前实现该算法的最流行的版本)。

基于计算机的 SuperMemo 方法的变体所用的算法 SM-2,涉及对特定项目的简易度的计算:

  1. 把知识分成尽可能小的部分。
  2. 所有项的简易度都等于 2.5。
  3. 使用以下间隔重复项目:
  4. 每次重复后用 0-5 级量表评定重复的反馈质量:
  5. 每次重复后,根据公式修改最近重复项的简易度。
  6. 如果反馈的质量低于 3,那么重复就重新开始,不要改变简易度(即使用间隔 I(1),I(2) 等,就像重新记忆一样)。
  7. 在某一天的所有重复训练之后,重复所有在质量评估中得分低于 4 分的项目。继续重复,直到所有项目至少 4 分。

在使用 SM-2 算法(学习英语词汇)的第一年,我记住了 10255 个单词。创建数据库和重复所需要的时间为每天 41 分钟。这相当于 270 个项目/年/分钟的学习率。整体保留率为 89.3%,但剔除近期记忆(间隔在 3 周以下)没有正确确定简易度后,保留率为 92%。比较 SM-0 和 SM-2 算法,我们必须考虑这样一个事实:在前一种情况下,由于学生在重复给定页面的项目时得到了提示,所以保留率被人为地提高了。问题前面的项目可以很容易地给出正确答案。

因此,算法 SM-2 虽然在定量比较方面并不令人惊叹,但它标志着 SuperMemo 方法在 1985 年引入最佳区间概念后的第二次重大改进。将先前分组在页面中的项目分离和引入简易度是改进算法的两个主要组成部分。SM-2 算法是通过试错法构建的,它在实践中证明了几乎所有导向其概念的基本假设的正确性


下一章:05 1988:记忆的两个组成成分


专栏:学校教育问题


← 返回目录