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

哈Ha!敬请注意,威尔·道格拉斯·天堂(Will Douglas Heaven)撰写的文章“一种新的神经网络可以帮助计算机进行自我编码”的译文引起了您的注意



图片



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



计算机编程从未如此简单。最初的编码器是手工编写的程序,在方格纸上绘制字符,然后将它们转换成大叠的打孔卡,可以由计算机处理。一个错误,所有这些都可能需要重做。



如今,编码人员使用许多功能强大的工具来自动化大部分工作,从捕获键入错误到在应用代码之前进行测试。但是除此之外,几乎没有什么变化。一个愚蠢的错误仍然可能使整个软件崩溃。随着系统变得越来越复杂,跟踪这些错误变得越来越困难。
英特尔机器编程研究小组主任贾斯汀·戈茨利希(Justin Gottschlich)说:“有时候,编码团队需要花费几天的时间来解决一个错误。”




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



Gottslich及其同事将其称为机器编程。...他与来自英特尔,麻省理工学院和亚特兰大乔治亚理工学院的小组合作,开发了一个名为“机器推断的代码相似性”或MISIM的系统,该系统可以从中提取一段代码的含义-代码告诉计算机什么。就像自然语言处理(NLP)系统可以阅读用英语编写的段落一样。



然后,MISIM可以建议其他方式来编写代码,建议更正或使其更快或更有效的方式。该工具了解程序正在尝试执行的功能的能力使它可以识别正在执行类似操作的其他程序。从理论上讲,这种方法可由编写自己的软件的机器使用,这些机器依靠最少的人工控制或输入就可以使用已有软件的拼凑而成。



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



瑞士公司DeepCode的首席技术官Veselin Raychev说,MISIM是令人振奋的一步,他的错误检测工具(市场上一些最先进的工具)使用经过数百万个程序训练的神经网络,可以在编码人员编写代码时提出改进建议。

Raichev说,但是机器学习仍然无法预测某些东西是否是错误。这是因为,如果没有被人标记为神经网络,则很难教导神经网络什么是或不是错误。
据他说,已经有许多有趣的研究涉及深度神经网络和纠错功能,“但是实际上它们还远远没有出现。”他说,通常,AI错误捕获工具会带来很多误报。



MISIM通过使用机器学习来识别程序之间的相似性,而不是直接检测错误,来解决此问题。通过将新程序与已知正确的现有软件进行比较,它可以警告编码器存在可能导致错误的重要差异。



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



最终,Gottslikh认为这种想法可以应用于自然语言。与NLP结合使用(他说,自然语言处理(不要与神经语言编程相混淆)能够将代码的含义与文本表示形式分开使用,这可能使人们有一天可以通过简单地用文字描述自己想做的事情来编写软件。

Gottshlich说:“为手机或类似的东西制作一些小应用程序将对您的日常生活有所帮助-我认为这还不算什么。” “我希望看到80亿人以自然的方式创建软件。”



All Articles