复制粘贴|微软亚研院AI编程研究:如何从复制粘贴走向推理合成


复制粘贴|微软亚研院AI编程研究:如何从复制粘贴走向推理合成
文章插图
AI 编程是人们对人工智能的一大期望,现在的 AI 编程技术虽然已经惠及了许多不会编程的普通用户,但还远没有达到满足人们预期的程度,一大痛点在于:现有 AI 只会进行机械地记忆与复制粘贴,难以灵活处理人们的需求。
微软亚洲研究院提出的新型神经网络架构 LANE(Learning Analytical Expressions)能够模拟人类的抽象化思维,从而在 AI 编程中获得组合泛化能力。
1
从AI编程说起
让 AI 学会写程序,是人们的普遍预期:直接用自然语言描述想干什么,AI 就能自动生成相应的程序。现有的 AI 编程技术显然还远达不到这种预期,但相关技术已然在各种特定领域中以更为广泛的形式惠及了大量不会编程的普通用户。
复制粘贴|微软亚研院AI编程研究:如何从复制粘贴走向推理合成】例如,微软在 Ignite 2019 大会上展示了Excel 中的一项新功能[1]——只需要向 Excel 提问题,它就能自动理解并进行智能数据分析,并通过可视化图表的方式将结果呈现在你的眼前(如图1所示)。这个超实用功能背后的技术支撑正是一系列将自然语言转换为数据分析程序的 AI 编程技术。
复制粘贴|微软亚研院AI编程研究:如何从复制粘贴走向推理合成
文章插图
图1:Excel 中的对话式数据分析,基于 AI 编程技术
本文所讨论的“AI 编程技术”,指的是以一个自然语言句子作为输入,自动生成一段相应的机器可解释/可执行的程序作为输出。这里的程序通常是由一个已知的 DSL(Domain Specific Language,领域特定语言)所编写。自然语言处理领域的研究者可能更熟悉这一任务的另一称谓:语义解析(Semantic Parsing)。
然而,即使是在这样的限定下,现有的 AI 编程技术也并不总能让人满意。一大痛点在于,它们似乎只学会了从已知的代码库中进行机械地记忆与复制粘贴,却难以为人类灵活多变的需求生成真正合适的程序。
复制粘贴|微软亚研院AI编程研究:如何从复制粘贴走向推理合成
文章插图
图2:AI 编程现状
以图2漫画(改编自[3])为例,当用户提出的需求相对简单,且这个 AI 编程机器人可以在某个大代码库中找到能够实现这一需求的程序时,效果通常是不错的。但是如果用户提出的需求相对复杂,要求 AI 编程机器人具有一定的推理能力(所需的程序在已知代码库中并不存在,需要对一些已有的程序片段进行复合生成),在这种情况下的效果通常是比较糟糕的。
本文所介绍的研究工作正是以此为出发点,旨在探索如何让 AI 编程机器人不再只会”复制粘贴”,而是学会类人的推理能力,从而更为有效地合成所需的程序。
2
组合泛化能力是走向类人 AI 的关键
前文所讨论问题的核心可以归结为 AI 系统的“组合泛化”(Compositional Generalization)能力问题。更通俗地说,就是 AI 系统是否具备“举一反三”的能力:能够将已知的复杂对象(即本文中所讨论的“程序”)解构为多个已知简单对象的组合,并据此理解/生成这些已知简单对象的未知复杂组合。
人类天生具有组合泛化能力。例如,对于一个从没接触过“鸭嘴兽”这个概念的人,只要看一张鸭嘴兽的照片,他就认识它了,并可以在脑海中很有画面感地理解一些复杂句子,比如“三只鸭嘴兽抱着蛋并排坐着”、“两只鸭嘴兽在河里捕食完小鱼之后开始上岸掘土”等。
这和深度学习是很不同的,即使是为了学会“鸭嘴兽”这样一个单独的概念,深度学习都需要大量的标注数据,更不用说学会这个概念的各种复杂组合了。
从语言学的角度看,人类认知的组合泛化能力主要体现在系统性(Systematicity)和生产性(Productivity)上。系统性可以简单理解为对已知表达式的局部置换。比方说,一个人已经理解了“鸭嘴兽”和“狗在客厅里”,那么他一定能够理解“鸭嘴兽在客厅里”。
生产性则可以简单理解为通过一些潜在的普适规律,用相对简单的表达式构造出更复杂的表达式。比方说,一个人已经理解了“鸭嘴兽”和“狗在客厅里”,那么他一定能够理解“鸭嘴兽和狗在客厅里”。
图3:组合泛化能力主要体现在系统性(Systematicity)和生产性(Productivity)上(图片来源:https://arxiv.org/pdf/1908.08351.pdf)
正如语言学家、哲学家乔姆斯基所说,“有限资源,作无穷运用(infinite use of finite means)”。正是依靠组合泛化能力,人类智能才能够从一些最基础的元素出发,一步一步创造出复杂甚至无限的语义世界。可以说,组合泛化是类人智能体必须具备的基本能力。