在霍德.利普森位于康奈尔大学的创意机器实验室中,奇形怪状的机器人正在学习爬行和飞行。这些机器人并不是人类工程师设计出来的,而是进化来的,和地球上生命多样性产生的过程一样。

使这些机器人进化的算法,是19世纪由查尔斯.达尔文发明的。那时他不觉得这是一种算法,部分原因在于当时缺少一个关键的子程序。一旦1953年詹姆斯.沃森和弗朗西斯.克里克提供了该子程序,进化就会进入第二个阶段:该进化是在计算机中而不是活体中进行,而且会比活体进化快10亿倍。该子程序的提倡者是约翰.霍兰德。

和许多其他早期的机器学习研究者一样,霍兰德开始时研究的是神经网络。在密歇根大学读研究生时,他阅读了罗纳德.费雪的经典著作《自然选择的遗传理论》。在该著作中,同时作为现代统计学奠基人的费雪,提出了关于进化的第一套数学理论。霍兰德认为该理论遗漏了进化论的精华,费雪孤立地看待每个基因,但是有机体的适应度就是它所有函数的复值函数。如果基因都是独立的,它们变量的相对频率会快速收敛至最大适应点,然后从此保持均衡。但如果基因相互作用,进化(追求最大适应度)就要复杂得多。

随着霍兰德的创作渐渐为人所知,遗传算法的关键输入就是一个适应度函数。给定一个特定程序和某个设定的目标,适应度函数会给程序打分,反映它与目标的契合度。

适应度函数将人在这个过程中扮演的角色概括化了。但和人的角色相比,更为微秒的部分是自然的角色。开始,是一群适应力不那么强的个体(可能是完全随机的个体)遗传算法得找出变量,然后这些变量依据适应度而被选择。DNA依据碱基对的序列对机体进行编码,同理,我们也可以依据一串二进制数字对程序进行编码。变量,无论在DNA序列中,还是在位串中,都可通过几种方法产生。最简单的方法就是点突变,即随意翻转位串中的一个比特值,或者改变一段DNA中的单个基本碱基。但对霍兰德来说,遗传算法的真正威力在于更为复杂的东西:性。

有性生殖包括在父亲和母亲的染色体之间进行材料交换,这个过程称作染色体交叉。这个过程会产生两条新的染色体,一条染色体交叉点的一边是母亲的染色体,另外一边则是父亲的染色体,另外一条相反。

遗传算法通过模拟这个过程发挥作用。它为每一代中两个适应力最强的个体进行配对,通过随机交叉父母位串点中的一点,让每对父母生出两个后代。将点突变应用到新的位串后,算法让这些点突变在其虚拟世界中释放。每个点突变都会反馈适应度得分,然后重复这个过程。每一代都会比前一代的适应度更高,当达到理想的适应度或者时间用尽时,这个过程就会结束。

和费雪梳理的简单模型相比,遗传算法有了很大的进步。通过一组方程来充分体现自然选择很困难,但将自然选择表达为一种算法又是另外一回事,而且这样还能够阐明许多其他棘手的问题。为什么一些物种会突然出现在化石记录中?能够证明这些物种是渐渐由早期物种进化而来的证据在哪里?1972年,尼尔斯.埃尔德雷奇和史蒂芬.杰伊.古尔德提出进化过程由一系列“间断平衡”组成,长期的停滞与短暂的快速变化相互交替,就像寒武纪爆发那样。

我们应注意遗传算法和多层感知器的差异程度。反向传播会在任何给定时间坚持单一假设,而且这个假设会渐渐改变,直到其适应某个局部最优值。遗传算法会在每一步中考虑整个群体的假设,而由于交叉行为,这些假设可以从这一代跨到下一代。将初始权值设为小的随机值后,反向传播才会确定继续进行下去。相反,遗传算法则充满随机选择:该使哪些假设成立并进行交叉(适应度更高的假设更有可能成为备选对象),该在哪里对两个字符串进行交叉,该使哪些比特的信息发生突变。反向传播为了预先设定的网络结构掌握权值;密集度更大的网络更为灵活,但掌握起来也更困难。除了通用式外,遗传算法不会对它们即将学习的结构进行预先假设。

因为这个原因,和反向传播相比,遗传算法陷入局部最优值困境的可能性更小,而且原则上也更有可能找到真正新颖的东西,但遗传算法分析起来也要难得多。

遗传算法的灵活之处就在于,每个字符串都暗含指数数量的构造块,被称为“基模”,因此该研究比它看起来的还要高效的多。这是因为字符串比特的每个子集都是一个基膜,代表可能合适的性能组合,而一个字符串有指数数量的子集。我们可以用这样的方法来代表基模,也就是用“*”来代替字符串中不属于该字符串的比特。相反,在群体中,一个特定的基模可能由许多不同的字符串来表示,而且每当这时,这些基模都会受到隐式评估。假设在下一代中仍然成立的概率与其适应度成正比,那会怎样?霍兰德表明,在这种情况下,和平均值相比,在某代中表示基模的字符串适应度越高——我们能期望的——在下一代中看到这些表示字符串的数量也越多。那么虽然遗传算法暗地里对字符进行操纵,它也会找到基模更大的可能性。随着时间的流逝,适应度更高的基模会主导群体。

在开始的几十年,遗传算法的阵营主要由约翰.霍兰德、他的学生、这些学生的学生组成。大约在1983年的时候,遗传算法解决的最大问题就是学会控制天然气管道系统。不过,大概同样的时间段,神经网络回归了,人们对进化计算的兴趣也开始浓厚起来。

霍兰德的学生中较为出色的是约翰.科扎。1987年,他在意大利参加会议,飞回加利福尼亚时,有一瞬间他突然醒悟了。我们要不要对成熟的计算机程序进行进化,而不是发展相对简单的东西。科扎称他的方法为“遗传编程”,在这个方法中,我们通过随机交换程序树的两棵子树,来对两棵程序树进行交叉。我们可以测量程序的适应度(或缺乏适应度),方法就是通过其输出值与训练数据中的准确值之间的差距来判断。

遗传编程的第一次成功是在1995年,也就是成功设计了电子电路。下一个里程碑于2005年到来,当时美国专利及商标局为一项专利颁奖,该专利根据遗传学设计,是工厂的优化系统。

演化新论者和联结学派重要的共同点是:他们都因为受到自然启发而设计了学习算法,不过后来分道扬镳了。演化新论者关注的是学习架构,对他们来说,通过参数优化来对演化的架构进行微调,这是次重要的事情。相反,联结学派更喜欢用一个简单、手工编写的结构,加上许多连接行为,然后让权值学习来完成所有工作。这就是机器学习版本关于先天和后天的争论,而且双方都有很好的论据。

在先天与后天的争论中,两方都没有完整的答案,关键在于找到如何将两方结合起来。终极算法既不是遗传编程,也不是反向传播,但它得包含这两者的重要部分:结构学习和权值学习。

“鲍德温效应”是由J.M.鲍德温于1986年提出来的。在鲍德温进化中,初次掌握的行为,之后会变成天生的本领。

进化寻求好的结构,而神经学则填满这些结构:这样的结合是我们走向终极算法最简单的一步。

机器学习的目标是尽可能找到最好的学习算法,利用一切可能的方法,而进化和大脑不可能提供学习算法。进化的产物有很多明显的错误。

与联结学派及演化新论者相反,符号学派和贝叶斯学派不相信“法自然”的说法。他们想从基本原理中找出学习算法该做什么,而且也包括我们人类。符号学派和贝叶斯学派想指出,弄明白“我们该怎样学习”也可以帮助我们了解人类如何学习,因为这两者大概不会完全不相关(远非如此)。特别指出的是,对于生存有重要意义、已经经历很长一段时间进化的行为应该就是最优的。

在20世纪八九十年代,联结主义者占支配地位,但现在贝叶斯学者的数量正在上升。最优学习是贝叶斯学派的中心目标,而且他们肯定自己已经找到了实现这个目标的方法。请看下章......

参考文献:

终极算法. [美] Pedro Domingos 著. 黄芳萍 译

终极算法【5】——进化学派相关推荐

  1. 重构机器学习算法的知识体系 - 《终极算法》读书笔记

    2019独角兽企业重金招聘Python工程师标准>>> 最近有幸从图书馆借阅了Pedro Domingos的<The Master Alogrithm>一书,这本书的中文 ...

  2. 终极算法【7】——类推学派

    类比是推动许多历史上最伟大科学进度的动力.当达尔文阅读马尔萨斯的<人口论>时,被经济和自然界中生存竞争的相似性触动,所以有了自然选择理论的诞生. 类比在机器学习中扮演重要性刚开始进展缓慢, ...

  3. 终极算法——第三章:符号学派:休谟的归纳问题

    本文为阅读总结个人认为书里概念性的.对本人有帮助的内容,仅供参考. 你是理性主义者还是经验主义者? 理性主义者认为,感官会欺骗人,而逻辑推理是通往知识的唯一可靠的道路.经验主义者认为所有推理都不可靠, ...

  4. 终极算法——第七章:类推学派:像什么就是什么

    本文为阅读总结个人认为书里概念性的.对本人有帮助的内容,仅供参考. 类比式推动许多历史上最伟大科学进步的动力. 类比推理有着突出的知识谱系.亚里士多德在他的相似律中就表达了这一点:如果两个事物相似,其 ...

  5. 大咖来信 | 张亚勤@2018:终日“闭关”读论文,思考终极算法

    李根 发自 凹非寺  量子位 报道 | 公众号 QbitAI 张亚勤是1998年决定回国的,距今已过20年. 这20年中,技术变革天翻地覆,中国发展也日新月异.他见证了互联网在中国的从弱到强,也看到了 ...

  6. JVM内存管理------GC算法精解(五分钟教你终极算法---分代搜集算法)

    转载自   JVM内存管理------GC算法精解(五分钟教你终极算法---分代搜集算法) 引言 何为终极算法? 其实就是现在的JVM采用的算法,并非真正的终极.说不定若干年以后,还会有新的终极算法, ...

  7. 终极算法——第一章:机器学习的革命

    本文为阅读总结个人认为书里概念性的.对本人有帮助的内容,仅供参考. 我们生活在算法的时代. 算法就是一系列指令,告诉计算机该做什么,即如何操作计算机中的几十亿晶体管.所有算法,无论多复杂,都能分解为三 ...

  8. 终极算法——第八章:无师自通

    本文为阅读总结个人认为书里概念性的.对本人有帮助的内容,仅供参考. 如果我们能重新回忆婴儿和蹒跚学步时期的自己,然后从新生儿的角度看待这个世界,那么许多关于学习的疑问,甚至关于存在本身,都会突然变得清 ...

  9. SEO优化指南与c语言,SEO终极算法:一篇文章精通SEO优化

    今天是2017年9月14日,我大概是2015年7月份开始接触的SEO,如今已经有整整两年多的时间了,怎么说我也算半个老司机了.之前我也写过关于SEO优化一整套的优化流程,比如SEO终极算法系列,这一次 ...

  10. 相控阵天线(四):阵列天线波束赋形(遗传算法、粒子群算法、进化差分算法、含python代码)

    目录 波束赋形简介 遗传算法波束赋形 粒子群算法波束赋形 差分进化算法波束赋形 智能算法比较 遗传算法波束赋形代码示例 波束赋形简介 根据期望的方向图辐射特性(如方向图形状.主瓣宽度.副瓣电平.方向性 ...

最新文章

  1. Hive1.2.1安装
  2. 看看C# 6.0中那些语法糖都干了些什么(终结篇)
  3. Python 把OpenCV 获取的图像传递到C
  4. 汇编-输出寄存器的值-输出值
  5. Navigation Drawer详解-Google推出的用来取代Sliding Menu的控件(一
  6. Kubernetes 也有局限性吗?
  7. Android 自己定义View (二) 进阶
  8. 洛谷 P4300 BZOJ 1266 [AHOI2006]上学路线route
  9. red hat linux综合实验报告,实验一 Red Hat Linux 9.doc
  10. dubbo绕过zookeeper直连本地提供方服务
  11. -rw-r--r--@ what's @
  12. python设计模式之MVC
  13. 最简单AS5048a模块鉴别和读取数据
  14. 利用tushare读取中国股市数据,并用绘制股票行情图形
  15. PS CC2019安装教程
  16. 后台如何清理软Raid
  17. js三座大山——异步机制和单线程
  18. IDEA 没识别 resources(找不到 resources)
  19. 代码仓库已移步http://202.119.84.104:8088/Socialbiao/bookdinner
  20. html 表格,列表,表单,select和下拉选框,textarea多行文本域,label关联控件,表单,浮动框架,结构化标签

热门文章

  1. H264压缩码率与GOP
  2. UDP传输 TCP传输
  3. 五个金念什么_5个火读什么???还有5个水 5个木 5个土 5个金
  4. 音频放大电路设计与制作
  5. 锐捷客户端linux登录密码忘记,锐捷S3760忘记密码的恢复方法
  6. 分布式系统统一登录的实现
  7. Spring Boot + OAuth2 统一认证SSO单点登录
  8. ListView控件的使用
  9. 第八课 实战重启验证注册机制
  10. 论软件产品的易用性(二)