Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

遗传算法自动编写软件:新研究让AI开始代替程序员工作

人工智能究竟会在未来代替哪些人类的工作?程序员似乎在这个问题中永远排在最后一位。不过,这样的看法似乎并不准确。最近,来自 Bloomberg 和英特尔实验室的研究人员提出了一种基于遗传算法的人工智能程序 AI Programmer,它可以在普通计算机的硬件基础之上为指定任务生成程序。

从计算机被发明以来,正确、高效地开发软件程序一直是个根本性挑战。为了帮助解决该问题,软件开发领域已经作出了无数的突破。一些突破包括在静态、动态、渐进式系统中的安全、灵活的进步;使用自动化存储管理和垃圾收集系统作出的简化、安全、稳健的进步;在通用与特定领域语言的普通和特定发展;当然还包括以各种方式协助程序员的众多工具。

目前,在硬件创新领域中,新发展也在以类似的频率在发生,例如越来越多的通用性能多核 CPU,带有高级的硬件扩展,或者是低能耗 SoC 边缘计算设备、接近先前超级计算机性能的高性能嵌入式协处理器;宽泛数据并行的 GPU;适合神经网络和计算机视觉的 ASIC,等等。

在硬件进展持续扩展计算的深度与广度的同时,副作用就是把软件开发与人类写代码的效率之间的紧张关系变得越来越复杂、恶劣。

在这篇论文中,作者们探索了一种取代传统人类软件开发的方式,也就是使用遗传算法自动创造软件程序,只需要少量的人类指导。

据论文介绍,该研究的技术贡献在于:

1. 史无前例的提出了软件生成框架 AI Programmer,使用遗传算法结合全新简化编程语言构建程序。

2. 给出多种批评观测系统,包括一个嵌入式注释器和模拟器解决方案,保证机器学习生成的软件的安全与优化。

3. 在硬件上完整生成了多个软件程序,给出了经验式结果证明 AI Programmer 的功效与效率。


图 1:AI Programmer 的软件架构

AI Programmer 由 C# .NET. 上的模块化框架组成。它包括用于运行遗传算法的引擎,用于基因组图的编码器和解码器,用于模拟程序执行的沙箱解释器,以及将代码转换为二进制可执行文件的编译器。虽然 AI Progammer 使用 C#,但它的应用范围不仅限于 C#。AI Programmer 的软件框架是可以扩展的,开发者们可以在此基础上构建适合自己的工具,通过指导系统的遗传算法,不断改进自己的软件程序。


表 2:AI Programmer 的结果

论文:AI Programmer: Autonomously Creating Software Programs Using Genetic Algorithms


链接:https://arxiv.org/abs/1709.05703

摘要:在此论文中,我们史无前例的提出了一种名为 AI Programmer 的机器学习系统,只需少量的人类指导就能生成完整软件程序。AI Programmer 的核心是使用遗传算法,加上极其约束的编程语言最小化其机器学习搜索空间。AI Programmer 的部分创新性来自于其独特的系统设计,包括一个嵌入式、手动注释器来提高效率与安全;还有它对遗传算法的增强,包括遗传指令随机捆绑和程序特定语言基因构建和消除技术。我们给出了 AI Programmer 系统设计的详细测试,系统运行原理的详细示例,以及只使用主流 CPU 证明软件生成能力和性能的试验数据。

入门论文自动编程英特尔工程
11
老子要失业了