Machine learning 智能代码完成?有人工智能可以通过学习编写代码吗?

Machine learning 智能代码完成?有人工智能可以通过学习编写代码吗?,machine-learning,artificial-intelligence,computer-science,genetic-algorithm,Machine Learning,Artificial Intelligence,Computer Science,Genetic Algorithm,我问这个问题是因为我知道这里有很多通俗易懂的CS类型的人可以给出一个明确的答案 我想知道是否存在(或正在研究/开发)这样一种人工智能,它通过自己生成和编译代码来编写程序,然后通过从以前的迭代中学习来进步。我说的是让我们这些程序员变得过时。我正在想象一种通过反复试验学习编程语言中哪些有效,哪些无效的东西 我知道这听起来像是天方夜谭,所以我想知道到底做了什么,如果有的话 当然,即使是人类程序员也需要输入和规范,因此这样的实验必须有仔细定义的参数。就像人工智能要探索不同的计时功能一样,这方面必须明确定

我问这个问题是因为我知道这里有很多通俗易懂的CS类型的人可以给出一个明确的答案

我想知道是否存在(或正在研究/开发)这样一种人工智能,它通过自己生成和编译代码来编写程序,然后通过从以前的迭代中学习来进步。我说的是让我们这些程序员变得过时。我正在想象一种通过反复试验学习编程语言中哪些有效,哪些无效的东西

我知道这听起来像是天方夜谭,所以我想知道到底做了什么,如果有的话

当然,即使是人类程序员也需要输入和规范,因此这样的实验必须有仔细定义的参数。就像人工智能要探索不同的计时功能一样,这方面必须明确定义

但是有了一个复杂的学习人工智能,我很想知道它会产生什么

我知道有很多人类的品质是电脑无法复制的,比如我们的判断力、品味和偏见。但我的想象力喜欢这样一个想法:一天的思考后,一个程序会把一个网站吐出来,让我看到它产生了什么,即使如此,我还是经常认为它是垃圾;但也许每天我会给它一次反馈,帮助它学习

这种想法的另一个途径是,最好给出一个高层次的描述,如“menued网站”或“图像工具”,它生成的代码具有足够的深度,可以作为代码完成模块,供我编写详细的代码。但我认为这可以被看作是一种非智能的静态分层代码完成方案


怎么样?

这样的工具是存在的。他们是一门学科的主题,这门学科叫做。你如何评价他们的成功取决于他们的应用范围

他们已经非常成功地(比人类效率高几个数量级)设计了工业过程管理、自动化医疗诊断或集成电路设计的最佳方案。这些过程受到很好的约束,有一个明确的、不变的成功度量,以及大量的“宇宙知识”,即关于什么是有效的、有效的、程序的和什么不是的一大套规则

它们在试图构建需要用户交互的主流程序时完全没有用,因为系统了解需求的主要项目是明确的“评估”,或者对其提出的当前解决方案的质量进行评估


在处理“程序学习”时可以看到的另一个领域是,尽管它更多地用于提供自动演示或语言/分类学习。

免责声明:我不是英语母语人士,也不是该领域的专家,我希望在接下来的内容中出现不精确和/或错误。因此,本着stackoverflow的精神,不要害怕纠正和改进我的散文和/或内容。还要注意的是,这不是一个完整的技术调查((MDA)中的(CG)至少值得一提)

我想补充更多的问题(基本上是正确的)

(GP)方法将两个不同的问题结合在一起(“自编译”在概念上是一个不需要动脑筋的问题):

  • 自我改进/自适应-合成程序,如果需要,合成器本身;及
w、 r.t.自我改进/适应参考Jürgen Schmidhuber的《自我参照通用问题解决者进行可证明的最佳自我改进》。(旁注:他的工作很有趣。)与本次讨论相关的还有

w、 r.t.,我认为有可能将其分为三个主要分支:(概率-如上述GP)、归纳和演绎

本质上是因为它产生了可能的程序空间与启发式,如交叉,随机变异,基因复制,基因删除等。。。(而不是用计算机测试程序,让适者生存和繁殖)

归纳程序综合通常被称为(IP),其中(ILP)是一个子领域。也就是说,一般而言,该技术不限于合成或以逻辑编程语言编写的合成器(也不限于“自动演示或语言/分类学习”)

通常是确定性的(但也有例外):从不完整的规范(例如示例输入/输出对)开始,并使用该规范约束满足此类规范的可能程序的搜索空间,然后对其进行测试(生成和测试方法)或者直接合成一个程序来检测给定示例中的重复,然后将其推广(数据驱动或分析方法)。整个过程本质上是——即,考虑不完整规范中包含的内容类似于随机抽样

§方法可能非常快,因此两者都很有希望(即使到目前为止只有很少的合成程序公开演示),但生成和测试(如GP)是可行的,然后可以预期显著的改进(扩展到实际的程序大小)。但请注意,(IIP)§,其本质上是连续的,已证明比非增量方法更有效几个数量级

§这些链接直接指向PDF文件:对不起,我找不到摘要

(PbD)和(PbE)是已知的实际利用归纳程序合成的技术

从一个(假定的)完整的(正式的)规范(逻辑条件)开始。利用的技术之一是:为了合成一个程序,它构造一个符合规范的对象存在的证明;因此,通过(作为程序对应的证明和作为类型对应的公式),它从