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

640?wx_fmt=jpeg

大数据文摘出品

来源:ponderwall

编译:stats熊、钱天培


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


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


听起来是不是很优秀呢?


640?wx_fmt=jpeg


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

 

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

 

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

 

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

 

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

 

进化计算的原理

 

640?wx_fmt=jpeg

 

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

 

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

 

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

 

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


640?wx_fmt=jpeg

基因编程树

 

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

 

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

 

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

 

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

 

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

 

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


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

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

 

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

 

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

 

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

 

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

 

相关报道:

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


未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。


未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。


  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”


640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态规划——数塔问题

从原点&#xff08;顶层&#xff09;出发&#xff0c;只能向左或者向右&#xff0c;找到一条路径使得路径上的数字和最大: #include<stdio.h> //#include"algorithm.h" #define N 100int max(int a, int b) {return a > b ? a : b; }int main() {int a[N…

http的get与post方式下的getParameter获取中文

客户端提交某个中文参数&#xff0c;比如a中国 &#xff08;1&#xff09;如果以GET方式提交&#xff0c;在地址栏中&#xff0c;可以看到参数进行了URL ENCODE&#xff0c;形如&#xff1a;a%E4%B8%AD%E5%9B%BD。服务端接收到请求&#xff0c;使用request.getParameter("…

PS填充、仿制图章和修补工具

右下角调整色调后&#xff1a; 概览&#xff1a; 用魔棒工具反选出天空的树枝&#xff0c;然后点 选择-修改-扩展 大致扣出枝丫&#xff0c;再 编辑-填充-内容识别 将空中的树枝ps掉。通过仿制图章工具&#xff08;勾选对齐&#xff09;可以将右下角楼p掉。也可以用修补工具&…

学界 |《nature》杂志:我们有义务搞懂我们所创造出来的技术

来源: AI科技评论一个跨学科的研究小组希望创建一个名为「机器行为」的新学科&#xff0c;以了解人工智能将如何对我们的社会、文化、经济与政治造成影响。在《自然》杂志的一篇评论文章中&#xff0c;作者认为人工智能算法的研究需要扩展到计算机科学以外的领域&#xff0c;纳…

渲染上下文Rendering Context

渲染描述表&#xff0c;包含一次渲染所需的全部数据。用于提交给游戏渲染引擎的渲染器进行渲染 -------------------------------------------------------------------- 如果把渲染引擎看做一个画家&#xff0c;那么画家开始作画之前需要做一系列的准备工作&#xff0c;譬如&a…

高数复习9.13 函数与极限

双曲正切函数图像 反双曲arsh和arch的表达式 arshxln(xx21)arsh xln(x\sqrt{x^21})arshxln(xx21​)   archxln(xx2−1)arch xln(x\sqrt{x^2-1})archxln(xx2−1​) 数列的极限&#xff1a;构造|xn-a|<一个能确定的数&#xff08;表达式&#xff09; 极限存在的证明&…

【深度】从GE工业互联网到中国工业互联网

来源&#xff1a;数字化企业工业互联网自2017年起已成为国内科技界最为火爆的词汇之一。学者、供应商、投资商、企业家、媒体、政府官员、人大代表、政协委员等纷纷给出了自己的解读。一、背景冠名为工业互联网的学术会议此起彼伏&#xff0c;有世界大会、世界峰会、全球峰会、…

LeetCode题——最长无重复子串

题目 给定一个字符串&#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。如&#xff1a; 输入: “abcbabcd” 输出: 4 解释: 因为无重复字符的最长子串是 “abcd”&#xff0c;所以其长度为 4。 思路 一开始容易往暴力遍历的方向想&#xff0c;但是实际上运用窗口的…

透视世界人工智能发展

来源&#xff1a;参考消息、新华网摘要&#xff1a;当今世界&#xff0c;随着人工智能迎来新一轮发展热潮&#xff0c;一个“新智能时代”即将到来。世界大国都把加快发展人工智能上升至国家战略高度&#xff0c;以抢占新一轮科技革命和产业变革的制高点。“透视世界人工智能发…

[链接]最短路径的几种算法[迪杰斯特拉算法][Floyd算法]

最短路径—Dijkstra算法和Floyd算法 http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html Dijkstra算法&#xff08;单源最短路径&#xff09; http://www.cnblogs.com/dolphin0520/archive/2011/08/26/2155202.html转载于:https://www.cnblogs.com/lyggqm/p/…

半导体行业必将再火十年!两大趋势成发展新动能

来源&#xff1a;智东西看点&#xff1a;汽车半导体和人工智能芯片为半导体市场带来了新的发展机遇。当前&#xff0c;我们使用的许多前沿数字化设备背后的技术都要依靠半导体才能实现。 由于无人驾驶、人工智能、5G和物联网等新兴技术的发展&#xff0c;以及对技术研发的持续投…

batch批处理程序easyadd——追加单行文本到指定txt文件末尾

介绍 有时候需要打开记事本在末尾追加文本&#xff0c;如果手动找到txt文件&#xff0c;再打开txt文件&#xff0c;按 ctrlhome 到达文末&#xff0c;才能完成对txt文件的追加&#xff0c;比较繁琐。而且如果txt文件很大&#xff08;比如词典文件&#xff09;&#xff0c;手动…

短信备份(原)

昨天在学习回调的时候&#xff0c;发现了其独特的魅力之处&#xff0c;它将业务代码逻辑和我们的工具类耦合性大大降低了。 应用场景&#xff1a;在实际开发中&#xff0c;经常会随着用户的需求的改变而对对话框的样式进行相应修改&#xff0c;在短信的备份过程中&#xff0c;往…

今年的谷歌I/O大会,或许会有这些东西

来源 | 网易科技据国外媒体报道&#xff0c;当地时间5月7日&#xff0c;2019年度谷歌I/O开发者大会将在加州的海岸线圆形剧场(Shoreline Amphitheater)举行。届时&#xff0c;包括谷歌首席执行官桑达尔皮查伊(Sundar Pichai)等公司高管将登台发表演讲。谷歌将在本届开发者大会上…

贪吃蛇C语言

有趣的小游戏&#xff0c;实现关键点有光标移动&#xff0c;按键检测&#xff0c;状态转移&#xff0c;随机数生成等。欢迎讨论&#xff01; #include<stdio.h> #include<windows.h> #include<time.h> #include<conio.h>#define UP w #define DOWN s…

WebClient 上传文件

MVC下 服务端代码&#xff1a; [HttpPost]public ActionResult UploadImg(string types){string data "";try{if (types "image"){foreach (string f in Request.Files.AllKeys){string pathT HttpRuntime.AppDomainAppPath.ToString() "/UpLoadI…

全球及美国首张无人机配送商业化“驾照”先后落地,国内还要多久?

来源&#xff1a;智能相对论&#xff08;aixdlun&#xff09;前不久&#xff0c;美国首张无人机配送“驾照”正式落地&#xff0c;获得者还是之前在澳大利亚拿下全球首张无人机商业飞行许可的谷歌。最早提出无人机配送的亚马逊被谷歌两次捷足先登&#xff0c;贝佐斯心里一定不好…

stringBuffer的使用及字符串比较的区别

/* * 关于equals()和: 对于String简单来说就是比较两字符串的Unicode序列是否相当&#xff0c;如果相等返回true; * 而是比较两字符串的地址是否相同&#xff0c;也就是是否是同一个字符串的引用。 * * 为了高效的修改字符串Java引入了StringBuffer。 */public class test { p…

IBM的医疗AI为何失败

来源&#xff1a;陆志方科学网博客最近&#xff0c;看到一篇关于医疗AI的文章《IBM医疗AI宣告失败&#xff0c;率先入局却踏步不前》。1997年IBM深蓝战胜国际象棋世界冠军卡斯帕罗夫&#xff0c;名声大噪&#xff1b;2011年开始&#xff0c;IBM在医疗AI押上重注&#xff0c;此后…

C 函数

函数 1. 什么是函数 任何一个C语言程序都是由一个或者多个程序段(小程序)构成的 每个程序段都有自己的功能 我们一般称这些程序段为"函数" 所以 可以说C语言程序是由函数构成的 2. 函数的定义 1> 定义函数的目的 将一个常用的功能封装起来 方便以后调用 2> 定义…