我提出这个问题是因为我知道这里有很多博览群书的计算机科学领域人士,他们可以给出明确的答案。
我想知道是否存在这样的人工智能(或者正在被研究/开发),它可以完全自主地生成和编译代码来编写程序,然后通过从先前的迭代中学习来进步。我说的是努力使我们程序员变得过时。我设想一种通过试错来学习在编程语言中什么有效、什么无效的东西。
我知道这听起来像是异想天开,所以我询问是否已经做了什么,如果有的话。
当然,即使是人类程序员也需要输入和规范,因此这样的实验必须有精心定义的参数。例如,如果人工智能要探索不同的定时函数,那么这方面必须明确定义。
但是,对于一个复杂的学习型人工智能,我很想看看它会生成什么。
我知道计算机无法复制很多人类的品质,比如我们的判断力、品味和偏见。但我喜欢这样的想法:一个程序经过一天的思考后,吐出一个网站,让我看看它想出了什么,即使我通常会认为它是垃圾;但也许每天一次,我会给它反馈并帮助它学习。
这种想法的另一个途径是,如果能给出一个高级描述,比如“菜单式网站”或“图像工具”,它就能生成足够深度的代码,作为代码补全模块,供我进一步编写细节,那就太好了。但我认为这可以被设想为一个非智能的静态分层代码补全方案。
怎么样?
回答:
这类工具是存在的。它们是被称为 遗传编程 的学科的研究对象。你如何评估它们的成功取决于它们的应用范围。
在为工业过程管理、自动化医疗诊断或集成电路设计设计最佳程序方面,它们非常成功(效率比人类高几个数量级)。这些过程受到良好约束,具有明确且不可变的成功衡量标准,以及大量的“宇宙知识”,即关于什么是有效的、可工作的程序以及什么不是的大量规则。
在尝试构建需要用户交互的主流程序方面,它们完全无用,因为学习型系统最需要的是一个明确的“适应度函数”,或对当前解决方案质量的评估。
另一个可以被视为处理“程序学习”的领域是 归纳逻辑编程,尽管它更多地用于提供自动演示或语言/分类学习。