还有一个很重要的问题亟待解决:我们怎样设置控制模式识别系统工作的诸多参数?这些参数可能包括:矢量量化阶段的矢量数、层级状态的初始拓扑结构(在隐马尔可夫模型的训练阶段删去未用过的层级结构状态)、层级结构中每层的阈值、控制参数数量的参数等。我们可以凭直觉设置这些参数,但结果却不会太理想。
我们称这些参数为“上帝参数”(God parameters),因为这些参数早在决定隐马尔可夫模型拓扑结构的自组织方法出现之前就存在了(生物学上是指早在他学习之前,他的新皮质层级结构中就有了相似的联结)。这也许会造成某种意义上的误读,尽管在进化过程中我们可能会认为都出于上帝之手(虽然我真的认为进化是一种精神过程,对此第9章会进行讨论),但这些基于DNA的初始设计细节是由生物进化过程决定的。
在模拟分层学习机识别系统中设定这些“上帝参数”时,我们又从大自然中得到了启发,即在模仿大自然进化的基础上对之进行完善。这就是所谓的进化或者遗传算法,它包含了模拟的有性繁殖和突变。
下面是对这一算法的简单描述。首先,为了给出问题的解决方案,我们需要将所有可能的解决方案进行编码。如果问题是电路设计参数的优化,我们就列出决定这条电路特点的所有参数(每个参数都有特定的比特值)的目录。这个目录就是遗传算法中的遗传代码。然后,我们随机生成数以千计或更多的遗传代码。每个这类代码(体现了一套给定参数)都被视为“解决方案”的模拟机制。
通过使用评估每组参数的给定方法,我们可以在模拟环境中评估每种模拟机制。这种评估是遗传算法能否取得成功的关键。举个例子,我们会运行参数产生的每个程序,并用合适的标准(是否完成了任务,完成任务所耗费的时间等)对其加以评估。最好的问题解决方案(最好的设计)会被选择出来,其他的则会被淘汰。
接下来就是优胜者的自我繁衍,直到繁衍的个数与模拟生物数量相同时,这个过程才会停止。这个过程仿照了生物的有性繁殖,换句话说,后代的诞生通常是从双亲那里分别遗传一部分基因,然后形成自己的基因。通常,雄性机制和雌性机制没有明显的差别,任何一对父母都可以孕育新生命,所以我们这里讨论的是同性婚姻。这可能不像自然界中的有性繁殖那样有趣,但是这种繁殖仍有双亲。在模拟机制繁殖的过程中,我们允许染色体发生突变(随机变化)。
现在,我们仅仅完成了一代模拟进化,接下来要做的就是重复上述步骤生成更多代新机制。每代机制完成后,我们会评估其改善程度(利用评价函数计算所有优胜机制的平均改善度)。如果两代机制之间的改善程度非常小,就停止这种繁衍进程,并使用上一代的最优机制。[156]
遗传算法的关键是:人类并不直接将解决方案编程,而是让其在模拟竞争和改善的重复过程中自行找到解决方案。生物进化力量虽强大但是过程却太过缓慢,所以为了提高其智能,我们要大大加快其进化速度。计算机能在几个小时或者几天之内完成数代的进化,但有时我们会故意让其花费数周时间完成模拟成百上千代的进化。但是我们只需重复这种过程一次。一旦这种模拟进化开始,我们就可以用这种高度进化、高度完善的机制快速解决实际问题。对于语音识别系统,我们就可以用这种机制完善网络的初始拓扑结构以及其他重要参数。在这一过程中我们采用两种智能方法:利用遗传算法模拟生物进化,得出最优机制;利用隐马尔可夫层级模型模拟人类学习过程中起重要作用的皮质结构。
遗传算法成功的另一项关键是,你必须找到一种能有效评价每种可能性解决方案的方法。考虑到每一代模拟进化过程中的数千种可能方案,评价方法必须简单易行。在解决那些变量很多又需要计算出精准分析方案的难题时,遗传算法非常有效。例如,我们在设计发动机时就得处理超过一百个变量,而且还需满足众多的限制条件。与传统算法相比,美国通用电气公司利用遗传算法设计出了能够更好地满足限制条件的喷气引擎。
在使用遗传算法时,需求必须明确。遗传算法虽能完美地解决货物储存划区问题,但步骤却很繁杂,因为程序员忘了在评价函数中加入减少步骤这一条件。
斯科特·德雷弗(Scott Drave)的“电动羊”项目(Electric Sheep Project)正是遗传算法的艺术杰作。“电动羊”项目的评价函数使用人类评估程序,这种程序融合了数千人的开源合作。“电动羊”项目会随着时间的变化而变化,读者可以登录网站electricsheep.org观看。
要解决语言识别中的难题,遗传算法和隐马尔可夫模型的结合极其有效。运用遗传算法模拟进化可以大大地提高隐马尔可夫层级模型结构网络的性能。生物进化模拟的机制远远优于基于直觉的原始设计。(www.xing528.com)
在此基础上,我们又尝试对整个系统作了一点微小的调整。例如,我们会对输入信息做出微小扰动(幅度很小的随机变化)。再者,我们还尝试让马尔可夫模型算出的结果影响其临近模型的运算,从而使某个模型“混进”其相邻的模型中。虽然当初我们不曾想到这些调整和新皮质结构之间的关系,但后来事实证明两者极为相似。
试验开始时,这类改变会影响系统的性能(以识别准确率为标准)。但当我们开动进化程序(即遗传算法)后,这些被放在适当位置的改变调整项就会对应地适应系统,系统也因为这些引入的调整项得到优化。总体来看,这些改变优化了系统的性能。如果我们剔除这些调整项,系统的运行效能也会随之下降。因为系统已经进化升级,新的系统也因此更能适应新变化。
对输入信息作出微小、随机的调整也可以提高系统的性能(重启遗传算法),因为这种做法解决了自主系统中著名的“过度契合”难题。否则,这样的系统就会过分局限于试验样品中的特殊例子。通过对输入信息进行随机调整,数据中更稳定的不变特征就会凸显出来,系统也能够提炼出更深层级的语言模式。只有在运行遗传算法,并以随机特征为变量时,这种方法才有效。
如此一来,在理解生物皮质回路时,困难就来了。例如,我们注意到,一个皮质联结产生的信息可能会溜到另外一个皮质联结中,这就形成了人类大脑皮质联结的工作方式:电化学的轴突和树突显然受到其临近联结电磁效应的影响。假设我们在试验中把这种影响从人类大脑中剔除——虽然实际操作很难但并非不能实现,假设我们成功地完成了该项实验,并发现去掉神经泄露的皮质电路工作性能有所下降,我们便可据此得出结论:这种现象是大脑进化的结果,也对皮质电路的高性能起着至关重要的作用。必须指出的是,由于联结之间复杂的互相影响,这种结果表明:实际上,概念层级结构模式的有序模型以及层级之下的预测更为复杂。
但这种结论也并不准确。回想一下我们基于隐马尔可夫层级模型建构的模拟皮质,我们也做了类似神经元间交叉谈话的调整。如果适当地运行进化程序,系统的性能就会随之恢复(因为进化程序已经适应了);如果剔除这种交叉谈话,系统的性能又会随之下降。从生物学意义上来说,进化(生物进化)确实会造成这种现象。要适应新因素,生物进化会重新设定详细的系统参数,除非重新进化,否则参数的改变会降低系统性能。这项试验在模拟环境中可以实行,因为在模拟环境中,进化只需要几天或几周,但是在生物环境中却很难做到,因为这需要数万年的时间。
那么,我们该如何分辨以下几个方面呢?究竟人脑新皮质的特定设计特征是不是生物进化引起的关键创新,或者说对智力水平有很大影响,又或者说仅仅是系统设计所需,但却不一定形成了?只需加入或删除设计细节的特定变量(如有无联结交叉谈话),我们就能回答这些问题。如果选取微生物作为试验对象,我们也可以观察生物进化是如何进行的,因为微生物代际进化只需要几小时,但同样的实验以人类这种复杂的生物为研究对象却无法实行。这也是生物学的缺点之一。
回到语音识别上来,我们发现,如果分别让(1)负责建构音素内部结构的隐马尔可夫层级模型和(2)负责建构单词和词组的隐马尔可夫层级模型分开运行进化程序(遗传算法),语音识别的效果会更加理想。系统的两层都使用了隐马尔可夫层级模型,但是遗传算法可以在不同的层级形成不同的设计变量。该方法中,两层级之间的现象建构是可以共存的,如:连读时,音素的某些音就会模糊化,“How are you all doing”可能会转变为“How’re y’all doing”。
不同的大脑皮质区域也有可能出现类似的现象,因为基于处理过的模式类型,它们已经形成了细微的差别。尽管所有区域都使用相同的新皮质算法,生物进化还是有充足的时间调整每部分的设计,使得模式之间的配合达到最优化。然而,就像之前讨论过的,神经系统学专家和神经病学专家已经注意到了这些区域中的巨大可塑性,而这种可塑性为一般神经算法提供了依据。如果每个区域的基本方法不同,皮质区域之间是不会互相交流的。
通过结合不同的自主算法,我们构建的系统获得了成功。在语音识别的过程中,它们能够首次识别流畅的句子和相对来说比较清晰的词语发音。就算说话者、语调和口音有所差异,系统也能保持相当高的识别率。当下这个领域的代表产品是Nuance公司针对计算机开发的产品DragonNaturally Speaking(版本11.5)。假如对语音识别率有高要求的话,我建议尝试一下这款产品,因为该产品的识别率可以达到99%,而且通过句子和无限词汇识别的训练适应你的声音后,产品的识别率可能会更高。对苹果公司而言,Dragon Dictation是简单且免费的应用,苹果用户都可以使用该应用。苹果手机上的Siri程序也采用了相同的语音识别技术来识别说话者的话语。
这些系统的表现证明了数学的威力。借助数学方法,就算无法直接进入说话者的大脑,我们也能够了解说话者新皮质内的活动,后者在Siri这样的系统中,对识别说话者语言和确定说话者语义方面起着至关重要的作用。我们也会好奇:如果我们真的能够观测到说话者新皮质内部的活动,能否发现软件计算出的隐马尔可夫层级模型的联结和权重?我们基本上无法找到精确的匹配,因为与电脑中的模型相比,神经元结构细节差异更大。但我坚信:实际生物和模拟出的模型之间的高精确性肯定存在着某种数学对等体,否则,那些模拟出来的系统为什么会像它们那样运行呢?
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。