遗传算法需要某种方式来奖励具有更大传播能力的优良基因。如果您无法从不良基因中分辨出优质基因,那么您根本就无法使用遗传算法。
为了使遗传算法起作用,您必须允许较适合的解决方案优先于较不适合的解决方案进行重现。否则,您将只尝试随机解决方案。
这是根据我的经验得出的一个典型示例:开发第一个语音拨号系统时,我们很难找到一种算法,可以将口述姓名与相同姓名的存储副本进行匹配。有人告诉我们,从25个名字中选出一个名字就可以达到95%的准确性。我们有一个存储的语料库,每个人说25次,每次10次。
首先,我们开发了一种输入系统,该系统可测量口语单词的长度和几个标准化块中的频率能量。然后,我们开发了一种算法,为这些参数上的匹配分配权重,并通过这些权重比较了两组参数。
现在,我们迈出了最后一步-这些权重的值应该是多少?
我们创建了1000组随机权重,并针对语料库对其进行了测试。我们扔掉了表现最差的500强。对于剩下的500个,我们将每个重复一次,并在其中一个重复一遍,随机提高或降低其中一个权重。
我们在计算机上重复了此过程大约两个星期,直到最终它的一组权重达到了95%的准确性标准。然后我们对不在语料库中的数据进行了测试。准确率约为92%。因此,我们花了更长的时间才能使语料库的准确性达到98%,而权重集对不在语料库中的数据产生了95%的准确性。
因此,关键是,您必须具有适应度函数才能运行遗传算法。如果您没有办法从坏基因中分辨出好基因,那么如何确定好基因可以繁殖而坏基因却不能呢?