神经网络可以帮助计算机自行编码:我们是否仍需要人工编码器?

发布于:2020-12-24 16:12:24

0

77

0

AI 人工智能 编码器 神经网络

当我上大学时,我们不得不在计算机科学考试中手工编写代码。如果您在过去十年中的任何时候都学会了编码,那么您可能会认为这听起来很野蛮,效率低下,只是愚蠢。 而且你会是对的。 但是这里还有一个严重的问题:我们用于计算机编程的技术正在不断发展,并且发展的非常快。 我很幸运,我的考试不涉及打孔卡。

编码实践的下一个重大革命可能比我们想象的要近,它涉及到帮助计算机自我编码。 一些研究人员认为,通过利用自然语言处理和神经网络,我们可以在几年内将人类从编码过程中彻底清除。

如果您是编码人员,很高兴得知他们是错的。 我们将需要很长时间的人工编码人员。 在本文中,我将解释原因。


神经网络和编码

首先,让我们看一下新一代的编码工具,看看它们能做什么。在编程中使用神经网络,机器学习和AI工具的想法已经存在了数十年,但是直到现在,第一个可用的实用工具才出现。这些工具可以分为三种类型。

首先是旨在自动识别错误的工具。这一直是神经网络在编程中最成功的应用之一,对于某些编码人员来说无疑是极其有用的。总部位于瑞士的公司DeepCode在这种工具方面一直处于领先地位,但是即使他们的产品也有严重的局限性,我很快就会谈到。

其次,有一系列工具旨在自己生成基本代码,或者可以为程序员自动完成代码。这些工具现已在许多流行的开发平台上发布。 Facebook开发了一个名为Aroma的系统,该系统可以自动完成小程序,而DeepMind开发了一种神经网络,该网络可以提供比人类设计的更有效的简单算法版本。

然后是神经网络在编程中最激动人心的应用:英特尔,麻省理工学院和乔治亚理工学院的团队进行了这项研究。这些研究人员开发了一种称为“机器推断代码相似性”或MISIM的系统,他们声称该系统能够以与NLP系统可以读取人类生成的文本段落相同的方式来提取一段代码的“含义”。

如果可以充分发挥其潜力,该MISIM系统有望成为一种革命性的工具。因为它与语言无关,所以系统可以在编写代码时读取代码,并自动编写模块以完成常见任务。在许多程序中,用于自动执行云备份的许多代码都是相同的,并且合规性过程对于许多编码人员来说也是一个主要的时间浪费。

像MISIM这样的系统有望使编写代码的过程比目前的效率高得多,但是它们仍然存在很大的局限性。让我们来看一些。


局限性

基于神经网络的编码工具不太可能在短期内取代人工编码器。为了弄清为什么我们来看看这些工具的三种主要使用方式固有的局限性。

首先,旨在捕获人类创建的代码中的错误的ML和AI程序非常有用,但仅限于某种程度上。目前,您可能会很痛苦地意识到如果使用了其中一种程序,它们会产生大量误报:人工智能认为可能是错误的功能,但不是。从信息安全的角度来看,这些工具谨慎行事的事实固然很好,但也表明它们了解现代编程复杂性的能力有限。

其次,Aroma和OpenAI的GPT-3语言模型之类的工具即使在自然语言的描述下也可以在人类的指导下制作出简单的代码。当给出有限的可控制问题来解决时,它们的表现非常好,但是(到目前为止)无法查看设计简介和制定最佳方法。

我上面提到的第三种工具-MISIM及其相关系统-无疑是神经网络在编码中的最具创新性的用途,并且最有希望真正改变我们的工作方式。但是,应该指出的是,该系统仍处于开发的早期阶段,距离公开测试版还有很长的路要走。因此,在获得版本之前,我将保留对其限制的判断。

最后,尽管如此,还值得指出的是,所有这些工具中都隐含着一个更根本的限制:创造力。

换句话说,尽管这些工具非常适合在提示时完成代码,但它们无论是在编码还是设计方面都不会赢得任何设计大奖。即使是最好的Web设计软件也尝试过并以失败告终,无法实现AI驱动的美学工具-这有一个很好的理由:人类知道什么对其他人类看起来很好。

利用这种美学,在过去的几十年中,创新能力一直是编码范例的主要焦点。例如,这就是原因之一,为什么今天周围许多最好的前端开发框架都如此面向视觉。人类非常擅长在看似无关的数据中发现模式,而人工智能则擅长执行重复,耗时的任务。


合作与创造力

这种无法创建新解决方案的原因是神经网络最终不会取代人类的原因。相反,我们需要确定哪些任务最好由AI来完成,哪些任务最好由人类来完成,然后利用这两者的优势构建协作的编码方法。

做到这一点有两种明确的方法。一种方法是使用AI编码工具以比我们的教育系统目前更灵活,更有效,更有针对性的方式培训人类开发人员。例如,通过提供有关在编码时保护真实系统的详细指导,可以将自动化推荐系统用于为初学者教授编程安全性。

其次,在跟踪人类编码人员的活动并提高其工作效率方面,人工智能显示出了巨大的希望。一个很好的例子是许多公司现在使用的自动发票,其中使用ML系统来跟踪人类员工的活动。的确,为每个人类程序员提供一个AI助手来学习他们的工作方式,然后根据他们以前的解决方案提出建议,将对大多数开发人员带来极大的好处。

第三,像MISIM这样的系统即使不能完全自动执行代码编写,也可能会有一点出乎意料的好处:它们可以用来重写遗留系统。由于MISIM之类的工具与平台无关,因此它们可能会自学成语,以了解诸如COBOL之类的古老(现在已经很模糊)的编码语言,然后以可用格式(如Python)重新编写这些程序。您问谁仍在使用COBOL?好吧,美国政府。

所有这些方法并不试图用机器类似物代替人类编码器。实际上,它们全都以不同的范式为依据:在编码方面,人与机器可以作为同事而不是竞争对手一起工作。


底线

这听起来像是乌托邦的愿景,但放眼望远,您会发现这是非常可行的。在许多方面,编码中使用AI和ML工具的出现反映了图形编码工具甚至是编程语言本身的先前开发。您的前端开发工具和python脚本都不会在根本上与您的硬件进行交互:所有事情,我们都忘了,所有这些都需要转换为二进制机器代码。

将编码视为“翻译”的过程现在可能已经过时了,但这确实可以为我提供培训。二十年前,我们被明确教导如何将代码转换为汇编语言。如今,这种方法似乎完全是浪费时间。

最终,这就是AI编码工具的开发所寻求扩展的。这里的最终目标是,像MISIM这样的系统将能够对计算机程序进行描述,甚至甚至是要解决的问题的描述,并能够自行生成程序。但是请务必记住,描述仍将由人类给出。