7天连续学习120 XP
博客 / 学习与记忆

《学习的优化》:SuperMemo 在随机学习中的应用

SuperMemo方法已成功用于确定性学习,最终证明了其有效性与效果。不过,随机学习遵循不同原则,见第10章关于记忆生理学的讨论。因此,一个有趣的问题出现了:SuperMemo方法是否也能用于这种学习形式?早在1985年,SuperMemo方法就曾偶然用于打字、演奏贝斯、弹钢琴和鼓乐训练等随机学习领域。现在,我们考察更有规律地运用SuperMemo类算法进行盲打与鼓乐训练的近期结果。

研究与历史SuperMemo约 15 分钟
返回文章目录
本文目录

Piotr Woźniak,1990年

本文摘自P. A. Wozniak于1990年在波兹南理工大学完成的硕士论文《学习的优化》,并经调整后作为独立文章发布在网上,P. A. Wozniak、M. K. Hejwosz,2010年7月20日。 请注意,本文已相当过时,包含大胆的假说。之所以发布,只是因为SuperMemo用户和其他人持续提出要求。它不应被视为Wozniak博士或SuperMemo World对相关问题当前立场的反映,在网上仅作档案保存。为了使文章更易阅读,做了少量修正,尤其是语言错误。 阅读前请注意,文中的假说性概念,大致可以用定义明确的程序性学习现象来替代,只要它符合这个基本假设:在随机学习中,需要由大脑自己找出哪些突触连接应当强化,基本方式是试错。全文把随机学习与确定性学习对照,后者大致对应陈述性学习。

SuperMemo方法已成功用于确定性学习,最终证明了其有效性与效果。不过,随机学习遵循不同原则,见第10章关于记忆生理学的讨论。因此,一个有趣的问题出现了:SuperMemo方法是否也能用于这种学习形式?早在1985年,SuperMemo方法就曾偶然用于打字、演奏贝斯、弹钢琴和鼓乐训练等随机学习领域。现在,我们考察更有规律地运用SuperMemo类算法进行盲打与鼓乐训练的近期结果。

9.1. 基于SuperMemo的盲打训练

毫无疑问,盲打训练可以归为涉及随机学习的过程。神经系统既不知道,也不能从任何来源直接得知,应该刺激哪些肌肉、按什么顺序、在什么时刻刺激。要在意识之外引导手指运动,全部控制信息都必须由运动系统的神经网络自行形成。为指导基于SuperMemo的盲打训练,我们开发了一个专门程序。它的结构和选项树,与用于确定性学习的SuperMemo程序完全相同,见第4章。不过,其中两个选项专门为盲打训练实现:Append,用于向知识库添加新条目;以及Test,用于复习。盲打条目采用3至20个字符的短语形式,在复习时练习。Append应能够挑出那些练习后最有助于学习者进步的短语。

评估学习者进步有两个标准:打字速度与错误数量。协调这两个标准最常见的办法,是为错误按键施加时间惩罚。多数情况下,打得最慢的短语,把错误惩罚也计算在内,就是最值得强化练习、以提高总体表现的候选条目。因此,选择哪些短语加入SuperMemo知识库,应当包括:用一段示例文本测试打字技能,找出最明显拉低总成绩的片段。

为简化过程,假定一个短语就是一个以空格分隔的单词。当某个单词的总体打字速度,或其中最低的单字符打字速度,明显低于学习者平均打字速度时,就把它选为候选条目。

在所讨论的实现中,采用以下公式:

x := word_speed*(1/word_length);
if x < average_speed*0.6 OR
 character_speed < average_speed*0.4 then
 append_word;

其中:

  • x:辅助变量。
  • word_speed:当前单词的打字速度。
  • word_length:当前单词的字符数量。
  • character_speed:当前单词中单个字符的最低打字速度。
  • average_speed:学习者的平均打字速度。
  • append_word:把该单词加入知识库的过程。

注意,第一条语句根据word_speed计算x,是为了消除“较长单词打得较慢”这一规律带来的差异。变量x反映了针对不同短语长度标准化后的word_speed。

我们知道,一个词在特定上下文中可能打得更慢,通常是受前一个词影响。因此,添加算法总会为每个词生成一个伴随条目:把测试文本中的前一个词放在当前词之前,组成这个伴随条目。

Test选项是除Append之外,为盲打程序修改的第二个选项。它负责按SuperMemo重复间隔,复习知识库中的各个短语。复习间隔按以下公式计算:

I(1) = quality+1
I(i) = I(i-1)*EF

其中:

  • I(i):第i次复习后的间隔,以天为单位。
  • quality:第一次复习的质量,在0至5的评分范围内。
  • EF:当前条目的E因子。

注意,与此前的情况不同,这里用复习质量参与确定第一次间隔。这是一种实验性方案,其有效性既未被证明,也未被否定。

按惯例,所有条目刚加入时,E因子均为2.5。后续复习中,再根据作答质量,按照标准公式修改,参见第3章的SM-2至SM-5算法。

作答质量根据复习中的打字表现自动计算。

计算质量时采用两个参数:

  • 复习过程中的平均打字速度,SPEED。
  • 条目的输入次数,COUNT,表示一次复习中,该条目被输入多少次后,这次复习的平均打字速度达到了该条目历史最高打字速度的87%。最高速度指单次输入所取得的最高值。

87%这个值,以及计算打字质量所需的其他数值,都是通过试错选定的。

COUNT参数不允许超过50,因为输入50次后,不论表现如何,复习程序都会中止。

下面展示计算打字质量所用的函数:

function speed_quality(x);
constant x1=0.3; y1=0;
 x2=0.86; y2=5;
begin
 speed_quality := (y2-y1)/(x2-x1)*(x-x1)+y1;
end;
function count_quality(x);
constant x1=20; y1=5;
 x2=50; y2=1;
begin
 count_quality := (y2-y1)/(x2-x1)*(x-x1)+y1;
end;
function quality(count, speed, max_speed);
begin
 quality := count_quality(count)+speed_quality(speed/max_speed);
 quality := quality/2;
 if quality < 0 then quality := 0;
 if quality > 5 then quality := 5;
end;

上述函数中,各标识符的含义:

  • speed_quality:计算打字质量中速度成分的函数。
  • count_quality:计算打字质量中次数成分的函数。
  • count:复习中输入该条目的次数。
  • speed:复习中记录的平均打字速度。
  • max_speed:该条目历史上记录的最高打字速度,指单次输入的最高值。

注意,(x1,y1)和(x2,y2)确定了计算质量中SPEED与COUNT成分所用的线性函数。

基于SuperMemo的打字训练程序,自1990年4月1日起开始使用,看起来对改进我的打字技能非常有帮助。不过,关于以下问题,目前还不能提供可靠的定量数据:

  • 与其他标准打字训练程序相比,SuperMemo打字训练器有多有效?
  • 对于水平更低或更高的学习者,程序有多大用途?质量评估参数是按我个人要求调整的。
  • 使用这个程序所获得的典型进步曲线是什么样的?

这些问题,以及许多相关问题,很快都将得到研究。不过,依据迄今获得的数据,可以尝试回答:SuperMemo重复间隔能否成功用于随机学习?答案肯定是可以,但从打字训练器知识库的E因子分布中,还能得出一个有趣结论,见图9.1。

范围数量百分比0%10%20%30%40%50%60%
大于3.100%
(3.0, 3.1>00%
(2.9, 3.0>00%
(2.8, 2.9>6135%
(2.7, 2.8>3520%
(2.6, 2.7>2917%
(2.5, 2.6>169%
(2.4, 2.5>106%
(2.3, 2.4>106%
(2.2, 2.3>63%
(2.1, 2.2>53%
(2.0, 2.1>00%
(1.9, 2.0>21%
(1.8, 1.9>11%
(1.7, 1.8>00%

图9.1:SuperMemo打字训练程序知识库中的E因子分布,取自训练过程第55天。

图9.1非常明显地显示,打字训练器知识库的E因子有上升趋势。此前,在用于确定性学习的标准SuperMemo程序知识库中,尚未观察到这种现象。只有两种可能:质量评估过于宽松,或者复习过于频繁。必须排除第一种解释,因为从上述公式可以得知:连续两次复习中,如果后一次表现没有至少达到前一次的水平,质量就不可能超过3。要达到QUALITY>3,COUNT_QUALITY必须大于1,因此COUNT必须小于50,也就意味着平均速度必须大于最高速度的87%;而前一次复习的最高速度只能低于或等于这个值,因为两次都使用最高速度的同一百分比来决定中止复习。此外,只有质量大于4时,E因子才会上升。因此,最终结论应是:随机学习的最优重复安排,比确定性学习更稀疏,也就是相应间隔更长。

考虑到随机学习中的一次复习,并不是单一动作,这个事实可以预期。这意味着,编码所练技能所需的突触,在一次复习中会被刺激很多次,我无法设想不如此的情况。不过,我不会急于下结论,而把这个问题留给进一步研究。

9.2. 基于SuperMemo方法的鼓乐训练

打鼓和演奏其他乐器一样,可以归为需要随机学习的技能。下面给出一个SuperMemo应用示例,用来学习专业鼓手所需的一部分技能。它旨在说明如何设计训练,而不是提供这种方法有效性的定论数据;这一方案自1990年5月10日起使用。和所有学习问题一样,关键是选出单独的SuperMemo条目,让它们能按适当间隔重复。在这个例子中,单独的重复性运动任务被用作条目,训练旨在改善打鼓所涉技能中某个选定子类的运动表现。

按间隔进行鼓乐训练的任务示例

  • 215
  • ••^••^
  • o•o•oo
  • •o•oo•
  • o•o••o
  • ——识别编号
  • ——踩镲重音
  • ——踩镲节拍
  • ——小鼓节拍
  • ——底鼓节拍

同一任务嵌入一个常规全音符长度的小节

  • │ │
  • │•••¦•••¦•••¦•••│
  • ••••••••^••^•••••
  • ó•ó•ó•o•o•ooó•ó•ó
  • ••••ó••o•oo•••ó••
  • ó•ó•••o•o••o••••ó
  • │•••¦•••¦•••¦•••│
  • ——任务边界
  • ——任务承载小节的边界与分格
  • ——踩镲重音
  • ——踩镲节拍
  • ——小鼓节拍
  • ——底鼓节拍
  • ——任务承载小节的边界与分格

对包含踩镲、小鼓和底鼓、长度为6个十六分音符的鼓谱共1700万种组合,按决定任务难度的10项约束筛选:

  • 可执行性约束: 底鼓最多连续敲两次。 小鼓最多连续敲三次。 踩镲最多连续敲四次。 踩镲重音始终为单个。
  • 强度约束: 底鼓至少敲三次。 小鼓至少敲两次。 踩镲至少敲四次。 踩镲重音至少出现一次。
  • 审美约束: 踩镲重音始终伴随底鼓。 小鼓永不伴随底鼓。

得到1307个任务后,再剔除高度相似的组合,最终形成300个任务。

所得任务表的一部分

201211221231241251261271
•••••^•••••^•••••^•••••^•••••^•••••^•••••^•••••^
o•o•ooo•o•ooo•o•ooo•ooooo•ooooo•ooooooo•ooooo•oo
••oo•••oo•••o•o•o•••oo•••o•oo•o•o•••••o•o••o•o••
oo•••oo••o•o•o•o•o•o••ooo•o••o•o••oooo•••oo•o••o
202212222232242252262272
••••^•••••^•••••^•••••^•••••^•••••^•••••^•••••^•
o•o•ooo•o•ooo•ooo•o•ooo•o•ooo•o•ooooo•ooooo•oooo
•o•o••o••o•o••o••o•oo•••o•o••o••oo•••ooo••oo•o••
o•o•o••oo•o•oo•oo•o•••oo•o•oo•oo••o•o•••oo••o•oo

每个任务持续练习,直到达到学习者主观判断的满意表现。为简化学习过程的管理程序,把任务分为三个难度类别:

  • A类:相当于E因子2.3。
  • B类:相当于E因子1.7。
  • C类:相当于E因子1.4。

最初,全部任务属于A类。复习过程中,按以下等级评估保持质量,括号中是E因子类别的修改:

  • 良好或优秀:不惩罚。
  • 足够:难度类别从A变B,或从B变C。
  • 一般:难度类别改为C。
  • 不足:难度类别改为C,并重置过程,即从头开始复习。

各个任务的复习间隔,按下式计算:

I(1) = 4
I(n) = I(n-1)*EF

其中:

  • I(n):第n次复习后的间隔。
  • EF:E因子,取2.3、1.7或1.4,分别对应A、B、C类。

正如盲打训练中强调的,随机学习的复习,可以比确定性学习更稀疏。因此,上述方案看起来过于谨慎。一位专业鼓手使用这项训练已有一个多月,评价非常积极。不过,这种肯定主要来自方法总体上的规律性,而不是SuperMemo重复间隔本身的效果。如此短的时间,还不足以让它显示真正的力量。同样,要获得更有定论的结果,需要更长时间的应用。

阶段总结

  • SuperMemo方法能够成功用于随机学习过程。
  • 确定性学习的重复间隔,对随机学习要么适用,要么过于严格;也就是说,应用SuperMemo方法,可以获得比前面章节讨论得更好的结果,即更高的获取速率。
  • 展示了SuperMemo方法在盲打和鼓乐训练中的应用示例。

原文

创建闪卡返回文章目录