NZ News
World News
Biz News
Sports News
Tech News
Ent News
首页
> 科技频道 > 码农前途黯淡?AI系统首次实现真正自主编程(组图)
人气: 2992 日期: 2017/10/1
论码农的黯淡前途:AI系统首次实现真正自主编程,完爆初级程序员
让AI自动编程是人工智能领域长久以来的梦想之一。现在,来自彭博和英特尔实验室的两位研究人员,号称实现了首个能够自动生成完整软件程序的AI系统“AI Programmer”,这个“AI程序员”利用遗传算法和图灵完备语言,开发的程序理论上能够完成任何类型的任务。AI自动编程的时代,大幕已开。
让AI自动编程一直是计算机科学家的梦想。目前这个方面的成果还非常有限,比如让AI自动补完编程语言,或者执行简单的加法程序。今天我们要介绍的这项工作,号称是第一个能够全自动生成完整软件程序的机器学习系统“AI Programmer”。
研究人员表示,他们用这个系统证明了长久以来的假设,那就是功能完备的程序确实能够被自动生成。具体到这项工作,AI Programmer利用机器学习中的遗传算法,模拟复杂的指令。虽然现在AI Programmer生成的程序,复杂程度与人类新手程序员编写的结果相当。但研究人员认为,AI Programmer编写的程序完全可以超越传统范畴,不受人类时间和智慧的局限。
AI编写的程序只是在测试复杂度和计算资源之间找得到最适合的点。换句话说,可能性无限。
研究人员还表示,我们需要重新思考,设计新的、面向机器的编程语言,因为当前的编程语言是面向人类的,不适用于基于ML的编程。“在考虑ML驱动程序生成的未来时,我们需要放弃和重新考虑典型程序语言创建的方法。”
研究人员写道,只有这样做,我们才能开始设想一个由AI系统驱动,以人类创造力和设计为指导的计算机软件开发的新未来。
AI Programmer的软件架构。从图中可见,由人类驱动的部分非常少,只需要在开始输入指令,最后接收适用于某项任务的函数即可,剩下部分全部由机器完成。
AI Programmer:利用遗传算法自动生成程序,理论上能够完成所有类型的任务
根据论文,研究人员选择了无类型编程语言,只包括了8种指令来驱动AI Programmer生成软件。
AI Programmer使用的编程语言是图灵完备的,如表1所示。理论上,在时间和内存不限的情况下,图灵完备编程语言能够处理任何编程任务。本质上,任何一种具有这种特质的编程语言都能够解决海量编程问题。同样,AI Programmer生成的软件能够完成所有任务。
有了这个保障,再来看AI Programmer的核心——遗传算法。
要使用遗传算法生成软件程序,必须首先创建一个基因组(genome)。基因组是一组被组合在一起作为单个单元的基因。AI Programmer的基因组编码为浮点数组,每个唯一指令的固定值范围在0和1之间,如上面表1的基因范围列所示。
创建好基因组后,AI Programmer就将其转换为相应的程序,执行,并根据程序的输出为结果程序分配适合度。生成的程序越靠近解决提供的任务,适应度就越高,越有可能继续进行下一代的进化。在每一代,AI Programmer利用随机选择以及交叉和变异来创建子程序,其中包含轻微的随机扰动,并且可能比其父母更好的基因组来解决目标任务。
图3展示了从浮点数组中构建基因组的实例。每个值范围映射到编程语言中的特定指令。最初,这些值是随机的,导致生成的程序无法正常运行。但是,其中必将有一两个能够运行并执行一些有效的指令。一个程序执行得越成功,就越有可能继续使用代码,实现更成功的后代。
为了创建后代,父母将其基因的一部分交给孩子,这个过程如图4所示。除了继承父母的编程指令外,每个孩子也可能会遇到突变,也就是对特定基因增加受控但随机的扰动。这导致特定基因的值发生修改,使所得到的编程指令发生变化,进而改变整个程序。
可执行程序根据其执行情况进行排名,如图5所示。其中,特定程序会被立即从基因组池中删除,成功的方案则被推进以产生新的后代。
AI Programmer使用结果:输出“Hello World”,反转字符串,加减乘,输出斐波那契数列……
AI Programmer由C#.NET设计的模块化框架组成。包括运行遗传算法的引擎,基因组编码器和解码器,用于执行模拟程序的沙箱解读器,以及将代码转换为二进制可执行文件的编译程序。虽然最初设计AI Programmer的时候使用C#,但需要注意的是,设计原则并不限于使用C#。
研究人员指出,AI Programmer的适应性测试软件框架具有延展性,并已被开发。用户可以自己设计无数的定制化软件,最终指导系统的遗传算法(GA)生成和软件程序演变。
如果目标程序旨在生成一个字符串,如”Hello World”(见上图),测试分数可能是字符串中的数字。但由于AI Programmer是在字节级生成代码,测试分数应将输出字符的增量差考虑在内。
研究人员表示i,他们能用AI Programmer生成很多软件程序。表2是所生成程序的名单。
一开始,研究人员让AI Programmer生成了一个非常简单的程序来输出“hi”。经过5700代后,测试成功。生成代码如图9所示。
经过580,900代后,生成了“hello world”,如图10所示。
经过6,057,200代后,AI Programmer成功生成了”I love all humans”,如图11所示。
AI Programmer生成反转字符串的程序。生成代码如图13所示。
AI Programmer能在92,400代之后生成加法程序;在177,900代之后生成减法程序,如图15所示。
图16所示的生成程序可以从两个初始输入值来输出斐波纳契序列。
论文:AI Programmer,使用遗传算法自动创建软件程序
摘要
在本文中,我们介绍了首个能够自动生成完整软件程序的机器学习(ML)系统,全程只需最低限度的人类参与。这个系统名叫“AI Programmer”,以遗传算法(GA)为核心,加上紧密约束的编程语言,将其ML搜索空间的开销降到最低。AI Programmer的新颖部分源于(i)独特的系统设计,包括用于效率和安全性的嵌入式手工解释器(hand-crafted interpreter),以及(ii)对遗传算法的增强,纳入了指令基因(instruction-gene)随机化绑定,以及编程语言特定的基因组构建及消除技术。我们详细介绍了AI Programmer的系统设计,详细介绍了系统的工作原理,以及使用主流CPU来演示其软件生成功能和性能的实验数据。
声明:在澳纽网频道上发表的内容是出于传递更多信息的目的,不代表本网赞同其观点或证实其内容的真实性。
NZ News
World News
Biz News
Sports News
Tech News
Ent News
澳纽新闻
新西兰新闻
澳洲新闻
国际新闻
中国新闻
China News
NZ News
AU News
World News
环球娱乐
社会新闻
女性新闻
财经新闻
股市新闻
汇市新闻
科技新闻
体育新闻
军事新闻
NZ Biz
AU Biz
World Biz
NZ Travel
NZ Property
NZ Politics
World Property
Ent News
Tech News
NZ Sports
AU Sports
World Sports
上一篇:
WePhone软件已下架 疑因资金问题所致(图)
下一篇:
漂亮的性爱机器人 这里竟然被玩坏了(图)
感谢您对澳纽网的支持
© 2024 澳纽网 AusNZnet.com