专栏名称: 数盟
数盟(数据科学家联盟)隶属于北京数盟科技有限公司,数盟致力于成为培养与发现“数据科学家”的黄埔军校。 数盟服务包括:线下活动、大数据培训。 官网:http://dataunion.org,合作:[email protected]
目录
相关文章推荐
艺恩数据  ·  【艺恩报告】2025年黄金饰品消费分析报告 ·  昨天  
CDA数据分析师  ·  《CDA一级教材》电子版上线CDA网校,助你 ... ·  2 天前  
软件定义世界(SDX)  ·  一文读懂DeepSeek背后的核心技术 ·  3 天前  
数局  ·  听说他在中央混得不咋地 ·  3 天前  
51好读  ›  专栏  ›  数盟

AI系统首次实现真正自主编程:利用遗传算法,完爆初级程序员

数盟  · 公众号  · 大数据  · 2017-09-25 22:00

正文

请到「今天看啥」查看全文


AI Programmer使用的编程语言是图灵完备的,如表1所示。理论上,在时间和内存不限的情况下,图灵完备编程语言能够处理任何编程任务。本质上,任何一种具有这种特质的编程语言都能够解决海量编程问题。同样,AI Programmer生成的软件能够完成所有任务。

有了这个保障,再来看AI Programmer的核心——遗传算法。

要使用遗传算法生成软件程序,必须首先创建一个基因组(genome)。基因组是一组被组合在一起作为单个单元的基因。AI Programmer的基因组编码为浮点数组,每个唯一指令的固定值范围在0和1之间,如上面表1的基因范围列所示。

创建好基因组后,AI Programmer就将其转换为相应的程序,执行,并根据程序的输出为结果程序分配适合度。生成的程序越靠近解决提供的任务,适应度就越高,越有可能继续进行下一代的进化。在每一代,AI Programmer利用随机选择以及交叉和变异来创建子程序,其中包含轻微的随机扰动,并且可能比其父母更好的基因组来解决目标任务。

图3展示了从浮点数组中构建基因组的实例。每个值范围映射到编程语言中的特定指令。最初,这些值是随机的,导致生成的程序无法正常运行。但是,其中必将有一两个能够运行并执行一些有效的指令。一个程序执行得越成功,就越有可能继续使用代码,实现更成功的后代。

为了创建后代,父母将其基因的一部分交给孩子,这个过程如图4所示。除了继承父母的编程指令外,每个孩子也可能会遇到突变,也就是对特定基因增加受控但随机的扰动。这导致特定基因的值发生修改,使所得到的编程指令发生变化,进而改变整个程序。







请到「今天看啥」查看全文