Skip to main content
QUICK REVIEW

[论文解读] AI Programmer: Autonomously Creating Software Programs Using Genetic Algorithms

Kory Becker, Justin Gottschlich|arXiv (Cornell University)|Sep 17, 2017
Evolutionary Algorithms and Applications参考文献 26被引用 20
一句话总结

本文提出了一种名为 AI Programmer 的人工智能驱动系统,该系统通过在极简的编程语言 Brainfuck 上应用遗传算法,自主生成并演化可执行程序。通过将每个程序视为由8条简单指令组成的序列,该系统能够演化出解决各类任务(如算术运算、字符串操作和控制流)的程序,证明了无需人工干预即可合成自修改、自改进的代码,且可通过进化计算实现完整程序执行。

ABSTRACT

In this paper, we present the first-of-its-kind machine learning (ML) system, called AI Programmer, that can automatically generate full software programs requiring only minimal human guidance. At its core, AI Programmer uses genetic algorithms (GA) coupled with a tightly constrained programming language that minimizes the overhead of its ML search space. Part of AI Programmer's novelty stems from (i) its unique system design, including an embedded, hand-crafted interpreter for efficiency and security and (ii) its augmentation of GAs to include instruction-gene randomization bindings and programming language-specific genome construction and elimination techniques. We provide a detailed examination of AI Programmer's system design, several examples detailing how the system works, and experimental data demonstrating its software generation capabilities and performance using only mainstream CPUs.

研究动机与目标

  • 探索人工智能是否能够完全自主地生成和改进软件程序,而无需人工干预。
  • 通过使用一种极简且图灵完备的编程语言,解决在复杂、人类可读编程语言中进行程序合成的挑战。
  • 证明遗传算法能够从一个极小的指令集中演化出完整且可执行的程序。
  • 通过在受限编程环境中利用进化计算验证自修改和自改进代码的可行性。
  • 提供一种新颖的替代方案,以替代基于神经网络或抽象语法树的程序合成方法,直接操作低级编程指令。

提出的方法

  • 该系统使用遗传算法演化用 Brainfuck 编写的程序集合,Brainfuck 是一种仅包含8条指令的图灵完备语言。
  • 每个程序均表示为指令的线性序列,从而可通过突变和交叉等遗传操作实现直接操作。
  • 基于程序行为定义适应度函数:成功程序必须正确解决给定任务(例如,打印文本、计算总和)并正确终止。
  • 通过迭代选择产生正确输出的程序,逐步改进程序,自修改通过在指令序列上执行遗传操作实现。
  • 使用 Brainfuck 解释器执行每个演化出的程序以评估正确性,并将结果反馈至适应度评估。
  • 该方法避免使用抽象语 tree 或神经网络,而是直接演化并测试实际可执行代码。

实验结果

研究问题

  • RQ1遗传算法是否能够完全自主地在类似 Brainfuck 的极简编程语言中生成可工作的程序?
  • RQ2通过进化计算,自修改和自改进的代码在多大程度上可以被合成?
  • RQ3在无需人工编码模板的情况下,是否可行演化出适用于多种计算任务的完整可执行程序?
  • RQ4与其它程序合成方法相比,直接操作低级指令在正确性和解的多样性方面表现如何?
  • RQ5该系统是否能够仅使用少量指令集演化出处理条件判断、循环和输入/输出的程序?

主要发现

  • 遗传算法成功为多种任务(包括打印文本、执行算术运算、处理用户输入,以及管理循环和条件判断)演化出完整且正确的程序。
  • 该系统证明了仅使用 Brainfuck 中的8条基本指令,即可完全自主地生成自修改和自改进的程序。
  • 在多次运行中,系统始终稳定产生正确程序,表明该进化方法具有鲁棒性。
  • 该方法在不依赖中间表示(如抽象语法树或神经网络预测)的情况下实现了完整程序执行。
  • 该方法在仅通过简单进化操作的基础上,成功合成了具有复杂控制结构(如条件判断和循环)的程序。
  • 结果证实,进化计算可作为生成可执行代码的可行替代方案,相较于基于神经网络或符号的程序合成方法具有优势。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。