田渊栋对计算机自我编程的研究综述
Facebook人工智能实验室研究员田渊栋在他提交ICLR17的文章中,就有一篇研究了这方面的问题。
论文摘要:构建能够通过自动推断(infer),将一组输入映射到输出的计算机程序仍是一个开放且极具挑战性的问题。由于在可能的程序上存储着巨大的搜索空间,并且需要处理高阶逻辑(如for循环或递归),所以程序进行归纳(induction)任务是很困难的。在本文中,我们使用Hierarchical Generative Convolutional Neural Networks(HGCNN),自动根据输入/输出对生成程序。HGCNN以层次式预测候选代码串,由此可以使用标准的搜索技术来构造程序。应当注意,该模型仅使用随机生成的程序进行训练,因此可被视为一种无监督学习的方法。我们证明,文中所提出的方法可以生成程序,从简单的Swap到更复杂的循环和分支(比如找到一串数组中的最大值)。我们还展示了使用该方法,在实现诸如Bubble Sort等嵌套循环程序时取得的不错结果。将LSTM等作为比较的基础,新方法的预测精度有了显著的提高。
田渊栋在《深度学习没有解决的理论问题》里表示,这篇论文将算法的输入输出的结果抽取特征后,送入卷积神经网络文献中,再层次式地生成图像的经典框架,生成一张二维图,每一行就是一行代码,或者更确切地说,是代码的概率分布。有了好的分布,就可以帮助启发式搜索找到正确的程序。而神经网络的训练数据,则由大量的随机代码、随机输入及随机代码执行后得到的输出来提供——基本不需要人工干预,算是一种非监督的办法。
同时,田渊栋还在后面补充:“等到今年的ICLR的文章一公布,随便翻一翻就找到了七篇计算机自动生成(或者自动优化)代码的文章。打开一看,引论里全在描述同样的动机。”
那这个动机就是什么?
“让计算机自己写代码”。
一旦机器可以理解自己,一场颠覆性变革将会发生
随着越来越多的这类技术变得成熟,机器将会在各种各样的任务上超越人类。那么,机器为什么不能理解自己呢?我想这只是时间的问题。并且,一旦机器做到这一步,你会发现,在软件发挥重大作用的所有领域,将会经历一场颠覆性的变革。
人工智能的核心挑战之一便是教会机器学习新的程序、从既有程序中快速地编写新程序,并自动在一定条件下执行这些程序以解决广泛种类的任务。在各种人工智能问题中,程序以不同的面貌出现,包括运动行为、图像转换、强化学习策略、经典算法和符号关系等等。
现在,机器已经能够自动执行越来越多的程序,而且现在开源代码这么多,如果把历史上的代码都学习一下,很多编程场景应该是可以自动化的,至少可以大大减少人工。人类程序员尤其是初级程序员的工作被取代的可能性,也越来越大。
本文来源:不详 作者:佚名