谢晓波 bio photo

谢晓波

I am a master student from Beijing Normal University. Interested in machine learning and applications

Email Google+ Github Weibo

what is chunking?

chunk可以理解为知识点在你大脑中的存储。举一个很形象的例子,我们有很多很多的数据需要存储在大脑中,因此我们需要以一种方便我们保存和查询的方式保存下来,比如我们用xml或者json的格式保存数据,在我们的大脑中,知识点是以chunk的形式保存下来的。

chunk是一种持久化的保存方式,相当于我们保存在磁盘等外存设备中。当老师给我们教授一个具体的算法或者定理时,在我们大脑的working memory中相当于形成了一个“临时”的neural pattern。但是这个neural pattern并没有永久的保存在我们的大脑中,就像在计算机的内存一样,过了几天你就可能忘了。这就是chunk和neural pattern的区别。chunk是在你大脑中永久保存的,更加系统,有条理的一种保存形式。

neural pattern

how to form a chunk?

那么怎样形成一个chunk呢?课程给出了形成chunk的步骤:

  1. focus
  2. understanding
  3. practise
  4. recall

接下来我们一一解释每个步骤:

focus

保持专注有助于我们理解所学的内容。我们的大脑在focus model下的working memory有四个slot。每个slot都可以看成是计算机的内存。保持专注可以让这些slot有充足的空间来存放和所学内容相关的其他知识,这有助于我们更好的建立和已有知识的联系,理解内容。

understanding

理解。理解就像神经元之间的胶水一样,可以把神经元粘连起来,形成一个neural pattern。比方说,我们学习某个具体的算法,如SVM。理解SVM的每个步的推导是很关键的。如果我们理解了每一步的推导,这样我们就可以顺着思路,把完整的SVM算法一步步的推导出来。这样就在我们的大脑中形成了一个如上图的neural pattern。注意,这个只是一个临时的neural pattern,还没有形成chunk,随着时间推移是会遗忘的。

practise

通过理解,我们对所学知识形成了一个neural pattern。但是,这还远远不够。我们需要练习来加深我们的neural pattern。practise在这里有两个作用。首先通过practise加深我们的印象,其次,practise的过程可以让我们举一反三,让所学的知识可以嵌入到已有的知识体系中。practise可以帮助我们建立所学知识的context。context指的是这个知识点的相关环境,什么时候可以用这个算法或定理,什么时候不适用。有什么优缺点?与已有知识的关联等等。通过practise可以自下而上的形成所学知识的context。

recall

最后一个步骤是recall。课程里并没有把recall放到这个步骤中,但是也着重强调了recall是一种非常有效的学习方式,比起单纯的不断复习。回忆-复习-回忆这样的过程比复习-复习-复习这样的过程来得更加有效率。为什么呢?如果经过前面三个步骤,我们基本形成了chunk,这个chunk已经保存在我们的永久记忆里了。recall的作用,就是让我们练习随时随地地可以从记忆里头读取出这个chunk。这个过程有点类似于形成索引的过程。虽然我们把数据以chunk的形式保存下来,但是我们需要一个高效的查找方式,recall可以帮助我们形成chunk的索引,这样每次需要的时候,我们可以非常快速的回想起这个chunk。

Illusions of Competence

“Illusions of Competence”指的是学习过程的一种现象,就是我们常常认为我们掌握了某个知识点,但是实际上你并没有掌握。这实际上是一种自我欺骗,而且是一种无意识的欺骗,你给了自己这样的幻觉:你已经完全掌握了。课程提了三个重要的方法帮助我们打破这种幻觉:

  1. recall
  2. test yourself
  3. make mistakes

recall

前面已经提到了recall的重要性。recall其实就是“mental imformation retrive”的过程。recall的过程也就是帮助你建立chunk的过程,同时帮助你建立chunk的hook(钩子),让你可以很容易的获取这个chunk。如下图所示:

recall也可以看成是mini-test。recall比单纯的反复学习一个材料更加的有效率。

test yourself

打破幻觉的另一个好的方法就是测试。学完一部分的内容后,我们可以做一些练习和测试,来检查自己是否掌握。

make mistakes

在测试过程中犯的错误,可以很好的帮助你知道哪些地方你其实理解不到位。这样,我们可以针对这些地方再重新的理解和学习。

Value of a Library of Chunks

通过学习,我们会在脑海中积累很多很多的chunks,这些chunks构成了一个library,像个仓库一样。这一节的课程主要讨论了chunk library的作用。

  • transfer learning
  • figure out novel approach for new problems
  • help to embed what you learned to established knowledge systems

chunk可以帮助我们理解新的概念和理论。在某个领域的chunk有时候可以帮助我们理解其他领域的概念。例如,计算机的很多概念,都可以和这门课的很多结论类似。比如chunk的概念,其实可以想象成数据按照一定格式存储在外存。再比如recall可以帮助我们形成chunk hook。其实也就类似于我们对存储的数据建立索引的过程。极其相似。

chunks可以帮助我们解决新的,未曾遇到的问题。当你的大脑中建立了很多的chunks时,diffuse think可以让chunks之间建立联系,从而找到一些新的解决问题的思路和方法。下图形象地说明了这个过程。

最后,小的chunks可以按照有条理的方式组织成更大的chunks。chunk libray的建立过程就是把所学的chunks有条理的组织的过程,通过有条理的组成这些chunks,可以帮助你把这些chunks嵌入到你的知识体系中。

Overlearning,Choking,Einstellung,and Interleaving

Overlearning

学习的一个误区就是overlearning。它指的是我们反复的学习一个知识点,定理或者概念。反复学习虽然可以帮助我们强化neural pattern。但是它容易让我们仅仅掌握容易的部分,而忽略难的部分,从而产生你已经掌握的幻觉。我觉得避免overlearning的方式就是通过recall和test来检验你是否真的掌握了,从你做错的练习中看出自己哪些是比较难以掌握的,你还不懂的地方。

Choking

学习的另一个误区就是过早,盲目的开时做练习题。你需要先看完课本,或者听完课程才开始做一些练习,而不是上来就做练习。

Einstellung

Einstellung是指“思维定势”。通常,在我们大脑中已经建立的chunks会影响,阻碍我们寻找更好的方法。因为你的大脑会潜意识里对某些情况形成比较固定的解决方法。这是最省事的方式。从进化论的角度看,思维定势可以很好的帮助我们应对反复出现的问题,节约能量。但是缺点也很明显,我们很难打破思维定势,从而找到更好的方法。

Interleaving

打破思维定势的一个好的方法就是Interleaving。举一个很形象的例子。比如你学完课本的某个章节后,开始做这一章的习题时。你会很自然的用这一章所学的方法来解这些习题。这就是所谓的“思维定势”。打破“思维定势”的方法就是交叉(Interleaving)。你可以把你学过的章节练习,混合起来,一起练习,打破了你的思维定势。或者在做这些练习的时候,问下自己,为什么用这种方法,而不是其他的方法。这样帮助你建立每种方法的context,也就有助于你打破定势。