RISELab的AutoPandas暗示着自动化技术将改变软件开发的性质
基于神经网络的生成器是进行实用程序代码合成极有希望的一步。
编者注:想了解更多信息读者可关注2020年3月15日至18日举行的圣何塞人工智能大会

关于人工智能有很多的炒作,但企业是否真地开始使用人工智能技术了?我们在今年早些时候发布的一项调查中发现,就职于企业的超过60%的受访者计划将部分IT预算投入人工智能中。我们还发现投入的多少取决于公司已经拥有的人工智能技术的经验,而在成熟度曲线之上的企业则有计划大幅增加投资。至于目前人工智能被采用的水平,答案取决于企业所在的行业。我们发现,在多个行业中,30%或更多的受访者将其机构描述为具有成熟的人工智能实践:

 Figure1-2ac6f48acbec09780f5afd507a463571

图1 人工智能技术被采用的阶段(按行业划分)。图片来源:Ben Lorica

哪些领域或业务在应用人工智能技术?与任何新技术一样,人工智能被用于许多与研发相关的活动。但我们也开始看到人工智能和机器学习在客户服务和IT等领域获得关注。在最近的一篇文章中,我们概述了在和客户体验相关的许多领域里,与人工智能相关的技术开始产生影响。这包括数据质量、个性化、客户服务以及影响客户体验的许多其他因素。

Figure2-a799ba5208627f24a4938c0abfcc526a

图2 人工智能被采用的领域(按照采用阶段划分)。图片来源:Ben Lorica

我本人特别感兴趣的一个领域是人工智能和自动化技术在数据科学、数据工程和软件开发中的应用。我们之前概述了在软件开发中 “人参与流程”技术的一些初步表现,其中机器学习的初始应用开始改变人们构建和管理软件系统的方式。自动化也已成为数据科学和机器学习(AutoML)中最热门的话题之一,研究人员和从业者也正在积极构建可以对机器学习管道各个阶段进行自动化的工具

对于一个典型的数据科学家、数据工程师或开发人员来说,有太多的工具和API要他们使用并“精通”。数据科学家需要学Python、Pandas、numpy,scikit-learn、一种或多种深度学习框架、Apache Spark和更多内容。根据Khaliq Gant最近发表的博客文章,一位网络开发人员通常被希望有在“浏览终端、HTML、CSS、JavaScript、云基础架构、部署策略、数据库、HTTP协议等方面的能力,而这仅仅是个开始”。而数据工程师额外还需要掌握几个基础架构。

数据科学家、数据工程师和开发人员如何应对这种工具和API的爆炸式增长? 他们通常使用搜索(Google)或在论坛(Stack Overflow、Slack、邮件列表)中发帖。在这两种情况下,它都需要一些基础知识来构建问题并能够辨别出哪个答案是“最佳选择”。在论坛的场景里,在获得足够的回答之前可能会有很长的等待期。 拥有更多资源和更多时间的人可以利用免费或付费的学习资源,如书籍、视频或培训课程。

已经出现了一些自动化工具,它们可以大大提高软件开发人员的效率和生产力。在最近举行的人工智能北京大会上的主题演讲中,加州大学伯克利分校RISELab的主任Ion Stoica教授展示了一个新的研究项目,暗示了一种软件开发人员前进的可能。项目的初步结果就是AutoPandas。这是Pandas的程序代码合成引擎,而Pandas是当今使用最广泛的数据科学库之一。正如微软和华盛顿大学合作的一篇论文所述,程序代码合成是计算机科学中一个长期的研究领域:

程序代码合成是在底层编程语言中自动查找满足以某种需求形式表达的用户意图的程序的任务。自20世纪50年代人工智能出现以来,这个问题一直被认为是计算机科学界的圣杯。

AutoPandas用户只需指定输入和输出数据结构(例如,dataframe),AutoPandas就能自动合成出一个最佳程序,从给定输入产生所需的输出。 AutoPandas依赖于一个“程序生成器”来获取对API的约束以减少搜索空间(可能的候选程序空间是巨大的),神经网络模型则被用来预测API调用的参数,分布式计算框架Ray被用来扩展搜索的范围。

Figure3-1904491123bb816831a7e8a737627c0c

图3 AutoPandas的用户指定输入和输出的数据结构,基于神经网络的生成器输出一个优化的程序。图片来源:Ben Lorica

虽然我们仍然处于非常早期的阶段,但基于神经网络的生成器是进行实用的程序代码合成的极有希望的一步。 请注意,虽然RISELab的研究人员最初专注于Pandas,但AutoPandas所依赖的技术和工具是可以被应用于其他的API的(例如,numpy、TensorFlow等)。因此,开发人员、数据科学家或数据工程师使用的任何流行工具都可以通过程序合成,在一定程度上从自动化中获益。

编程工具总是随着时间的推移而改变(例如,我不再使用Perl),并且技术人员总是被希望能够适应最新的工具和方法。程序合成工具的不断进步意味着自动化将改变数据科学家、数据工程师或开发人员的工作方式。可以想像,未来掌握个别工具和API的重要性会降低,技术人员可以专注于架构设计和构建端到端系统和应用。随着工具和API变得更容易使用,雇主不会过多关心你在工作中所会的工具,他们会期望你拥有“软技能”(包括不易自动化的技能)、领域知识和专业知识,以及整体思考的能力。

相关内容

Ben Lorica

Ben Lorica是O’Reilly Media公司的首席数据科学家,同时也是Strata数据会议和O’Reilly人工智能会议的内容日程主管。他曾在多种场景下应用商业智能、数据挖掘、机器学习和统计分析技术,这些场景包括直销、消费者与市场研究、定向广告、文本挖掘和金融工程。他的背景包括在投资管理公司、互联网初创企业和金融服务公司就职。

Drum of a washing machine (source: Petar Milošević on Wikimedia Commons)