AI写程序,这事可没那么简单!

去年年初,微软公司推出了一款名为DeepCoder的机器学习系统,同时宣称该系统具备自我编码的能力,这一举动又将人工智能的发展向前推动了一步。程序员

正如人工智能是创建在众多机器学习或深度学习方法之上同样,DeepCoder建立的代码也是基于大量现有代码示例,研究人员一般会用这些代码进行系统的训练。算法

其结果是:DeepCoder编写的软件聚集了部分其它人工编写的程序,著名的杂志《连线》将这称之为“掠取其它软件”。编程

固然,尽管DeepCoder存在不尽如人意的地方,但该让软件本身进行应用程序编写这项研究仍旧是一项具备非凡的工做,也有着令整个数字世界为之振奋的前景。网络

基于意图的编程架构

当咱们但愿一款软件可以为咱们编写应用程序时,咱们真正想要的是什么呢?答案就是:咱们但愿软件所编写出的应用程序,可以较好地表达出咱们的意图。机器学习

术语“基于意图”源自于近期兴起的“基于意图的网络”,这是一种基于人工智能对网络进行配置的方法,它能够对管理者的业务意图进行预测。学习

基于意图的网络可以帮助管理者制定级别较高的业务策略,紧接着,它会对本身是否可以执行该策略进行验证,而且检查本身可否使配置的网络资源达到理想状态,以及是否能对网络状态进行有效监管以保证全部策略可以持续执行,并在必要的时候对其进行纠正。优化

例如,您能够要求Alexa为您编写一款应用程序,该程序可以对您的相册收藏进行追踪。此时,Alexa会自动为您编写代码,在完成后向您展现,以供使用。编码

原理是什么呢?人工智能

刚刚以Alexa为例进行了简单的说明,其实不难发现,AI采用的方法就是去找到一个与您要求类似的应用程序,而后根据您的需求对代码进行调整,或者挑选出一些代码片断对其进行程序组合。

换言之,Alexa采用的方法与DeepCoder相似,也就是从其余地方“借用”代码,并将这些代码进行组合以知足当前客户的需求。

可是将人工编写的代码进行聚集并非咱们真正想获得的AI编写软件,不是么?咱们真正寻求的是有能力对应用进行创新的编写软件。

换言之,AI在编写程序的时候能具备创造力么?它能写出真正具备创新性的应用程序么?这些应用程序是人们不曾设想过的。

第五代语言

几十年来,对于计算机科学的研究学者们来讲,他们一直盼望着有一款根据用户意图生成所需应用程序的软件可以问世。但事实上,根据来自维基百科的资料,上世纪80年代掀起的第五代语言浪潮曾试图“让计算机在没有程序员的状况下解决给定的问题”。

第五代语言是一种指望计算机能对问题自动求解的意图,基于所给定的某些约束,交由程序来处理而不须要程序员再投入人力。这个想法看上去颇有前景,但实验结果证实它仍然具备很大的局限性。

仅仅指定约束就能够解决问题过于理想化了:大多数数学优化问题都在寻求一组数学表达式,这些表达式可以很好的描述约束条件。

在创造应用程序时所面临的一个巨大挑战是第五代语言并不能很好的表达算法——程序员在编写代码时都有他们特定的步骤。

所以,第五代语言的发展并不乐观,尽管它促进了声明式以及为特定应用而设计的语言(如SQL和HTML)的快速发展——这些语言将用户意图和底层软件区分开来。

但毫无疑问:用声明式的语言表达您的意图与可以本身编写应用程序的软件大有不一样。编写“SELECT * FROM ALBUMLIST”与“Alexa,为我编写一个追踪我相册的应用程序”相去甚远。第五代语言中缺失的部分是AI。

算法

在20世纪80年代,咱们尚未办法让软件本身编写应用程序,但随着人工智能的快速发展,这个想法再也不高不可攀。第五代语言处理简单优化任务的能力促进了计算机代数系统的发展,使其在自动优化方面日趋成熟,这也被称为计算机生成算法。固然,发展并不局限于此。

还有一些研究项目,例如谷歌的AutoML,它可以构建基于机器学习的神经网络架构。您能够将神经网络架构视为一种应用程序,尽管它使用了人工智能技术。在这种状况下,咱们拥有足够聪颖的人工智能软件,它可以对应用程序进行编写。

AutoML以及与其相似的项目都具备广阔的发展空间。尽管如此,咱们仍旧没有更接近天网,就连这些努力,也不够企及咱们前面所描述的那些基于意图的编程目标。

人类意图

从本质上来看,AutoML和基于意图的编程正朝着不一样的方向发展,由于对于用户会如何表达各自的意图,二者有着不一样的处理方式。如上述示例,Alexa是以人为中心,利用Alexa的天然语言处理能力结合其它上下文技巧,可以提供以消费者为导向的用户体验。

在AutoML(或者任何机器学习或深度学习工做)中,工程师们必须以对约束条件(例如用户意图)进行正确的描述。

举个例子,若是你想教会人工智能识别猫的图片,那么就应有以下约束条件:在一个包含一百万张图片的数据集中,其中至少有十万张图片包含猫。软件也许能正确的将它们进行区分,也有可能区分错误,但它会在每一次尝试中进行学习。

那么,“我想要的相册追踪应用程序”的有效约束又是什么呢?目前,这个问题仍在咱们所能解决的范围以外。

目前发展

目前,人工智能虽然还不能创造出一种可以知足用户意图的应用程序,可是它在一些简单的应用场景中已经获得了较好的应用。咱们如今所达到的,是能从大型数据集中进行模式分析的人工智能。

若是咱们能够把算法成熟的运用到数据集中,或许可以取得一些进展。例如,若是基于AI的应用程序能够访问大量人工建立的工做流程,那么它能够很好的预测出您目前所处工做流程的下一步。

换句话说,咱们将如今所拥有的算法的功能称之为“下一步最佳行动”。咱们可能仍然须要更多的努力,使得软件了解咱们对应用程序的要求,目前,咱们可以借助AI探寻到达此目标的步骤。

对于找到“下一步最佳行动”,AI可以提供一些建议,可是不可以系统的构建出整个算法,这看上去更像加强型智能而非人工智能。

咱们在试图建立一类软件,它们可以表达出人类意图,而并不只仅是自动解决问题。固然,咱们仍须要在构建应用程序时伸出援手,但尽量的让这个过程变得简单。

基于此,新兴的低代码或无代码平台市场在这个方向快速创新发展也就显得不那么奇怪了。

现在的低代码或无代码平台可以支持复杂的,特定领域的声明式语言,令人们可以以相似英语的表达式(或其余人类语言)表达他们的意图。

他们还具备将应用程序和应用程序组件用模板表示的能力,使用户可以以“拖放”这种简单的方式对应用程序进行组装。

如今,许多低代码或无代码平台供应商正想办法将AI应用其中,这将会增长应用程序建立者的能力,并有助于他们指定他们想要应用程序遵循的算法。

或许有那么一天,咱们能够直接告诉这些平台咱们的需求是什么,而后它们就会自动为咱们编写出来。虽然如今咱们的技术尚未发展到这个程度,可是今天,咱们已经比低代码或无代码平台更加接近目标,加上创新正以惊人的速度发展着。我相信这种等待不会过久。

本文做者:【方向】

阅读原文

本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索