自然语言理解是人工智能的核心课题之一,也被广泛认为是最困难和最具标志性的任务。最经典的两个人工智能思想实验——图灵测试和中文房间,都是围绕自然语言理解来构建的。自然语言理解在人工智能技术体系中的重要性不言而喻,它一方面承载着机器和人的交流,另一方面直达知识和逻辑。自然语言理解也是人工智能学者孜孜以求的圣杯,机器学习的巨擘 Michael I. Jordan 就曾经在 Reddit 上的 AMA(Ask Me Anything)栏目中畅想用十亿美元建立一个专门用于自然语言理解的实验室。
那么究竟什么是自然语言理解呢?我们可以认为,理解是从自然语言到语义的映射,但是这个定义只是把问题转移到了「语义」的定义上,而关于语义,一直缺乏在形式和功能上都普遍适用的定义。事实上,语义往往需要被放在特定领域和特定语境下去考量,比如一句「你开心就好」,可以在不同的场景下传达鄙视和祝愿等多种意思。关于理解或者语义,我们不得不采取了下面两种耍赖式的定义来刻画它们的不同侧面:
- 语义是特定语境下的语用,也就是说一句话的功效才是对它含义的最终表征;
- 理解一个语言对象(如一段话),等价于可以回答关于这个对象的所有问题。
不幸的是,这两个定义都不具有完全的可操作性,也就是说,很难用这个定义来自动化地衡量对语义的映射是否准确,或者理解是否恰当。从某种意义上,语义理解在定义上就有点「难以捉摸」和不确定。
自然语言理解所处理的对象是文本,文本是广泛存在于我们的日常生活和工作当中的,金融、法律、媒体、互联网、政府、公共机构、大型企业,无所不在,如果能够使用自然语言理解和机器学习的方法,使得大量需要人工处理的海量文档自动化,将会非常大地提高企业和政府部门的工作效率。
然而,让计算机来理解文本是非常难的一件事情,首先,计算机缺乏常识以及专业的背景知识,而人类通常拥有非常丰富的专业知识和背景。比如对“future”的理解,普通人认为是“未来”,但对于金融相关的专业可能就会认为是“期货”,而“期货”对金融专业人士来说是一个语境,这是计算机所不存在的一个场景。
除此之外,人类说话本身非常的抽象和模糊,通常拥有非常多的歧义或者语境信息在里面。我们通常在见到朋友时会说“吃饭了吗?”“吃饭了吗”对计算机来说就是“吃饭了吗”四个字,而对人类来说它通常拥有丰富的隐含意义在里面。
从分词的角度,我们可以看词本身的粒度问题,“中华人民共和国”和“中国”本身意义是一样的。还有指代归属问题,当人与人之间交流时候,你说的“你、我、他”能够自然而然的被替换成相应的目标,而计算机来解决指代归属问题也是非常难的一个事情。除此之外,还有同义词、近义词、局部转义、一词多义等问题。
那么自然语言理解为什么如此困难呢?我们认为,主要有以下四个原因:
1. 自然语言中含有复杂灵活的表达方式
我们经常用不同的语句表达同一个意思,这些不同体现在风格、语态、对缺省的选择等众多方面。比如,下面意思非常接近的两句话就采用了不同的语序和风格。
- 这里和购物中心的距离大约是两公里,如果坐出租车的话,路上不堵的情况下大概十分钟就到了
- 这儿离购物中心不远,打车也就十分钟,不堵车的话,其实也就两公里吧
2. 长距离的逻辑关联
自然语言形成的文本中,常常有长距离的逻辑关联。这种逻辑关联既包含来自语言结构的依存关系,也包含语义层面上的逻辑关系,而且二者互相渗透。以刚才的句子为例,它包含了一个语义信息「这里距离购物中心两公里」,但是要做出这个判断,需要跨越句头和句尾中间的距离,依靠语义上的连续性来发现前后的逻辑关联。这种逻辑关联,往往很难靠类似循环神经网络(RNN)这样的简单序列处理模型来发现和利用。
3. 对知识(包含常识的)的大量依赖
在文本的理解中,我们往往需要依赖大量的知识,这些知识既包括领域知识和常识这种长期知识,也包括在前文中建立的短期知识。我们通常说的「语境」也可以被认为是短期知识的一种。
- 张三偷了一台 iPhone X,一台 iPhone 6S 和一台 P20,其中两台苹果手机都已经转手
- 车库里有一辆 17 年的雅阁和一辆 09 年的凯美瑞,结果反而是旧车被偷了
在例 A 中,在理解「两台苹果手机都已经转手」中的具体指代时,我们需要利用以下的知识:
‣ iPhone X 是苹果手机
‣ iPhone 6S 是苹果手机
‣ P20 是华为手机。
而在例 B 中,在理解「旧车被偷了」时,我们不仅需要使用前半句中建立的
‣ 雅阁是 17 年的
‣ 凯美瑞是 09 年的
这两条知识,我们同时需要使用「09 年的车比 17 年的车更旧」这一常识。准确利用这些知识则需要对知识进行有效的获取、表示和调用。
4. 语义表示形式设计的困难
语义表示的形式一直以来是语义解析这个问题上争论的核心之一。简单来说,「完备的」语义表示需要能够包含精确知识(如「张三杀了李四」),也需要承载语言中的模糊性、不确定性、程度和情感的极性等问题。同时我们期望语义的表示能够和其他知识(如语境)进行完美的对接以完成联合的表示和推理,比如一句「这水挺烫的」,在水的用途是饮用、泡面、泡脚等不同场景下就可能导致不同的语义(如极性和程度等)。同时,语义表示也需要考虑到实际的用途和技术边界,这种平衡本身就是非常困难和持续变化的。
[描述来源:达观数据王文广:如何玩转自然语言理解和深度学习实践?|机器之心]
[描述来源:神经符号系统:让机器善解人意|机器之心]
发展历史
在John McCarthy创造人工智能一词八年后,叫做STUDENT的程序于1964年由Daniel Bobrow撰写,他借由此在麻省理工学院获得博士学位论文,这是计算机对自然语言理解最早的尝试之一。Bobrow的论文示了计算机如何理解简单的自然语言输入以解决代数词问题。
一年后,在1965年,麻省理工学院的Joseph Weizenbaum撰写了ELIZA,这是一个互动项目,通过检查用户的输入中的关键词进行回复。如果ELIZA找到关键字,则会应用转换用户注释的规则,并返回结果语句。如果没有找到关键词,ELIZA会以通用的反复回复或者重复之前的评论来回应。通过这些技术,Joseph Weizenbaum的计划能够愚弄一些人使其相信他们正在和一个真实的人交谈。
1969年,斯坦福大学的Roger Schank介绍了自然语言理解的概念依赖理论。这个模型部分受到Sydney Lamb工作的影响,并被Schank在耶鲁大学的学生广泛使用,如Robert Wilensky,Wendy Lehnert和Janet Kolodner。
1970年,William A. Woods引入了增强转换网络(ATN)而不是短语结构规则来表示自然语言输入,ATN使用了一组等效的状态自动机,它们被递归地调用。 ATN及其更通用的称为“广义ATN”的变体被使用了许多年。
1971年,Terry Winograd在麻省理工学院完成了SHRDLU的博士论文写作。 这是一个词汇设限、运作于受限如“积木世界”的一种自然语言系统。 SHRDLU的成功示范为该领域的持续研究提供了重要动力。在20世纪70年代和80年代,SRI International的自然语言处理小组继续在该领域进行研究和开发。基于该研究进行了许多商业努力,例如,在1982年,Gary Hendrix最初成立Symantec Corporation公司,作为开发用于个人计算机上的数据库查询的自然语言界面的公司。然而,随着鼠标驱动,图形用户界面的出现,Symantec Corporation改变了方向。许多其他商业努力大约在同一时间开始,例如,1983年,Michael Dyer在耶鲁大学开发了BORIS系统,该系统与Roger Schank和W. G. Lehnart的工作相似。
进入新千年,我们可以引入了使用机器学习进行文本分类的系统,例如IBM Watson。但是,这不是自然语言的理解。根据John Searle的说法,Watson甚至不理解这些问题。正如我们在前文中提到的,目前我们在自然语言理解上取得的进展十分有限。
近年来,一些研究者致力于借助神经网络来实现符号推理。Neelakantan 等人提出了「Neural Programmer」,基于自然语言理解实现数据库查询。Liang 等人进一步引入了符号化的记忆机制 ,帮助神经网络更好地完成复杂推理。Mou 等人用神经网络和符号操作共同决策,提出了解决自然语言推理查询的新途径 。这些方法本质上是用符号知识给神经网络提供更多的信息,神经网络和符号智能的结合较为粗糙。同时,这些将神经网络和符号智能结合的尝试往往只是针对某个非常限定的任务,而且往往只有空间上对某个层面的处理。
主要事件
年份 | 事件 | 相关论文/Reference |
1964 | 叫做STUDENT的程序于1964年由Daniel Bobrow撰写,他借由此在麻省理工学院获得博士学位论文,这是计算机对自然语言理解最早的尝试之一 | Bobrow, D. G. (1964). Natural Language Input for a Computer Problem Solving System. MIT. |
1966 | Joseph Weizenbaum模拟“个人中心治疗”而提出了ELIZA | Weizenbaum, J. (1966). ELIZA—a computer program for the study of natural language communication between man and machine. Communications of the ACM. 9: 36–45. |
1969 | 斯坦福大学的Roger Schank介绍了自然语言理解的概念依赖理论 | Schank, R. (1969). A conceptual dependency parser for natural language. Proceedings of the 1969 conference on Computational linguistics. pp 1-3 |
1970 | William A. Woods引入了增强转换网络(ATN)而不是短语结构规则来表示自然语言输入 | Woods, W. A. (1970). Transition Network Grammars for Natural Language Analysis. Communications of the ACM 13 (10): 591–606. |
1972 | Winograd提出SHRDLU | Winograd, T. (1972). Procedures as a Representation for Data in a Computer Program for Understanding Natural Language. Cognitive Psychology. 3(1). 1-191. |
1983 | Michael Dyer在耶鲁大学开发了BORIS系统 | Dyer, M. (1983). In Depth Understanding: A Model of Integrated Process for Narrative Comprehension. MIT Press. |
2016 | Neelakantan 等人提出了「Neural Programmer」 | Neelakantan, Arvind, et al. (2016). Learning a natural language interface with neural programmer. arXiv preprint arXiv:1611.08945. |
2016 | Liang 等人进一步引入了符号化的记忆机制 ,帮助神经网络更好地完成复杂推理 | Liang, Chen, et al. (2016). Neural symbolic machines: Learning semantic parsers on freebase with weak supervision. arXiv preprint arXiv:1611.00020. |
2016 | Mou 等人用神经网络和符号操作共同决策,提出了解决自然语言推理查询的新途径 | Mou, Lili, et al. (2016). Coupling distributed and symbolic execution for natural language queries. arXiv preprint arXiv:1612.02741. |
发展分析
瓶颈
所以当前自然语言理解通常是粗粒度、浅层或者是局部的。在常见的和理解相关的例子中,情感分析往往只是判断感情是正面还是负面,而命名实体识别等只是标出实体(比如人、组织、地名等)的名称,但即使是这样,准确率也往往在达到一定水平之后裹足不前。
未来发展方向
- 形成神经和符号的连接:简言之,我们需要建立神经和符号交流的界面、路径和机制。二者的交流主要有两种,1)互相控制和调用,2)互为输入和输出。对于 1),一个例子是 Neural Programmer, 它用连续信号来调用和驱动符号运算,而二者的界面就是符号预算的向量索引。对于 2),我们期望神经运算的输出可以成为符号运算的输入,而同时符号运算的输出(在「嵌入」之后)也可以成为神经运算的输入,这形成了表示层 - 运算层的神经 - 符号闭环。
- 形成神经和符号间的并列和对应:神经符号系统可以在表示、运算、知识三个层面上,形成神经和符号间的并列和对应。这里,并列是指同时存在功能重合的神经和符号两种状态,这形成了某种程度的冗余,可以被系统择优使用或者同时使用(见原则 - III);而对应则意味着神经和符号两种状态之间存在设计的信息交互,这种交互可以帮助一种形态转换成另一种形态,也可以同时促进两种形态的共同训练(co-training)。
- 完备的中央调控机制去选择、控制和规划:为了有效地训练和执行,神经符号系统需要一个中央控制系统在表示、运算、知识三个层面上做选择、控制和规划。
Contributor: Yuanyuan Li