专栏首页大数据文摘号称能自动编程60年,“进化计算”究竟进化到哪一步了?

号称能自动编程60年,“进化计算”究竟进化到哪一步了?

大数据文摘出品

来源:ponderwall

编译:stats熊、钱天培

大胆想象一下,如果计算机可以自行编写程序,这会为人类带来什么样的变化?

与其辛苦研究计算机解决问题的方法论,敲出精准的代码,不如告诉计算机你想要什么,让它自己运行算法去解决你的需求。

听起来是不是很优秀呢?

“进化计算”正是研究这一大胆想法的学科。

我们可以把“进化计算”看做是一类人工智能和机器学习的分支。最早提出于20世纪50年代,进化计算旨在让计算机自行解决问题,而不需要人类编写一步步复杂的编程代码。理论上来说,这可能会让原本需要编写几周的代码在几分钟之内就可以实现。

这种理念可以让计算机去完成人类很难理解或者难以实现的复杂问题。计算机学家已经将进化计算应用到了一些实际问题上,包括为虾饲料配置最佳组合、最佳资产组合、通信技术、游戏行业和自动包装等。

那些研究进化计算的科学家们在这60多年时间里提出了大量建议。然而,进化计算的理论并没有在研究领域之外被广泛应用。

所以,为什么进化计算一直进展缓慢?

进化计算的原理

进化计算沿用了查尔斯.达尔文的自然选择学说,就是我们通常所知的“适者生存”。也就是说,一个物种里最弱小的(或者不太容易生存的)相继死亡而强壮的会生存。经过许多代以后,这样的物种会进化得越来越适应周围环境。

进化计算中,计算机为每个问题创造了大量的潜在答案。由于这些方案通常都是随机产生的,所以计算机刚开始肯定也不能我们关心的问题。但是,有些方案要比其他的更好。计算机可以从中排除最差的答案,找到最优解并发掘更多潜在答案。不同的答案会被融合在一起(这通常被叫做“交叉”),从而获得一个可以不断被测试和实验的新一代答案。

就像自然选择学说一样,另一个关于进化计算的重要元素是突变。所以,每过一段时间,被测试的答案就会产生一个既小而随机的变化。这就意味着,新的潜在方法会被创造,而仅仅使用交叉法是不能实现的。

理想情况下,由交叉和变异组合成的潜在新方案,会比他们的“父母”更好。但“进化”也不是每次都发生的,只有更多迭代产生,更好的解答才能浮现。对于进化学习来说,拥有数以万计的迭代是有迹可循的,就像自然选择需要数以万年去选择一个物种生存一样。

基因编程树

进化计算中最有名的莫过于基因编程。在基因编程中,一个计算机程序会让另一个程序经过演变来处理特定的问题。用户提供了一些衡量程序优劣的度量,然后演化过程接管,一切顺利的话,就会返回一个解决问题的程序。

遗传算子

尽管在科研界,基因编程研究已经取得了巨大进展,但是进化计算依旧很被难投入到商用中。这究竟是为什么呢?

为什么进化计算一直没被投入商用?

不同于其他很多技术,进化计算还未真正被商业领域接受。3D打印是在20世纪80年代发明的,经过很长一段时间的发展,现在已被用于工业制造。同样,增强现实、虚拟现实和人工智能也从研究领域中涌现出来,成为大型科技公司的主要产品。

阻碍进化计算商用的一个关键问题是,研究人员未能把重点放在商业领域感兴趣的问题上。

举个例子。计算机科学家已经深入研究了如何利用进化计算来为车辆制定路线。但是,研究者们通常只是研究问题的一些简单方面,而非是问题本质。很多汽车路径优化,用的是两点之间直线最短的原理。

在现实世界中,车辆行驶的路线很少遵循直线,而且必须考虑单向系统、故障、法律问题(比如司机必须休息多久)、时间限制以及其他很多问题。这种复杂性正是进化计算能够提供帮助的地方。

如果我们能够充分定义问题在现实世界中发生的情况,那么进化算法应该能够处理其复杂性。

另一个问题是,进化计算的结果有的时候很难解释。举例来说,尽管基因编程系统可能会创造一个完美的答案,但是这个答案是如何实现的,可能对于一个程序员来说是一个秘密,因为系统产生的代码可能十分复杂,并且难以理解。

进化计算系统的实现和支持也很复杂,这可能会让一些商业组织望而却步。如果有一个易于使用的框架来隐藏大部分潜在的复杂性,这将会有所帮助。尽管这些框架存在于科学界,但它们不容易被商业部门使用,更不用说家庭用户了。

IBM著名的软件工程师弗雷迪克.布鲁克斯曾经这样说道:你是不能通过增加人力来处理规模不断扩大的软件开发项目的。

如果有朝一日进化计算能够被投入商用,这对软件开发商来说将会是一个巨大的帮助。

相关报道:

https://ponderwall.com/index.php/2019/04/07/evolutionary-computation-self-programming/

本文分享自微信公众号 - 大数据文摘(BigDataDigest)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 运营商们,这几个应用占了一半的带宽,你们怎么办?

    大数据文摘
  • 不再藏着掖着,苹果终于开博客分享自家尖端机器学习研究了!

    大数据文摘
  • 新年电影清单二 | 看完这几部电影,分分钟让你爱上数学

    大数据文摘
  • React Native 架构一览

    Native 管理 UI 更新及交互,JavaScript 调用 Native 能力实现业务功能,Bridge 在二者之间传递消息。即:

    ayqy贾杰
  • PHP中给图片添加水印

    沈唁
  • OAuth2.0最简向导(多图预警)

    OAuth 2.0 是目前最流行的授权机制,用来授权第三方应用,获取用户数据。 这个标准比较抽象,使用了很多术语,初学者不容易理解。本文从最小数据单元开始一步一...

    JAVA日知录
  • dg broker校验失败的一个奇怪问题(r8笔记第50天)

    前几天碰到一个看起来有些奇怪的例子,今天抽空把分析过程整理了一下。 有一主一备的一套测试环境,之前环境在我手里,交给另外一个同事之后,重新搭建了dataguar...

    jeanron100
  • 【全网首发】——机器学习该如何应用到量化投资系列(一)

    有一些单纯搞计算机、数学或者物理的人会问,究竟怎么样应用 ML 在量化投资。他们能做些什么自己擅长的工作。虽然在很多平台或者自媒体有谈及有关的问题,但是不够全面...

    量化投资与机器学习微信公众号
  • 统计学习方法:概述

    统计学习是机器学习中的一个重要分支。它是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测分析的一门学科。它是以计算机及网络为平台,以数据为研究对象的学...

    统计学家
  • AQS

    AQS 的全称为(AbstractQueuedSynchronizer),这个类在 java.util.concurrent.locks 包下面。

    happyJared

扫码关注云+社区

领取腾讯云代金券