概念网络上的高效学习方式

对于一个的集合\(L=\left\{1,2,\cdots, i, \cdots, \right\}\)中每个个体的学习,如果给定了每一个学习对象的难度\(\vec{C}=\left\{c_{i}\right\}\)和价值\(\vec{V}=\left\{v_{i}\right\}\),我们的学习顺序\(\vec{S}=\left[s_{1}, s_{2}, \cdots, \right]^{T}\)的问题是这样定义的:

  1. 给定\(\vec{S}\)之后在第\(m\)步的累计成本为
  2. \begin{align}
    C\left(\vec{S}, m\right) = \sum_{j=1}^{m} C_{s_{j}}
    \end{align}

  3. 给定\(\vec{S}\)之后在第\(m\)步的累计价值为
  4. \begin{align}
    V\left(\vec{S}, m\right) = \sum_{j=1}^{m} V_{s_{j}}
    \end{align}

我们希望某种意义上——例如在学习过程中的任何一步或者都某个具体的第M步——成本最小,价值最大。

如果这些个体之间相互没有联系,则我们没有特别好的巧妙的办法,就是一个简单的优化问题。例如,我们可以先考虑两种极限:成本完全一样或者价值完全一样的情况。例如,前者,这个时候对于任何的\(\vec{S}\),\(C\left(\vec{S}, m\right)\propto m\),我们只能考虑优化\(V\left(\vec{S}, m\right)\)。于是我们发现,按照价值的递减顺序,也就是选择价值大的来先学就好。这时候能够保证在任何一步\(V\left(\vec{S}, m\right)\)都是最大的。更一般的成本函数和价值函数,应该,运筹学之类的学科也有答案了。如果没有,也无所谓,交给运筹学去解决好了。

更重要的问题是,一旦个体之间有联系,会如何?也就是说,一旦一个字\(j\)的学习难度会随着相联系的字\(i\)的学习状态(是否已经被学习到)而改变,这个时候,如何解决上面的优化问题。

那,我们先来看学习成本会如何变化。本质上,这个变化机制当然应该来源于实际学习过程。这里,我们先给出一个描述框架和大概描述。

我们认为,概念之间的逻辑关系,可以做为关联的客观表现。以汉字为例,汉字之间通过结构关系相互联系,这一点是客观的(尽管繁体字和简体字在汉字之间是如何从结构上联系起来的这一点上不一样。先考虑例如仅仅简体字)。例如:木——林——森,人——从——众,水——冰——淼,(木,一)——本,(人,本)——体。当然,这个客观的结构联系是否就能代表逻辑联系,是有待讨论的。也就是说,在汉字集合上,存在着一个逻辑关系网络,网络的每一条边代表上面举例中的一个字\(i\)(更简单的字,处在更底层)成为另一个字\(j\)(更复杂的字,处在更上层)的一部分这样的结构关系\(A=\left(a^{i}_{j}\right)_{N\times N}\)(这个矩阵的标记采用的是投入产出习惯的符号,从\(i\)投入到\(j\)。)。这个结构关系上面叠加了一层逻辑关系。这个逻辑关系可以用来改变学习成本。再次强调,这仅仅是一个理想模型。记每一个概念的当前状态——学到或者没有学到——为\(\vec{K}\left(t\right)\)或者每一个概念\(i\)的状态\(k_{i}\left(t\right)=\pm 1\)。例如,我们可以定义每一个字在当前时刻的学习成本为一个由网络结构和网络上各个顶点的当前时刻的状态决定的函数\(c_{i}=c_{i}\left(A,\vec{K}\left(t\right)\right)\),而\(\vec{K}\left(t\right)\)实际上是学习顺序\(\vec{S}\)的函数。于是,学习成本\(C\)和学习成果\(V\)都是学习顺序\(\vec{S}\)的函数。当然,这个函数由于有网络关系,比完全没有联系的情况要复杂。但是,给定网络\(A\),那么\(C\left(\vec{S}, m; A\right)\)和\(V\left(\vec{S}, m; A\right)\)就是完全确定的函数,就可以讨论优化问题。下面给出一种我们使用过的成本决定机制。

      
  1. 认识下层字\(j\),以一定的概率降低上层字\(i\)的学习成本,\(\omega^{j, \left(\uparrow\right)}_{i} \),和结构矩阵的元素\(a^{j}_{i}\)有关。原则上可以不遵循结构矩阵,来自于其他实证关系。做为一个简化模型,我们可以假设\(\omega^{j, \left(\uparrow\right)}_{i} = 0 \mbox{或者} a^{j}_{i}\)。更复杂的需要考虑理据性。
  2. 认识上层字\(j\),以一定的概率降低下层字\(i\)的学习成本\(\omega^{j, \left(\downarrow\right)}_{i} \),和结构矩阵的元素\(a^{i}_{j}\)有关。原则上可以不遵循结构矩阵,来自于其他实证关系。做为一个简化模型,我们可以假设\(\omega^{j, \left(\downarrow\right)}_{i} = 0\)。更复杂的需要考虑理据性。
  3. 有了这个改变学习成本的概率,我们再来看学习成本改变的值。采用递归定义:
  4. \begin{align}
    c_{i}\left(t\right) = \left(1-k_{i}\right) \cdot \left[\Pi_{u}\left(1-k_{u}\omega^{u,\left(\downarrow\right)}_{i}\right)a^{i}_{u}\right]\cdot \left\{1+\sum_{d}\left(1-k_{d}\omega^{d\left(\uparrow\right)}_{i}\right) \cdot \left[1+\left(1-k_{d}\right)c_{d}\left(t\right)\right]a^{d}_{i}\right\}.
    \end{align}

第一项的含义是,如果字\(i\)本身是学习过的,也就是\(k_{i}=1\),则\(c_{i}\left(t\right)=0\)。第二项的含义是,每一个字\(i\)上层字\(u\)如果学习过,则会成比例地降低字\(i\)的学习成本。第三项表示字\(i\)的学习成本包含三项——整体组合成本(按照单位一算),有几个子结构,每一个子结构如果不认得的话成本的累计。同时,如果下层的字学习过,则整体上会按照降低成本的几率再次降低子结构的成本(那时候子结构自己已经认得了,没有学习成本了)。由于采用了递归定义,整个网络不能有循环。其次,递归的每次都是从当前需要算成本的开始,然后往下计算——递归表达式中仅仅出现了往下的顶点的学习成本。

我们在Efficient learning strategy of Chinese characters based on network approach中的成本更新机制实际上就是上面的一般表达是的简化模型:
\begin{align}
c_{i}\left(t\right) = \left(1-k_{i}\right) \cdot \left\{1+\sum_{d}\left[1+\left(1-k_{d}\right)c_{d}\left(t\right)\right]a^{d}_{i}\right\}.
\end{align}
就算在这个简化机制下,我们也没有精确求解开这个优化问题。而是,基于对问题的理解,提出了一种近似算法:顶点权分配算法——后来我们发现实际上是一种广义投入产出分析计算。

现在,我们有了一个结构网络\(A\),两个这个网络上的逻辑关系\(\Omega^{\left(\downarrow\right)}, \Omega^{\left(\uparrow\right)}\),有一个学习顺序\(\vec{S}\),一个依赖于学习顺序的成本更新机制\(M\left(\vec{S}\right)\left|\right._{\vec{C}\left(t-1\right)\rightarrow \vec{C}\left(t\right)}\),以及初始条件\(\vec{C}\left(0\right)\)。还有一个价值变量\(\vec{V}\left(t\right)\),或者更复杂一点一个可能依赖于学习顺序的价值更新机制——这里当做价值不更新。

问:什么样的学习顺序\(\vec{S}\),会使得整个学习过程、在这个过程中的某个时间点m、或者在某个时间点m之前的过程中的学习效率最高——例如用平均每个字的学习成本来衡量。也可以为了学习到给定学习对象集合\(T=\left\{t_{1}, t_{2}, \cdots\right\}\)里面的所有的字的整体成本。

语文在字的层面的理解型学习

汉字可以一个一个来记忆和学习,也可以在课文中通过理解其用法来学习。这个就是通常学生学习汉字的方法。在实际学习过程中,这种学习方法要付出大量的记忆性的努力,还有通过大量的重复练习来巩固。

对于中国人,这个不是大问题,因为,汉语是已经会的,能够认字和写字也就解决了大部分的问题了。

对于不会汉语的人来说,由于同时要学会汉字和汉语,两者的联系又不是很紧密(看到一个汉字不能很好地提示其含义和读音,还有用法)。以语言和词汇为主的学习方式导致汉字成了一个语言的简单的记忆单位。例如“单位”这个词,有可能英语背景的学习者直接就整体认知成为”unit”,而不能明白其实“单”是”single”的意思“位”是”unit”或者“position”的意思,更加不能明白为什么“单位”两个字合起来就能表示”unit”的意思。于是,也就不能迁移(例如理解“单身”——如果也能够拆分成“single body”的意思就很好学会了)。同样的情况可以发生在“汉语”这个词上。只有理解了“汉语”的内在结构才能明白“汉语、汉字、汉族、汉学”等等之间的内在联系。这个说的是在词汇的层次要注意构成词汇的汉字之间的联系,也就是词汇的联系。

汉语其实还有更加深刻的内部结构:汉字本身也是有内部基本单位的,这些单位也是通过某种联系有机地结合在一起的。例如“位”这个字,为什么是”position”的意思呢?其实,这是两个不同的部分“人”和“立”,合起来表示“人站着的位置”的意思。这个是汉字的非常重要的特征。一个好的学习者,或者好的学习方案就要利用好这个特征。

例如,“黑”这个字来源于把“器皿”放在“火”上烤。如果你干过这样的事情,例如小时候玩蜡烛,就知道什么是黑了。接着这个黑字,如果我们把这个积累在器皿上的黑东西扣下来,揉成一团,象“土”一样,就得到了“墨”。再例如,跋山涉水的“涉”,原来的写法(现在还能够稍微看出来一点点),是两个脚趾头的“止”放在“水”的两边,于是就是徒步过小河的意思。顺便出道题,“往”为什么不念“主”的音,而是念“王”的音啊?通过这些例子,我相信读者就可以体会到,一旦把字的结构如何拆分、为什么这样的拆分合起来可以表达这个字的读音含义,那么,这个字就容易学了,甚至学会了也更容易用了。也就是,学活了,效率高成本低了。

于是,这就有了两个问题:第一,这样的汉字内部结构的拆分和解释的基础数据我们有吗?第二,有了这个基础数据,我们能够如何帮助汉字学习呢?

第一个问题,其实是汉字研究内部的问题。不过,如果没有考虑到第二个问题的话,其拆分,当然也很有用,不一定能够满足后面的需求。幸好,在汉字的历史上这样的拆分是有的,例如《说文解字》,尽管还不够。

汉字结构网络与理解型学习系统可以看到我们的拆分数据,以及分析计算的结果。这是一个大大的图:fullmap

第二个问题,分两个层次。在个体的层次,有了这个基础的拆分,就能够促进汉字学习者做理解型学习,也就是明白汉字的结构以及从这个结构引申到含义和读音,从而减少记忆负担。在整体的层次,我们可以问类似这样的问题:我们应该先学习哪些汉字,后学习哪一些呢?我们如何快速低成本地检测一个学习者认识哪一些不认识哪一些汉字呢?两个问题还可以合起来,了解了这个学习者所认识的字和不认识的字以后,如何利用这个信息来促进汉字的学习呢?例如,很容易想到,学习那些跨度不太远的与已经认识的字有内在联系的字可能会更容易一些。

我们的研究实际上,主要关注这个整体性的问题,也就是学习顺序、高效检测方法、个性化学习顺序这几个问题。当然,与汉字研究专家合作,建设汉字结构基础数据库也是正在开展的一个工作。

长期来看,我们还需要把汉字和汉语结合起来,开发学习材料,利用篇章的学习来带动汉字的学习,而且这个汉字的学习还需要一定程度上照顾我们的理想中的学习顺序。学习材料的开发和实验应该是一个循环上升的过程。推广或者产品化也是需要考虑的问题,不过那是其他人的事情了。很多的周边产品也可以考虑,例如,在汉字结构数据的基础上,开发一个图片或者动画形式的识字产品。例如,把整个学习顺序和检测顺序,以及学习材料做成一个汉字学习系统(软件)。

在这个工作里面,系统科学的思想,体现在从个体层次的问题到整体层次的问题的思考问题的角度上。另外,在技术上,我们需要设计好的数学模型来解决学习顺序的计算,高效检测算法的制定。同时,系统科学还体现在把一个领域的问题研究的比较深入以后,可以迁移出来,或者把别的领域的方法迁移过来。也就是系统科学所关注的类似的系统存在的一般性。

例如,实际上,你会发现,汉字的这样的利用汉字内部结构和联系(同时也是汉字之间的联系)的方式来促进学习(学习顺序和检测的问题),同样可以用来学习数学、物理学等逻辑关系比较清楚的科学。甚至,如果能够把条理不清楚的学科整理出条理来,学习效果的提升程度,应该比条理清楚的更好。

实际上,这个工作里面提出和发展的思想就是我们提出的“教的更少,学得更多”的理解型学习教学的核心。

参考文献:
1、Xiaoyong yan, Ying Fan, Zengru Di, Shlomo Havlin, Jinshan Wu, Efficient learning strategy of chinese characters based on network approach, PloS ONE, 8, e69745 (2013).
2、科普作家Philip Ball在www.bbc.com/future上对这个工作的述评