人工智能时代前沿技术社区

首页 > 人工智能 > 热点

新的神经网络可以帮助计算机自行编码

该工具可以发现程序之间的相似性,以帮助程序员编写更快,更高效的软件。

作者: | 2020-08-06 18:05:20

可以说,计算机编程从未如此简单。最初的编码员用手编写程序,将符号擦写到方格纸上,然后将它转换成大叠的打孔卡,计算机可以对其进行处理。一个标记不合时宜,整个过程可能需要重做。

 1596708390667935.jpg

如今,编码人员使用了一系列功能强大的工具,可自动完成大部分工作,从捕获键入时的错误到在部署代码之前进行测试。但是在其他方面,几乎没有改变。一个不小心错误仍然可能使整个软件崩溃。随着系统变得越来越复杂,跟踪这些错误变得越来越困难,甚至可能需要几天的时间来解决。

这就是为什么有些人认为我们应该让机器自己编程的原因。多年来,自动代码生成一直是研究的热点。微软正在将基本的代码生成构建到其广泛使用的软件开发工具中,Facebook开发了一个名为Aroma的系统,该系统可以自动完成小程序,而DeepMind开发的神经网络可以提供比人类设计的更有效的简单算法版本。甚至OpenAIGPT-3语言模型也可以从自然语言提示中生成简单的代码段,例如网页布局。

英特尔团队开发了一个名为“ 机器推断代码相似性”(MISIM)的系统,该系统可以提取一段代码的含义,即代码告诉计算机要执行的操作:可以,就像自然语言处理(NLP)系统可以阅读用英语编写的段落一样。

MISIM甚至可以建议其他可能的代码编写方式,提供更正和使代码更快或更高效的方式。该工具了解程序正在尝试执行的功能的能力使它可以识别执行类似操作的其他程序。从理论上讲,这种方法可以由编写自己的软件的机器使用,并利用现有程序的拼凑而成,而所需的人工监督或输入操作最少。

MISIM的工作原理是将代码片段与已经从大量在线存储库中获取的数百万个其他程序进行比较。首先,它会将代码转换为一种形式,以捕获其功能,但忽略其编写方式,因为两个以完全不同的方式编写的程序有时会做同样的事情。MISIM然后使用神经网络查找具有类似含义的其他代码。在预印本中,Gottschlich和他的同事报告说,MISIM的精度是以前尝试做到这一点的系统(包括Aroma)的40倍。

MISIM通过使用机器学习来发现程序之间的相似性,而不是直接识别错误,从而解决了这一问题。通过将新程序与已知正确的现有软件进行比较,它可以提醒编码器注意可能是错误的重要差异。

英特尔计划将该工具用作内部开发人员的代码推荐系统,并建议以其他方式编写更快或更高效的代码。但是,由于MISIM不受特定程序语法的束缚,因此它有可能做更多的工作。例如,它可以用于将以旧语言(如COBOL)编写的代码转换为更现代的语言(如Python)。这很重要,因为包括美国政府在内的许多机构仍然依赖以少数程序员不知道如何维护或更新的语言编写的软件。

最终,这个想法可以应用于自然语言NLP相结合,能够将代码的含义与其文本表示形式分开使用,有一天可以使人们仅通过用文字描述他们想做的事情来编写软件。