第十三章 神经网络
一层被称作quot;隐单元quot;层,因为这些单元并不直接与网络外部的世界连接。最顶层是输出层。最底层的每个单元都与上一层的所有单元连接。中间层也是如此。网络只有前向连接,而没有侧向连接,除了训练以外也没有反向的投射。它的结构几乎不能被简化。
训练开始的时候,所有的权重都被随机赋值,因而网络最初对所有信号的反应是无意义的。此后给定一个训练输入,产生输出并按反传训练规则调节权重。过程如下:在网络对训练产生输出以后,告诉高层的每个单元它的输出与quot;正确quot;输出之间的差。单元利用该信息来对每个从低层单元达到它的突触的权重进行小的调整。然后它将该信息反传到隐层的每个单元。每个隐层单元则收集所有高层单元传未的误差信息,并以此调节来自最底层的所有突触。
从整体上看具体的算法使得网络总是不断调节以减小误差。这个过程被多次重复。(该算法是普适的,可以用于多于三层的前向网络。)
经过了足够数量的训练之后网络就可以使用了。此时有一个输入的测试集来检验网络。测试集是经过选择的,它的一般(统计)特性与训练集相似,但其他方面则不同。(权重在这个阶段保持不变,以便考察训练后网络的行为。)如果结果不能令人满意,设计者会从头开始,修改网络的结构、输入和输出的编码方式、训练规则中的参数或是训练总数。
所有这些看上去显得很抽象。举个例子或许能让读者清楚一些。特里·塞吉诺斯基和查尔斯·罗森堡(C talk)。它的任务是把书写的英文转化成英文发音。英文的拼法不规则,这使它成为一门发音特别困难的语言,因而这个任务并不那么简单易行。当然,事先并不把英语的发音规则清楚地告诉网络。在训练过程中,网络每次尝试后将得到修正信号,网络则从中学习。输入是通过一种特殊的方式一个字母接一个字母地传到网络中。NEt talk的全部输出是与口头发音相对应的一串符号,为了让演示更生动,网络的输出与一个独立的以前就有的机器(一种数字发音合成器)耦合。它能将NEt tallk的输出变为发音,这样就可以听到机器quot;朗读quot;英语了。
由于一个英语字母的发音在很大程度上依赖于它前后的字母搭配,输入层每次读入一串7个字母。①输出层中的单元与音素所要求的21个发音特征②相对应,还有5个单元处理音节分界和重音。图56给出了它的一般结构。③
他们使用了两段文字的摘录来训练网络,每段文字都附有训练机器所需的标音法。第一段文字摘自梅里亚姆-韦伯斯特袖珍词典。第二段摘录则多少有些令人奇怪,是一个小孩的连续说话。初始权重具有小的随机值,并在训练期内每处理一个词更新一次。他们编写程序使得计算机能根据提供的输入和(正确的)输出信息自动地完成这一步。在对真实的输出进行判断时,程序会采纳一个与真实发音最接近的音素作为最佳猜测,通常有好几个quot;发音quot;输出单元对此有关系。
聆听机器学着quot;读quot;英语是一件令人着迷的事情。①最初,由于初始连接是随机的,只能听到一串令人困惑的声音。NEt talk很快就学会了区分元音和辅音。但开始时它只知道一个元音和一个辅音,因此像在咿呀学语。后来它能识别词的边界,并能发出像词那样的一串声音。在对训练集进行了大约十次操作之后,单词变得清楚,读的声音也和幼儿说话很像了。
实际结果并不完美,在某种情况下英语发音依赖于词意,而NEt talk对此一无所知。一些相似的发音通常引起混淆,如论文(t;t;音。把同一个小孩的另一段例文作为检测,机器完成得很好,表明它能把从