器)连接在一起来模拟他们的非常简单的网络。现在已发展出了复杂得多的神经网络,这得益于现代计算机的运算速度得到了极大的提高,也很便宜。现在可以在计算机(这主要是数字计算机)上模拟检验关于网络的新思想,而不必像早期的研究那样仅靠粗糙的模拟线路或是用相当困难的数学论证。
1986年出版的《平行分布式处理》一书从1981年底开始经过了很长时间的酝酿。这很幸运,因为它是一个特殊算法的最新发展(或者说是它的复兴或应用),在其早期工作基础上,很快给人留下了深刻的印象。该书的热情读者不仅包括脑理论家和心理学家,还有数学家、物理学家和工程师,甚至有人工智能领域的工作者。不过后者最初的反应是相当敌视的。最终神经科学家和分子生物学家也对它的消息有所耳闻。
该书的副标题是“认知微结构的探索”。它是某种大杂烩,但是其中一个的特殊的算法产生了惊人的效果。该算法现在称作“误差反传算法”,通常简称为“反传法”。为了理解这个算法,你需要知道一些关于学习算法的一般性知识。
在神经网络有些学习形式被称作是“无教师的”。这意味着没有外界输入的指导信息。对任何连接的改变只依赖于网络内部的局部状态。简单的赫布规则具有这种特点。与之相反,在有教师学习中,从外部向网络提供关于网络执行状况的指导信号。
无教师学习具有很誘人的性质,因为从某种意义上说网络是在自己指导自己。理论家们设计了一种更有效的学习规则,但它需要一位“教师”来告诉网络它对某些输入的反应是好、是差还是很糟。这种规则中有一个称作“δ律”。
训练一个网络需要有供训练用的输入集合,称作“训练集”。很快我们在讨论网络发音器(nettalk)时将看到一个这样的例子。这有用的训练集必须是网络在训练后可能遇到的输入的合适的样本。通常需要将训练集的信号多次输入,因而在网络学会很好地执行之前需要进行大量的训练。其部分原因是这种网络的连接通常是随机的。而从某种意义上讲,脑的初始连接是由遗传机制控制的,通常不完全是随机的。
网络是如何进行训练的呢?当训练集的一个信号被输入到网络中,网络就会产生一个输出。这意味着每个输出神经元都处在一个特殊的活动状态。教师则用信号告诉每个输出神经元它的误差,即它的状态与正确之间的差异,δ这个名称便来源于这个真实活动与要求之间的差异(数学上δ常用来表示小而有限的差异)。网络的学习规则利用这个信息计算如何调整权重以改进网络的性能。
adaline网络是使用有教师学习的一个较早的例子。它是1960年由伯纳德·威德罗(bernardwidrow)和霍夫(m.e.hoff)设计的,因此δ律又称作威德罗-霍夫规则。他们设计规则使得在每一步修正中总误差总是下降的。①这意味着随着训练过程网络最终会达到一个误差的极小值。这是毫无疑问的,但还不能确定它是真正的全局极小还是仅仅是个局域极小值。用自然地理的术语说就是,我们达到的是一个火山口中的湖,还是较低的池塘。海洋,还是像死海那样的凹下去的海(低于海平面的海)?
训练算法是可以调节的,因而趋近局域极小的步长可大可小。如果步长过大,算法会使网络在极小值附近跳来跳去(开始时它会沿下坡走,但走得太远以致又上坡了)。如果步子小,算法就需要极长的时间才能达到极小值的底端。人们也可以使用更精细的调节方案。
反传算法是有教师学习算法中的一个特殊例子。为了让它工作,网络的单元需要具有一些特殊性质。它们的输出不必是二值的(即,或0,或者+1或-1),而是分成若干级。它通常在0到+1之间取值。理论家们盲目地相信这对应于神经元的平均发放率(取最大发放率为+1),但他们常常说不清应该在什么时候取这种平均。
如何确定这种“分级”输出的大小呢?像以前一样,每个单元对输入加权求和,但此时不再有一个真实的阈值。如果总和很小,输出几乎是0。总和稍大一些时,输出便增加。当总和很大时,输出接近于最大值。图54所示的s形函数(sigmoid函数)体现了这种输入总和与输出间的典型关系。如果将一个真实神经元的平均发放率视为它的输出,那么它的行为与此相差不大。
这条看似平滑的曲线有两个重要性质。它在数学上是“可微的”,即任意一处的斜率都是有限的;反传算法正依赖于这个特性。更重要的是,这条曲线是非线性的,而真实神经元即是如此。当(内部)输入加倍时输出并不总是加倍。这种非线性使得它能处理的问题比严格的线性系统更加广泛。
现在让我们看一个典型的反传网络。它通常具有三个不同的单元层(见图55)。最底层是输入层。下一层被称作“隐单元”层,因为这些单元并不直接与网络外部的世界连接。最顶层是输出层。最底层的每个单元都与上一层的所有单元连接。中间层也是如此。网络只有前向连接,而没有侧向连接,除了训练以外也没有反向的投射。它的结构几乎不能被简化。
训练开始的时候,所有的权重都被随机赋值,因而网络最初对所有信号的反应是无意义的。此后给定一个训练输入,产生输出并按反传训练规则调节权重。过程如下:在网络对训练产生输出以后,告诉高层的每个单元它的输出与“正确”输出之间的差。单元利用该信息来对每个从低层单元达到它的突触的权重进行小的调整。然后它将该信息反传到隐层的每个单元。每个隐层单元则收集所有高层单元传未的误差信息,并以此调节来自最底层的所有突触。
从整体上看具体的算法使得网络总是不断调节以减小误差。这个过程被多次重复。(该算法是普适的,可以用于多于三层的前向网络。)
经过了足够数量的训练之后网络就可以使用了。此时有一个输入的测试集来检验网络。测试集是经过选择的,它的一般(统计)特性与训练集相似,但其他方面则不同。(权重在这个阶段保持不变,以便考察训练后网络的行为。)如果结果不能令人满意,设计者会从头开始,修改网络的结构、输入和输出的编码方式、训练规则中的参数或是训练总数。
所有这些看上去显得很抽象。举个例子或许能让读者清楚一些。特里·塞吉诺斯基和查尔斯·罗森堡(charlesrosenberg)在1987年提供了一个著名的演示。他们把他们的网络称为网络发音器(nettalk)。它的任务是把书写的英文转化成英文发音。英文的拼法不规则,这使它成为一门发音特别困难的语言,因而这个任务并不那么简单易行。当然,事先并不把英语的发音规则清楚地告诉网络。在训练过程中,网络每次尝试后将得到修正信号,网络则从中学习。输入是通过一种特殊的方式一个字母接一个字母地传到网络中。nettalk的全部输出是与口头发音相对应的一串符号,为了让演示更生动,网络的输出与一个独立的以前就有的机器(一种数字发音合成器)耦合。它能将nettallk的输出变为发音,这样就可以听到机器“朗读”英语了。
由于一个英语字母的发音在很大程度上依赖于它前后的字母搭配,输入层每次读入一串7个字母。①输出层中的单元与音素所要求的21个发音特征②相对应,还有5个单元处理音节分界和重音。图56给出了它的一般结构。③
他们使用了两段文字的摘录来训练网络,每段文字都附有训练机器所需的标音法。第一段文字摘自梅里亚姆-韦伯斯特袖珍词典。第二段摘录则多少有些令人奇怪,是一个小孩的连续说话。初始权重具有小的随机值,并在训练期内每处理一个词更新一次。他们编写程序使得计算机能根据提供的输入和(正确的)输出信息自动地完成这一步。在对真实的输出进行判断时,程序会采纳一个与真实发音最接近的音素作为最佳猜测,通常有好几个“发音”输出单元对此有关系。
聆听机器学着“读”英语是一件令人着迷的事情。①最初,由于初始连接是随机的,只能听到一串令人困惑的声音。nettalk很快就学会了区分元音和辅音。但开始时它只知道一个元音和一个辅音,因此像在咿呀学语。后来它能识别词的边界,并能发出像词那样的一串声音。在对训练集进行了大约十次操作之后,单词变得清楚,读的声音也和幼儿说话很像了。
实际结果并不完美,在某种情况下英语发音依赖于词意,而nettalk对此一无所知。一些相似的发音通常引起混淆,如论文(thesis)和投掷(throw)的“th”音。把同一个小孩的另一段例文作为检测,机器完成得很好,表明它能把从相当小的训练集(1024个单词)中学到的推广到它从未遇到的新词上。②这称为“泛化”。
显然网络不仅仅是它所训练过的每一个单词的查询表。它的泛化能力取决于英语发音的冗余度。并不是每一个英语单词都按自己唯一的方式发音,虽然首次接触英语的外国人容易这样想。(这个问题是由于英语具有两个起源造成的,即拉丁语系和日尔曼语系,这使得英语的词汇十分丰富。)
相对于大多数从真实神经元上收集的资料而言,神经网络的一个优点在于在训练后很容易检查它的每一个隐单元的感受野。一个字母仅会激发少数几个隐单元,还是像全息图那样它的活动在许多隐单元中传播呢?答案更接近于前者。虽然在每个字母一发音对应中并没有特殊的隐单元,但是每个这种对应并不传播到所有的隐单元。
因此便有可能检查隐单元的行为如何成簇的(即具有相同的特性)。塞吉诺斯基和罗森堡发现“……最重要的区别是元音与辅音完全分离,然而在这两类之中隐单元簇具有不同的模式,对于元音而言,下一个重要的变量是字母,而辅音成簇则按照了一种混合的策略,更多地依赖于它们声音的相似性。”
这种相当杂乱的布置在神经网络中是典型现象,其重要性在于它与许多真实皮层神经元(如视觉系统中的神经元)的反应惊人地相似,而与工程师强加给系统的那种巧妙的设计截然不同。
他们的结论是:
nettalk是一个演示,是学习的许多方面的缩影。首先,网络在开始时具有一些合理的“先天”的知识,体现为由实验者选择的输入输出的表达形式,但没有关于英语的特别知识——网络可以对任何具有相同的字母和音素集的语言进行训练。其次,网络通过学习获得了它的能力,其间经历了几个不同的训练阶段,并达到了一种显著的水平。最后,信息分布在网络之中,因而没有一个单元或连接是必不可少的,作为结果,网络具有容错能力,对增长的损害是故障弱化的。此外,网络从损伤中恢复的速度比重新学习要快得多。
尽管这些与人类的学习和记忆很相似,但nettalk过于简单,还不能作为人类获得阅读能力的一个好的模型。网络试图用一个阶段完成人类发育中两个阶段出现的过程,即首先是儿童学会说话;只有在单词及其含义的表达已经建立好以后,他们才学习阅读。同时,我们不仅具有使用字母-发音对应的能力,似乎还能达到整个单词的发音表达,但在网络中并没有单词水平的表达。注意到网络上并没有什么地方清楚地表达英语的发音规则,这与标准的计算机程序不同。它们内在地镶嵌在习得的权重模式当中。这正是小孩学习语言的方式。它能正确他说话,但对它的脑所默认的规则一无所知。①
nettalk有几条特性是与生物学大为抵触的。网络的单元违背了一条规律,即一个神经元只能产生兴奋性或抑制性输出,而不会二者皆有。更为严重的是,照字面上说,反传算法要求教师信息快速地沿传递向前的操作信息的同一个突触发送回去。这在脑中是完全不可能发生的。试验中用了独立的回路来完成这一步,但对我而言它们显得过于勉强,并不符合生物原型。
尽管有这些局限性,nettalk展示了一个相对简单的神经网络所能完成的功能,给人印象非常深刻。别忘了那里只有不足500个神经元和2万个连接。如果包括(在前面的脚注中列出的)某些限制和忽略,这个数目将会大一些,但恐怕不会大10倍。而在每一侧新皮层边长大约四分之一毫米的一小块表面(比针尖还小)有大约5000个神经元。因而与脑相比,nettalk仅是极小的一部分。②所以它能学会这样相对复杂的任务给人印象格外深刻。
另一个神经网络是由西德尼·莱基(sidneylehky)和特里·塞吉诺斯基设计的。他们的网络所要解决的问题是在不知道
【打 印】 【来源:读书之家-dushuzhijia.com】