本文使用 Zhihu On VSCode 创作并发布
太长不看
- 记忆算法:解决记忆的数量问题
- 渐进阅读:解决记忆的质量问题
- 优先队列:解决记忆的价值问题
引言
好久不见,读者朋友们!挺久没写原创了,今天有了灵感,就来写写。
这次我们从更抽象的层次来看看 SuperMemo 是怎样解决记忆问题的。
单看 SuperMemo 如今浩如烟海的功能和上世纪风格的界面,不少入门者都觉得 SuperMemo 非常复杂,完全搞不明白这些功能对记忆有什么帮助。
为了更好地剖析 SuperMemo,我发现从时间顺序来分析是一条不错的路径。
以下就是 SuperMemo 主要模块引入的时间:
- 记忆算法(始于 SuperMemo 1 (1987))
- 渐进阅读(始于 SuperMemo 10 (2000))
- 优先级队列(始于 SuperMemo 13 (2006))
接下来我们就按照这个顺序分析一下,这些模块分别解决了什么问题,以及它们是如何解决的。
记忆算法
可能有些读者朋友不知道 SuperMemo 的记忆算法有多流行,其 1987 年发布的 SM-2 算法正是 Anki 算法的原型。
那么记忆算法究竟解决了什么问题呢?我们先从两个直觉开始说起:
- 如果我们复习两次,我们就能更好地记住它。这很明显,不是吗?如果我们把它复习三遍,我们可能会记得更清楚。
- 如果我们记住一组知识,它们将逐渐从记忆中消失,即不是一次全部消失。这在生活中很容易观察到。记忆有不同的寿命。
这两种直觉应该让每个人都想知道:我们失去了多少知识,速度有多快?我们下一次应该什么时候复习?
当我们问出这些问题之时,人类记忆规律之门便打开了。
记忆与遗忘本质上是一个随机过程。而记忆算法,则是对这个随机过程的建模与优化,从而计算出最佳的复习间隔。
可能有人会问,这还需要建模?还需要算法?我自己安排个 1 3 5 7 天不就行了?
诚然,只要有复习,就会有效果,复习的间隔无非是影响效果的一个变量罢了。
但是这句话就跟「只要有努力,就会有效果,怎样努力无非是影响学习的一个变量罢了」一样无用。
事实证明,复习间隔太长和太短,都会加重复习的负担。
如何理解?间隔短,可以保证自己忘得少,但是这是用时间换的。间隔长,看似可以节省时间,然而其造成的遗忘需要未来更多的复习。
当我们通过算法,在遗忘与复习量之间计算出均衡点,便能最大化地提高复习的效率,也就是记忆的数量。
小结
记忆算法,解决的是记忆的数量问题,即如何用有限的时间记住更多的知识。
记忆算法,通过对记忆的建模与优化,计算出最佳的复习间隔,从而解决上述问题。
更多有关记忆算法的内容,请见我的收藏夹:
Spaced Repetition渐进阅读
渐进阅读又是解决个啥问题呢?我们先不提它,先讲讲有了记忆算法后,我们遇到了什么问题:
- 我用「映射法」背单词,他用「例句法」背单词,为什么我忘得更快?
- 同九年,汝何秀?为什么我用叶哥的牌组还是记不住?
- 《批量制卡——从入门到删库》
- 。。。
从这些问题中,我们可以归纳出一个共同点:记忆的质量太差。
即使我们使用相同的记忆算法,不同的记忆内容依然会造成差异;甚至对于相同的内容,是否是自己制作也能产生显著的不同。
这正是记忆的质量问题。知识的表述方式、对知识的理解等等,都会影响我们记忆的质量。
有阅读过这个收藏夹内文章的朋友应该能够明白,知识表述对记忆质量有很大的影响:
制卡原则与知识表述而许多 Anki 用户在这个问题上有三种因对方式:
- 用别人的牌组
- 批量制卡
- 自己做
前两种方法就是放弃记忆的质量,节省自己前期的投入,然后在将来还债。
自己做固然有助于提高记忆质量,但是由于我们的理解是不断改进的,制卡经常需要频繁改动,而且用自己的语言表述学到的知识,是一个巨大的工程。这使许多同学望而却步。
而渐进阅读,解决正是解决这个问题的一大有力工具。
渐进阅读将阅读、改写、制卡等环节打通,实现学习、理解、记忆的渐进过程,对记忆的质量有显著的提高。
以我自己为例:
SuperMemo 的算法通过对我个人复习情况的拟合,计算出了不同难度、不同复习次数下对应的最佳复习间隔。可以看到第一个间隔已经有 8 天左右,而如果我的卡片做得非常烂,那么这个间隔可能就只有 1 天。
小结
渐进阅读,解决的是记忆的质量问题,即如何提高让自己的记忆更加稳固,更难遗忘。
渐进阅读,通过打通阅读到制卡的一系列环节,增进我们对知识的理解,从而解决上述问题。
更多有关渐进阅读的内容,请见我的专栏:
SuperMemo—渐进学习最前沿!优先级队列
什么?怎么还有问题?渐进+算法还不够用吗?
哈哈,不同阶段有不同阶段的问题,这是个循序渐进的过程。当记忆算法解决了记忆的数量问题后,自然会有人开始重视记忆的质量问题。而渐进阅读解决了这一问题后,大量卡片能够轻松地通过摘抄、挖空产生。渐渐地,有些人发现,哪怕算法效率再高、记忆质量再好,自己也已经复习不过来了。
怎么办呢?根据我们人类的天性,一个字:拖。
别惊讶,理性拖延是现代人的必修课。我们总会把不那么紧急或者重要的事情往后拖。事后来看,有些拖延确实是正确的选择。
通过拖延,我们把时间、精力投入到更有价值的事情上。在记忆上同样适用,我们想要解决的是记忆的价值问题。
举个栗子:我喜欢看社科类的书,比如社会心理学、思考快与慢等等,我把它们放入 SuperMemo 中渐进阅读。同时我是计算机专业的学生,有很多关于操作系统、数据库的知识也同样放在 SuperMemo 里。而我每天的复习时间有限,不能把它们都学完。那该怎么办呢?
从我个人的角度来看,看社科书主要是业余爱好,而计算机才是主业,所以计算机相关知识的价值更高。
如果我用 Anki,我可能会先学完计算机的牌组,然后再学社科牌组。并且社科牌组经常复习不完,不断堆积。
如果我用 SuperMemo,我给计算机更高的优先级,那么我在复习时会更频繁地遇到计算机的卡片,但是也会随机地遇到一些社科类的卡片,从而更好的 balance 两者。
更重要的是,即使是业余爱好,社科里也有高价值的知识,即使是专业,计算机里也有低价值的知识。
通过牌组这种形式的组织方式,无法处理上述的情况。那么,优先级队列便有其不可替代的优势了。
小结
优先级队列,解决的是记忆的价值问题,即如何在有限的时间里记忆更多有价值的知识。
优先级队列,通过对知识标记优先级,再根据优先级安排每日复习的顺序,从而解决上述问题。
以下是另外一篇介绍优先级队列的文章,有兴趣不妨看看:
叶峻峣:渐进阅读:卡片刷不完?拥抱优先级!结语
记忆的数量、质量和价值,正是衡量我们学习效果的三个维度。SuperMemo 的历史,也是解决这些问题的发展史。任何学习软件,恐怕都绕不开这些问题。
当然,不同的学习软件都有自己应对这些问题的解决方案,百花齐放,百家争鸣,最大的受益者便是我们这些热爱学习的人。
不知道各位读者朋友们是否在自己的学习体系中考虑了上述问题,你们又是如何解决的?欢迎在评论区里交流讨论。
感谢各位的阅读!
2021 年 5 月 5 日
叶峻峣