电子说
大胆想象一下,如果计算机可以自行编写程序,这会为人类带来什么样的变化?
与其辛苦研究计算机解决问题的方法论,敲出精准的代码,不如告诉计算机你想要什么,让它自己运行算法去解决你的需求。
听起来是不是很优秀呢?
“进化计算”正是研究这一大胆想法的学科。
我们可以把“进化计算”看做是一类人工智能和机器学习的分支。最早提出于20世纪50年代,进化计算旨在让计算机自行解决问题,而不需要人类编写一步步复杂的编程代码。理论上来说,这可能会让原本需要编写几周的代码在几分钟之内就可以实现。
这种理念可以让计算机去完成人类很难理解或者难以实现的复杂问题。计算机学家已经将进化计算应用到了一些实际问题上,包括为虾饲料配置最佳组合、最佳资产组合、通信技术、游戏行业和自动包装等。
那些研究进化计算的科学家们在这60多年时间里提出了大量建议。然而,进化计算的理论并没有在研究领域之外被广泛应用。
所以,为什么进化计算一直进展缓慢?
进化计算的原理
进化计算沿用了查尔斯.达尔文的自然选择学说,就是我们通常所知的“适者生存”。也就是说,一个物种里最弱小的(或者不太容易生存的)相继死亡而强壮的会生存。经过许多代以后,这样的物种会进化得越来越适应周围环境。
进化计算中,计算机为每个问题创造了大量的潜在答案。由于这些方案通常都是随机产生的,所以计算机刚开始肯定也不能我们关心的问题。但是,有些方案要比其他的更好。计算机可以从中排除最差的答案,找到最优解并发掘更多潜在答案。不同的答案会被融合在一起(这通常被叫做“交叉”),从而获得一个可以不断被测试和实验的新一代答案。
就像自然选择学说一样,另一个关于进化计算的重要元素是突变。所以,每过一段时间,被测试的答案就会产生一个既小而随机的变化。这就意味着,新的潜在方法会被创造,而仅仅使用交叉法是不能实现的。
理想情况下,由交叉和变异组合成的潜在新方案,会比他们的“父母”更好。但“进化”也不是每次都发生的,只有更多迭代产生,更好的解答才能浮现。对于进化学习来说,拥有数以万计的迭代是有迹可循的,就像自然选择需要数以万年去选择一个物种生存一样。
基因编程树
进化计算中最有名的莫过于基因编程。在基因编程中,一个计算机程序会让另一个程序经过演变来处理特定的问题。用户提供了一些衡量程序优劣的度量,然后演化过程接管,一切顺利的话,就会返回一个解决问题的程序。
遗传算子
尽管在科研界,基因编程研究已经取得了巨大进展,但是进化计算依旧很被难投入到商用中。这究竟是为什么呢?
为什么进化计算一直没被投入商用?
不同于其他很多技术,进化计算还未真正被商业领域接受。3D打印是在20世纪80年代发明的,经过很长一段时间的发展,现在已被用于工业制造。同样,增强现实、虚拟现实和人工智能也从研究领域中涌现出来,成为大型科技公司的主要产品。
阻碍进化计算商用的一个关键问题是,研究人员未能把重点放在商业领域感兴趣的问题上。
举个例子。计算机科学家已经深入研究了如何利用进化计算来为车辆制定路线。但是,研究者们通常只是研究问题的一些简单方面,而非是问题本质。很多汽车路径优化,用的是两点之间直线最短的原理。
在现实世界中,车辆行驶的路线很少遵循直线,而且必须考虑单向系统、故障、法律问题(比如司机必须休息多久)、时间限制以及其他很多问题。这种复杂性正是进化计算能够提供帮助的地方。
如果我们能够充分定义问题在现实世界中发生的情况,那么进化算法应该能够处理其复杂性。
另一个问题是,进化计算的结果有的时候很难解释。举例来说,尽管基因编程系统可能会创造一个完美的答案,但是这个答案是如何实现的,可能对于一个程序员来说是一个秘密,因为系统产生的代码可能十分复杂,并且难以理解。
进化计算系统的实现和支持也很复杂,这可能会让一些商业组织望而却步。如果有一个易于使用的框架来隐藏大部分潜在的复杂性,这将会有所帮助。尽管这些框架存在于科学界,但它们不容易被商业部门使用,更不用说家庭用户了。
IBM著名的软件工程师弗雷迪克.布鲁克斯曾经这样说道:你是不能通过增加人力来处理规模不断扩大的软件开发项目的。
如果有朝一日进化计算能够被投入商用,这对软件开发商来说将会是一个巨大的帮助。
全部0条评论
快来发表一下你的评论吧 !