1. 通往语言理解之路
什么是理解
自然语言理解是人工智能的核心课题之一,也被广泛认为是最困难和最具标志性的任务。最经典的两个人工智能思想实验——图灵测试和中文房间,都是围绕自然语言理解来构建的。自然语言理解在人工智能技术体系中的重要性不言而喻,它一方面承载着机器和人的交流,另一方面直达知识和逻辑。自然语言理解也是人工智能学者孜孜以求的圣杯,机器学习的巨擘 Michael I. Jordan 就曾经在 Reddit 上的 AMA(Ask Me Anything)栏目中畅想用十亿美元建立一个专门用于自然语言理解的实验室。
那么究竟什么是自然语言理解呢?我们可以认为,理解是从自然语言到语义的映射,但是这个定义只是把问题转移到了「语义」的定义上,而关于语义,一直缺乏在形式和功能上都普遍适用的定义。事实上,语义往往需要被放在特定领域和特定语境下去考量,比如一句「你开心就好」,可以在不同的场景下传达鄙视和祝愿等多种意思。关于理解或者语义,我们不得不采取了下面两种耍赖式的定义来刻画它们的不同侧面:
语义是特定语境下的语用,也就是说一句话的功效才是对它含义的最终表征;
理解一个语言对象(如一段话),等价于可以回答关于这个对象的所有问题。
不幸的是,这两个定义都不具有完全的可操作性,也就是说,很难用这个定义来自动化地衡量对语义的映射是否准确,或者理解是否恰当。从某种意义上,语义理解在定义上就有点「难以捉摸」和不确定。
这种不确定也导致了人工智能中语义相关的系统在形式和功能上的多样性。比如说,在神经网络机器翻译(NMT)中,所有的语义表示都是通过固定长度的实数值向量来完成。在第一代 NMT 系统中用一个很长的向量来表示和总结待翻译的句子(确切地说是混合了语法和语义的信息),这个向量虽然不可解释,但确实是一个形式和功能上都完整的表示。(注:关于用向量表示语义一直有很多争论,正面的比如 G. Hinton 的 thought vector, 反面的比如 R. Mooney 的著名论断。)而在第二代的基于注意力机制的 NMT 系统中,这种表示完整语义的设计已被淘汰,取而代之的是一个实数向量序列来表述多个片段的语义,从而在取得翻译效果的大幅度进步的同时,也在语义表示层面上后撤了一大步。同时我们注意到,连续的不可解释的语义表示在另一些需要和有清晰的语义规范对象互动的时候则非常别扭,当我们去做基于知识库的问答或者基于罪行的描述做审判预测时,需要将语义表示和知识库或者规则系统做对接。这种时候,我们会选择符号化的语义表示,如逻辑表达式、图或者其他离散的数据结构。在本文接下来的讨论中,我们会假定我们期望的语义表示中至少包含可解释的离散结构。
理解之难
自然语言理解的困难也是有目共睹,所以当前自然语言理解通常是粗粒度、浅层或者是局部的。在常见的和理解相关的例子中,情感分析往往只是判断感情是正面还是负面,而命名实体识别等只是标出实体(比如人、组织、地名等)的名称,但即使是这样,准确率也往往在达到一定水平之后裹足不前。相比而言,机器翻译的快速发展反而是因为它对理解的绕道而行,采取了一种「不懂装懂」(pretend to understand)的模式。
那么自然语言理解为什么如此困难呢?我们认为,主要有以下四个原因:
1. 自然语言中含有复杂灵活的表达方式
我们经常用不同的语句表达同一个意思,这些不同体现在风格、语态、对缺省的选择等众多方面。比如,下面意思非常接近的两句话就采用了不同的语序和风格。
这里和购物中心的距离大约是两公里,如果坐出租车的话,路上不堵的情况下大概十分钟就到了
这儿离购物中心不远,打车也就十分钟,不堵车的话,其实也就两公里吧
2. 长距离的逻辑关联
自然语言形成的文本中,常常有长距离的逻辑关联。这种逻辑关联既包含来自语言结构的依存关系,也包含语义层面上的逻辑关系,而且二者互相渗透。以下面的句子为例,它包含了一个语义信息「这里距离购物中心两公里」,但是要做出这个判断,需要跨越句头和句尾中间的距离,依靠语义上的连续性来发现前后的逻辑关联。这种逻辑关联,往往很难靠类似循环神经网络(RNN)这样的简单序列处理模型来发现和利用。
3. 对知识(包含常识的)的大量依赖
在文本的理解中,我们往往需要依赖大量的知识,这些知识既包括领域知识和常识这种长期知识,也包括在前文中建立的短期知识。我们通常说的「语境」也可以被认为是短期知识的一种。
张三偷了一台 iPhone X,一台 iPhone 6S 和一台 P20,其中两台苹果手机都已经转手
车库里有一辆 17 年的雅阁和一辆 09 年的凯美瑞,结果反而是旧车被偷了
在例 A 中,在理解「两台苹果手机都已经转手」中的具体指代时,我们需要利用以下的知识:
‣ iPhone X 是苹果手机
‣ iPhone 6S 是苹果手机
‣ P20 是华为手机。
而在例 B 中,在理解「旧车被偷了」时,我们不仅需要使用前半句中建立的
‣ 雅阁是 17 年的
‣ 凯美瑞是 09 年的
这两条知识,我们同时需要使用「09 年的车比 17 年的车更旧」这一常识。准确利用这些知识则需要对知识进行有效的获取、表示和调用。
4. 语义表示形式设计的困难
语义表示的形式一直以来是语义解析这个问题上争论的核心之一。简单来说,「完备的」语义表示需要能够包含精确知识(如「张三杀了李四」),也需要承载语言中的模糊性、不确定性、程度和情感的极性等问题。同时我们期望语义的表示能够和其他知识(如语境)进行完美的对接以完成联合的表示和推理,比如一句「这水挺烫的」,在水的用途是饮用、泡面、泡脚等不同场景下就可能导致不同的语义(如极性和程度等)。同时,语义表示也需要考虑到实际的用途和技术边界,这种平衡本身就是非常困难和持续变化的。
我们可以看到,上述困难中有些是深度学习所擅长的,比如神经网络的方法就可以利用其向量式的「模糊表示」来处理复杂灵活的表达方式;有些是符号逻辑所擅长的,比如长距离的逻辑关联;而有些显然是需要二者合力的,比如对知识的依赖,就既需要神经网络的参数来记住和运用各种琐细灵活的知识,又需要把一些可以被明晰表达的知识用符号性的方式来存储和调用。据此,我们认为,神经网络和符号智能的深度结合才是解决上述困难唯一正确的道路。对此我们将会在本文余下的部分做详尽的阐释。
2. 神经 + 符号
为什么神经 + 符号是正确的道路
正如上文中所阐释的,人类语言理解的过程、机制和形态,充满了符号性和连续性的双重特性,而在人工智能的实践中,我们也发现了二者各自的优势。在人工智能的历史上,这就是符号主义(Symbolism)和联结主义(Connectionism)之争。我们先来解释下神经和符号的概念,以及各自的特点、优势和劣势。这些讨论将会在以下三个层面上展开:
表示层 : 语言对象的语义表示,如词、句子乃至长文本的语义表示,也包含系统中和语义相关的中间状态
运算层 :对不同类型和尺度的语言对象的操作和转化,如生成、映射、转换、分类、预测、查询、更新等
知识层 :包括语言学知识、领域知识和常识这类的「长期知识」,也包括在理解过程中对文本建立的「短期知识」。
总体来说,
神经网络用来处理连续的表示、操作以及知识,具有模糊、可学习、不确定、灵活、无需设计、不可解释的特性,不擅于处理图结构、变量、递归和指代等;
符号系统用来处理离散的、结构性的表示、操作以及知识(包括图结构、变量、递归和指代等),具有清晰、精确、高执行效率、可解释的优点。
从系统设计的角度,神经网络正因为牺牲了微观和主动意义上的可解释性(如设定某个节点或者某个参数的含义),转向架构和机制上的设计,从而获得了系统描述能力(expressiveness)上的灵活性。从数学的角度,神经网络可以认为是用大量参数近似地描述了大量可能符号模式的分布,从而可以用基于梯度的方法 (gradient-based methods) 来训练,但是也失去了对特定符号模式的清晰刻画的能力。我们可以用图 1 来形象地说明神经网络和符号系统是如何去近似解决同一个真实的任务的。
我们用下表来总结神经网络和符号智能在表示、运算和知识三个层面上的区别。
神经符号主义的历史
人工智能领域长期有两种思想占据主流地位:符号主义和联结主义。符号主义使用基于规则的符号做推理,致力于用计算机的符号操作来模拟逻辑思维和认知过程,实现人工智能。联结主义强调智能起源于高度互联的简单机制,其偏向于模仿脑结构的研究,更侧重神经网络中的联结机制与学习算法。规则系统具有可解释性强和精确度高的特点,而神经网络灵活性高、泛化能力强、鲁棒性好,因此人工智能之父马文 · 明斯基(Marvin Minsky)总结到:「符号知识和联结主义各有优缺点,我们需要一个系统能够将它们的优点集成起来」[1]。自 1980 年,很多有远见的人工智能学者就试图将神经网络和符号智能结合,这个包含了无数不同尝试的方向被称为神经符号主义(Neural-symbolism)。
一些先驱者对神经符号主义进行了初步的探索。早在 1990 年,Towell 等人便提出了 KBANN(基于知识的人工神经网络)[2],采用已有的经验知识去构建人工神经网络的结构和网络中的连接权重。Garcez 等人在 1999 年提出了 CILP 系统 [3],他们将背景知识转化为命题逻辑,并基于此构建前向人工神经网络,并从例子中归纳新的知识去更新已有的知识。Garcez 等人在 2001 年提出了一种在训练好的神经网络中抽取逻辑知识的方法 [4],可以增强神经网络的可解释性。Richardson 等人在 2006 年对一阶符号逻辑和概率图模型结合的方式进行了探索,提出了马尔科夫逻辑网络 [5],该网络是一个一阶符号逻辑的知识库,其中每一个公式都有对应的权重。受限于当时机器学习技术和自然语言处理技术的制约,这些探索并不能充分利用神经网络的优势,因而没有取得更近一步的成功。
随着层数更深、更多样、表达能力更强的深度神经网络的崛起,越来越多的学者加入了对神经网络和符号智能进行结合的探索中。Jaeger 提出了一种用「Conceptors」控制循环神经网络的方式 [6],使得整个网络具有几何特性,并且可以和布尔逻辑进行有效结合。Graves 等人提出了神经图灵机(Neural Turing Machines)[7],Sukhbaatar 等人提出了记忆网络 [8],他们都引入了记忆机制来解决对推理过程中间结果的存储问题。上述方法对神经符号系统进行了进一步的探索,赋予了神经网络符号化的结构,对后续的研究有着重要的启发意义。
近年来,一些研究者致力于借助神经网络来实现符号推理。Neelakantan 等人提出了「Neural Programmer」[9],基于自然语言理解实现数据库查询。Liang 等人进一步引入了符号化的记忆机制 [10],帮助神经网络更好地完成复杂推理。Mou 等人用神经网络和符号操作共同决策,提出了解决自然语言推理查询的新途径 [11]。
还有一些工作希望能用符号逻辑帮助神经网络训练、学习和推理。Hu 等人提出了 Teacher-Student 网络 [12],让神经网络(Student)拟合符号规则(Teacher)的结果,使得神经网络在规则的指导下训练学习。Goyal 等人采用先验知识改进了字符级的循环神经网络用于自然语言生成问题(NLG)[13]。Luo 等人探索了在不同层面上,正则表达式规则和神经网络的结合手段,希望用正则表达式规则提供的丰富信息提升神经网络的表现 [14]。这些方法本质上是用符号知识给神经网络提供更多的信息,神经网络和符号智能的结合较为粗糙。同时,这些将神经网络和符号智能结合的尝试往往只是针对某个非常限定的任务,而且往往只有空间上对某个层面的处理。
3. 我们的想法和尝试
通向神经系统和符号智能的融合
我们认为神经网络和符号智能融合的理想形态,应该遵循以下的原则 / 方向:
原则 - I:形成神经和符号的连接
简言之,我们需要建立神经和符号交流的界面、路径和机制。二者的交流主要有两种,1)互相控制和调用,2)互为输入和输出。对于 1),一个例子是 Neural Programmer [9], 它用连续信号来调用和驱动符号运算,而二者的界面就是符号预算的向量索引。对于 2),我们期望神经运算的输出可以成为符号运算的输入,而同时符号运算的输出(在「嵌入」之后)也可以成为神经运算的输入(如图 2),这形成了表示层 - 运算层的神经 - 符号闭环。举例说明,对于下面的例句
三郎仁真与泽旺、洛尔伊在大学旁边的快捷酒店住了三个晚上
神经网络利用当前的状态(向量表示)预测「三郎仁真」是人名,这个符号化的信息可以作为下面一条规则
RULE-9527: 在同一个 list 中的语言对象应该有同样的类型
的输入,从而预测「泽旺」也是人名。而这个来自符号运算的输出,在嵌入之后,会和其他的原始输入一起,再次进入神经网络,而其进入的形式可以是作为建议(从而需要神经网络的进一步综合判定),也可以是作为确定的结论。
原则 - II:形成神经和符号间的并列和对应
神经符号系统可以在表示、运算、知识三个层面上,形成神经和符号间的并列和对应。这里,并列是指同时存在功能重合的神经和符号两种状态,这形成了某种程度的冗余,可以被系统择优使用或者同时使用(见原则 - III);而对应则意味着神经和符号两种状态之间存在设计的信息交互,这种交互可以帮助一种形态转换成另一种形态,也可以同时促进两种形态的共同训练(co-training)。(注:这里的 co-training 是从 multi-view learning 的角度来鼓励两个或更多通路的一致性,而非强调在其半监督学习场景下的应用。)这三个层面上的并列和对应可以有多种方式,下面仅举两例。我们在 2017 年提出的神经 - 符号双通路的问题解析模型 [11](见图 3-a):对一个问题(如「北京奥运会是哪一年举行的?」),系统会有包含解析和运算的神经通路,也会有一个近乎对称的符号通路。两条通路殊途同归,同时会有密集的信息交换。神经通路可以高效地利用后向传播算法学习,而符号通路则通过符号化的总结而具有高执行效率和很好的泛化性能。通过在训练中鼓励两条通路的一致性,我们可以获得比单一通路更好的学习效率、执行效率以及泛化性能。我们最新的一项技术(见下文中的 Nerual Rule Engine),则可以部分地完成知识层上的转换(见图 3-b),从而利用神经网络天然的泛化能力克服规则系统的脆弱性。图 3-b 也描述了上述转换的逆过程,即神经网络中的参数知识被总结成为规则,这个过程通常被称为规则抽取(rule extraction)。
原则 - III:完备的中央调控机制去选择、控制和规划
为了有效地训练和执行,神经符号系统需要一个中央控制系统在表示、运算、知识三个层面上做选择、控制和规划(见图 4)。如果存在表示、运算甚至知识层面上的并列(见原则 - II),那么在执行阶段,中控系统会在某个特定时刻根据情况在这三个层面上选择使用神经、符号还是它们的组合。比如说,在阅读和理解某个句子的过程中,中控系统在某时刻决定探测句子余下的部分是否含有并列结构。这个探测的决定本身是符号性的,但是这个探测的行为本身可以是由一个神经网络模块来完成的。同样,分管训练的更长期的中控系统会规划神经通路和符号通路的交流的具体节奏,控制转换和促进的机制等。接着用上面的例子,这个探测并列结构的神经网络模块可能原先来源于一个简单的规则,但是在使用过程中不断地吸收来自任务的监督信号,最终被中控系统确定取代对应的规则。很显然,原则 - III 的意义来源于原则 - I 和 II 带来的神经和符号复杂交融的可能,而原则 - III 的实现也需要以原则 - I 和 II 为基础。
这三个方向上的融合,既相对独立,又有很强的关联,同时可以以多种方式嵌套使用,给出了无限的架构和机制设计上的可能性。可以认为,一个相对「完备」的神经符号系统应该综合了这三个方向,从而可以将神经系统和符号系统各自的优点做深层次融合,使得文本理解达到前所未有的深度。虽然在特定任务的神经符号系统上,我们往往只会实现神经符号系统的特定方面,这些可以从深度好奇最近的工作为例来说明。
深度好奇的工作
深度好奇正是遵循以上的融合神经网络和符号智能的原则,针对不同类型的自然语言理解任务,设计了一系列的模型。我们介绍下面三个工作,1)神经规则引擎,2)变焦神经网络,和 3)神经实体推理, 来作为其中的代表。
神经规则引擎(Neural Rule Engine)
规则作为人类知识的具体体现,是一种简单但是极为可靠的快速构建工业应用的手段,也是符号性知识的通用形式。规则虽然极其精确,但是其僵硬脆弱的特点又经常被诟病,比如规则可以查找「骑自行车上班」,但是语义相似的「骑小黄车上班」却无法匹配,传统的规则需要大量扩充才能涵盖这些在语义上相近的表达。我们提出的神经规则引擎(NRE),将符号性的规则知识转化为神经网络的知识形式,并辅以对应的运算。NRE 吸收了神经网络灵活性高、泛化能力强、鲁棒性好的优势,同时也维持了规则的精确性和可解释性。它可以从规则中学习知识,同时又通过神经网络来泛化知识,与人类学习知识的方式有异曲同工之妙。神经规则引擎由基础的操作和解析器来表示规则。操作和解析器根据需求既可以选用神经网络也采取符号算法来实现。具体来说,神经规则引擎先对规则用解析器进行解析,生成层级操作序列,之后依照顺序来组装模块,最后将组装好的规则应用于具体的事例,判断是否符合规则(图 5 给出了一个简略的示意图)。实验表明,借助神经网络的优势,神经规则引擎对符号知识进行了学习和扩展,可以大幅提升规则的召回率,同时还能维持较高的精确率使规则本身的特性得以保留。神经规则引擎不仅是一种新的神经符号学习范式,同时也为现有的工业应用带来了一种高效的改进,它可以被用来对已有的规则系统进行升级,或者在训练数据不大的情况下快速开发出神经规则系统 (论文见 arxiv.org/abs/1808.10326)。
变焦神经网络(Zooming-Net)
段落、列表等文本结构蕴涵着信息输出者的表达策略,对于准确抓取、理解文本内容有着重要的意义。这种文本结构有符号化的骨架,但是又需要和局部的语义有深度的耦合。我们提出了变焦神经网络(Zooming-Net)来完成这种偏符号性的文本结构和神经性的局部语义表示的结合。Zooming-Net 可以利用 Policy-Net 灵活地选择在特定文本粒度(字、句、段)上执行读取、更新、跳转、预测等一系列操作,这种独特的变焦处理方式高度类似人类阅读过程,利用文本结构,其在信息稀疏部分进行泛读,确保不引入过多噪声,在信息密集部分进行精读,确保有用信息不被丢失。我们引入了符号化推理模块对模型的输出加以解释,并进行定向的干预。变焦神经网络由层次化编码器、变焦控制器和符号化推理模块三个部分完成对文本的处理并以序列标注的形式找出文本中的关键片段(图 6 给出了一个简略的示意图)。具体地说,在每个时刻,层次化编码器配合变焦控制器有策略地选择建立层次化特征,读取特定层级的信息,结合符号化推理模块给出的临时性离散信息预测出一定长度的标签序列。在读取整篇文本之后,将各时刻输出的标签序列进行组装,并取出对应的关键信息片段。实验表明,借助句段结构信息,变焦神经网络很好地结合了泛读与精读过程,其可以更好地对长时依赖特征进行建模,并引入大跨度动作提高效率,在关键信息的抽取任务上,f1 值较经典序列标注模型(biLSTM+CRF)有 10% 以上的提升,预测行为频次减少 50% 以上。变焦神经网络非常适合应用在各类长文本处理任务当中,其使用的编解码方式也可结合其他技术推广到各类自然语言处理任务过程中 (论文见 arxiv.org/abs/1810.02114)。
神经实体推理(Neural Entity Reasoner)
命名实体识别(Named Entity Recognition)被认为文本理解的基础和底层任务,因为它的职能就是发现和标识文本中的人名、地名等。传统的 NER 方法依赖局部和底层的语言特征,但是当出现有歧义的说法或者少见的人名时,这类方法往往会遇到困难。而人在这种情况下,往往可以通过纵览全文,打通和融合局部的知识,来摆脱这种困境。我们正是受到人的思维模型的启发,为 NER 这个看似低级的任务引入了高级的「推理」机制,将符号化的命名实体信息「取之于网络,用之于网络」,从而可以在深度学习的框架内融合同一文本中的命名实体的决策。命名实体神经推理机(NE-Reasoner)整体上是一个多层的架构,每一层都独立完成一次 NER(图 7 给出了一个简略的示意图)。每层的 NER 结果,会通过一个符号化的「缓存」存储起来,作为下一层 NER 的参考:这种参考是通过一个交互式的池化神经网络来实现,本质上是一个基于多个事实的推理模型。由于这样的设计,在做每个局部的决策时,模型都可以「看见」并参考别处相关决策,从而做出更加明智的决定。实验表明,通过在神经网络的推理过程中,引入符号化的缓存记忆,以及在缓存基础上的多事实全局推理,可以显著提高命名实体识别的准确率,尤其是在传统方法容易犯错的歧义和少见人名上有更好的表现。命名实体神经推理机作为神经符号推理机在 NER 任务上应用的一个实例,不仅打开了之前神经网络推理决策的黑箱,使得推理过程中的关键步骤对人类可见和可理解,而且给予了人工进一步干预推理过程的可能性及有效的接口 (论文见 arxiv.org/abs/1810.00347)。
4. 新的框架: 面向对象的神经规划(OONP)
不同于之前介绍的三项相对专门的技术,面向对象的神经规划(Object-oriented Neural Programing, OONP)是一个用于复杂语言对象理解的新框架。作为神经符号系统的实例,OONP 不但有大量神经符号主义的具体实现,而且也为神经网络和符号的更多和更充分的融合留下充分的空间。
OONP 借用面向对象编程(OOP)的思想,利用解析出来的实体组成对象和对象间关系(如图 8),构成结构清晰的本体图。每个对象(object)都是一个类(class)的实例化,类的概念规定了其具有的内部属性、外部关系和可执行的操作,以及与其他对象的关系类型。
图 8:OONP 的解析示意图,左侧的每一个小框代表了一个对象(object),框的颜色标识了类(class)
如图 9 所示,OONP 由三部分组成,分别是主控模块阅读器(Reader)、表征文档的行间记忆(Inline Memory)模块、以及总结对之前文本的理解的携带记忆(Carry-on Memory)模块。而携带记忆(Carry-on Memory)模块又可分为表征图结构的对象记忆(Object Memory)、存储连续状态的矩阵记忆 (Matrix Memory) 和记录离散动作的动作历史 (Action History) 三部分。
在解析文本时,OONP 模仿了人理解文本时一边阅读一边理解的方式。OONP 框架将解析过程转化为决策序列:OONP 阅读器按照文本顺序读文档,同时不断丰富本体图结构来增进对文档的理解,该图结构被决策过程的操作序列创建和更新,并在解析的结尾作为最终的文本语义表示。对于某个待解析的文档,OONP 首先将预处理之后的文档放入行间记忆模块,阅读器顺序读取行间记忆中的符号表示和连续表示,结合携带记忆,产生各种操作来增加和丰富本体图,更新携带记忆模块。这些操作包含可微分操作(作用于对象记忆的连续部分和矩阵记忆)和离散操作(作用于对象记忆和行间记忆的符号部分)。这些连续和离散操作互相依赖,构成了彼此的输入,共同形成了图 10 中复杂而灵活的信息流。
在 OONP 框架内,连续和离散的表示、运算、知识相互紧密结合,形成信息闭环。这使得 OONP 可以灵活地将各种先验知识用不同形式加入到行间记忆和策略网络。具体来说:
整体来说,OONP 解析的决策过程本身就是从神经网络到离散结构(本体图)映射的过程,而这个离散结构又成为神经网络控制的决策过程的输入,从而形成了大的神经 - 符号的信息闭环。而在 OONP 的具体模块上,这种闭环还大量存在;
在行间记忆和对象记忆里,存在大量离散和连续并列的表示,比如说,对象记忆中的图状离散结构上会附有不同类型的连续向量表示。同时在 OONP 的运算层,每个动作的决定都需要融合来自规则引擎以及神经网络的输出。比如会有独立的规则引擎来分析动作历史,发掘大范围的动作的模式,从而给出下一步的决策建议,而这些建议会和其他来自神经运算的结果一起汇入策略网络的输入;
在 OONP 的框架内,允许符号知识(如规则)转换成为功能接近的神经模块,而这些神经模块可以作为 OONP 组件进行联合训练。
5. 从技术到产品
以神经符号系统为核心技术思想,深度好奇构建了以 OONP 为核心技术框架的包括多个技术模块的自然语言理解技术平台。以此为基础,我们设计制造了公安案情结构化、智能视频审核、法律文书解析、语音视频调度等一系列产品(见图 11)。
这里我们以公安案情结构化和智能视频审核为例:
公安案情结构化:这个系统对公安侦破过程中的文本信息进行解析,构建关于案情的人 - 事 - 物 - 时 - 地的知识图谱(见图 12),让机器「懂」案情,从而为刑侦人员提供串并案、犯罪预测、信息比对及融合等决策辅助。公安案情结构化是 OONP 的一个成功应用,充分发挥了神经符号系统在解析复杂文本上的优势。公安案情结构化任务的复杂性体现在多个方面,其相关文本形式多样,叙述逻辑繁复曲折,而且最终的知识表示是包含多事件、多实体、多标签以及时空关系的庞杂图谱。为了将文本中特定的叙述习惯等知识作为规则嵌入 OONP 并获得泛化能力,我们利用了 Neural Rule Engine 来处理理解过程中的特定子任务,取得了较小数据量下的显著效果。
智能视频审核:该场景是对借款人进行视频面试,从而基于交互过程进行信息审核和欺诈检测(见图 13)。深度好奇的智能视频审核系统依靠对语音对话的理解来构建对话系统,在沟通过程中根据用户信息判定高欺诈风险的信息点,并进行主动的问询。例如,当借款人提供的职业信息是「养生会所的工作人员」时,该系统就会追问「你们公司的客流量有多大」、「你们公司的主要设备是什么」这类的问题。完整的对话过程将会被用来评估及判定借款人骗贷和逃贷等风险。
6. 总结
自然语言理解作为人工智能的核心任务,经历了从符号智能到统计学习、再到深度学习的发展和演化。深度学习虽然风头正劲,却也暴露出在解决语言理解问题中的诸多缺陷。而今我们相信,深度学习和符号智能的结合将是下一代自然语言理解的新范式,也是解决自然语言理解这个困难任务的唯一路径。神经符号系统是深刻而实用的技术方向,深度好奇也在这个方向上将相应技术做了成功的产业应用。相信在学界和产业界的共同努力下,我们终究可以让机器善解人意。
参考文献:
[1] Minsky, Marvin L. "Logical versus analogical or symbolic versus connectionist or neat versus scruffy." AI magazine 12.2 (1991): 34.
[2] Towell, Geoffrey G., Jude W. Shavlik, and Michiel O. Noordewier. "Refinement of approximate domain theories by knowledge-based neural networks." Proceedings of the eighth National conference on Artificial intelligence. Vol. 861866. 1990.
[3] Garcez, Artur S. Avila, and Gerson Zaverucha. "The connectionist inductive learning and logic programming system." Applied Intelligence 11.1 (1999): 59-77.
[4] Garcez, AS d'Avila, Krysia Broda, and Dov M. Gabbay."Symbolic knowledge extraction from trained neural networks: A sound approach." Artificial Intelligence 125.1-2 (2001): 155-207.
[5] Richardson, Matthew, and Pedro Domingos. "Markov logic networks." Machine learning 62.1-2 (2006): 107-136.
[6] Jaeger, Herbert. "Controlling recurrent neural networks by conceptors." arXiv preprint arXiv:1403.3369 (2014).
[7] Graves, Alex, Greg Wayne, and Ivo Danihelka. "Neural turing machines." arXiv preprint arXiv:1410.5401 (2014).
[8] Sukhbaatar, Sainbayar, Jason Weston, and Rob Fergus. "End-to-end memory networks." Advances in neural information processing systems. 2015.
[9] Neelakantan, Arvind, et al. "Learning a natural language interface with neural programmer." arXiv preprint arXiv:1611.08945 (2016).
[10] Liang, Chen, et al. "Neural symbolic machines: Learning semantic parsers on freebase with weak supervision." arXiv preprint arXiv:1611.00020 (2016).
[11] Mou, Lili, et al. "Coupling distributed and symbolic execution for natural language queries." arXiv preprint arXiv:1612.02741 (2016).
[12] Hu, Zhiting, et al. "Harnessing Deep Neural Networks with Logic Rules." Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). Vol. 1. 2016.
[13] Goyal, Raghav, Marc Dymetman, and Eric Gaussier. "Natural language generation through character-based rnns with finite-state prior knowledge." Proceedings of COLING 2016, the 26th International Conference on Computational Linguistics: Technical Papers. 2016.
[14] Luo, Bingfeng, et al. "Marrying up Regular Expressions with Neural Networks: A Case Study for Spoken Language Understanding." arXiv preprint arXiv:1805.05588 (2018).