深度好奇研究组转载

神经规则引擎:让符号规则学会变通

近年来,神经符号学习成为一个很热门的方向,很多科研工作把符号知识引入神经网络模型,在一些经典的 NLP 任务上都取得了不错的效果。本文介绍了一种神经规则引擎(Neural Rule Engine,NRE),可以从规则中学习知识,同时又通过神经网络来泛化知识,这与人类学习知识的方式有异曲同工之妙。

  • 论文题目:Generalize Symbolic Knowledge With Neural Rule Engine
  • 论文地址:https://arxiv.org/abs/1808.10326

目前的自然语言处理任务中,神经网络模型在学术界占据了绝对的优势,然而,基于符号知识的规则系统仍然在工业界大有用武之地。人类语言是一种非常复杂的现象,为了更好地构建语言智能系统,可以将神经网络和符号知识融合使用,集成二者的优势。

近两年来,神经符号学习(Neural Symbolic Learning)成为一个非常热门的方向,不少优秀的科研工作把符号知识引入神经网络模型,增强了模型的学习能力和可解释性,在一些经典的 NLP 任务上都取得了不错的效果。与这种融合方式相反,近日,深度好奇的研究者们提出了一种全新的融合策略——利用 NN 模型来改进规则的效果。NN 模型的优点是灵活性高、泛化能力强、鲁棒性好,如果将 NN 模型的这些优势赋予规则系统,会产生出怎样的火花呢?

本文介绍了一种神经规则引擎(Neural Rule Engine,NRE),NRE 可以从规则中学习知识,同时又通过神经网络来泛化知识,这与人类学习知识的方式有异曲同工之妙。

具体来说,NRE 由神经模块网络(Neural Module Networks)构成,其中的每一个模块代表了规则中的一种操作,而模块的实现形式既可以是神经网络,也可以是符号算法。并且,给定少量的标注样本,可以使用强化学习来微调(Finetune)学习效果。实验证明,NRE 可以大幅提升规则的召回率(Recall),同时还能将精确率(Precision)维持在较高的水准。

举个具体的规则例子,对于一个判断案件类型的分类任务来说,案件内容如下:

「2003 年 12 月 21 日中午 12 时,东浦村张某与王某某二人到临西县游玩,被三名男子跟踪,后用刀威逼,抢走手机一只。」

根据经验来看,如果案件表述中有「跟在.*后面|跟踪」,一般属于「尾随作案」,但是如果其中有「事主.*跟随」的话就不是。所以,针对「尾随作案」类别,可以写一条规则:

「跟在.*后面|跟踪 @@ 事主.*跟随」

其中「@@」左边蓝色的是正规则,也就是句子中必须匹配上的内容,「@@」右边红色的是负规则,也就是句子中不能包含的内容。

由于正则表达式是有限状态机的一种,所以可以定义一些操作(Action)来解析正则表达式规则,比如:

用预先定义好的操作来表示规则,如下图所示:

每一条规则都可以被拆解成树状结构,拆解的过程依赖于 Rule Parser。由于整个系统的设计既考虑了符号性又考虑了神经网络的特性,所以对于规则的拆解上既可以用符号算法来实现也可以用 Neural Rule Parser 来实现。由于树状结构可以转变成逆波兰表达式(Reversed Polish Notation)的形式(如下图):

因此可以采用一个 Seq2Seq神经网络模型来实现对规则的拆解。具体如下:

给定一条规则,鉴于同时预测模块和模块所需参数较为困难,所以可以采取分步的方式来预测。第一步先预测操作序列,第二步根据规则和已经预测出来的操作来预测每个操作所对应的参数。为了让预测的结果更加可靠,在训练阶段,我们加入了微调(Finetune)过程,对于预测出来的操作序列根据在真实事例上的表现用强化学习来进行模型的调整。

得到 rule parsing 的结果后,即可对模块进行组装。在本文中,Find 模块和 And_Ordered 模块都采用了神经网络的设计。

Find 模块

Find(x) 模块是用来查找句子中匹配 x 部分的内容,可以用正则表达式的匹配来实现,也可以用神经网络来实现。神经网络的 Find 模块如下:

对于每一个句子来说,Find(x) 操作就是在句子中找到 x,x 可以是一个字、一个词或者是一个 N-gram。无论用神经网络实现还是用正则表达式的 match(x) 来实现,任务都可以看作是对句子做序列标注,也就是对句子中的每一个单位都标注「是否匹配」的标签。具体来说,对于句子中的每一个单位,先获取到它滑动窗口的上下文,并令上下文和要查找的 x 都通过相同的编码器(Encoder),之后用评价函数来对二者的相似程度进行打分,最后根据每个位置的所有分数来判断当前位置的标签。

And_Ordered 模块

And_Ordered 模块可以采取如下设计:

And_Ordered 操作是用来判断两个输入之间是否满足一定的距离关系。通常来说,输入就是子节点给出的标记结果,如 r0 和 r1。为了让神经网络更容易判断输入之间的距离,我们可以引入距离标记 d0 和 d1。结合句子原文,And_Ordered 模块可以判断出两个子节点的输入是否满足距离关系。

模型训练

在训练过程中,模块和 Neural Rule Parser 都采取了预训练+微调的策略。在训练时,先对数据和规则进行训练集/验证集/测试集的划分,为了避免数据泄漏,各部分之间不能混用。训练模块的时候,先根据数据随机生成各个模块的训练样本,在训练到一定程度时,把训练集中的规则真实应用于训练集中的数据,按照数据的真实标签采用强化学习的方式对模块进行微调。对于 Neural Rule Parser 也按照类似策略,依前文方式进行训练。

Neural Rule Engine (NRE)

NRE 集合了上述的组件:NN/算法实现的模块,NN/算法实现的 Rule Parser。NRE 的整体架构如下图所示:

对于给定的一条事例和一条规则,NRE 先将规则拆解成由模块组成的树状结构,之后根据树状结构将规则应用于具体的语句上,从而给出匹配后的结果。

实验

论文在中文案情分类(Chinese crime case classification)任务和 SemEval-2010 relation classification 任务上进行了实验。实验结果如下:

NRE 在中文案情分类数据集上的结果

NRE 在关系分类数据集上的结果

上面的结果显示,RE 的 Precision 很高,但是 Recall 相对较低。而第二组 Baseline 是传统意义上的序列模型,并不能处理好正则表达式,特别是正则表达式除了局部的匹配还需要考虑有层级关系的全局匹配,传统的序列模型很难处理好这些情况。NRE 则能带来 Recall 接近翻倍的效果,同时 Precision 仍维持在较高的水平。需要关注的是,微调(Finetune)对 NRE 来说是至关重要的,因为 NRE 在预训练阶段是单纯地在训练各个模块,而微调是让规则在真实场景中调整的关键。

同时,由于 NRE 可以充分利用神经网络和符号二者的优势,为了探究规则的泛化性从何处而来,我们还进行了额外的实验。我们通过对不同部分分别采用神经网络和符号算法,从而得到了混合的模型(见下表)。随着神经网络的介入,NRE 整体的 Recall 表现会更好,而 Precision 在合理的范围内有所下降。实际上,这是因为神经网络的灵活性所带来的优势,弥补了规则匹配的僵硬。

 神经网络和符号算法的不同组合,其中「_」左边是神经网络的实现,右边是算法实现,「P」是「Find_Positive」,「N」是「Find_Negative」,「A」是「And_Ordered」,「S」是「Rule Parser」。

另一方面,研究模型给出的结果可以发现,Find 模块带来了巨大的泛化能力。传统的正则表达式是对样式进行匹配,而 NRE 在一定程度上是对语义进行匹配。如下述两图的中英文案例所示,查找「pushed into」会合理地找到「put inside」,而像「进入室内」被「入室」整体匹配上更能说明 NRE 对词语的查找会超越样式本身。

与此同时,用 Neural Rule Parser 对规则进行拆解也是对规则本身进行修正。比如下图中的「落水管」和「不锈钢管」被合并成为了「管」,而且「打墙洞」中的「洞」被删去。

总结

我们提出了一种全新的学习策略来对符号规则进行改进,神经规则引擎(Neural Rule Engine)使得规则获得了神经网络带来的灵活性、鲁棒性和泛化能力,同时又保持了规则的精确性和可解释性。

NRE 包含了 Rule Parser 和一系列操作模块,他们既可以是定制化的神经网络,又可以是符号算法。对于一条给定的规则,NRE 先对规则进行拆解,使其成为操作序列,之后根据操作序列来装配模块,最终给出预测结果。此外,我们还提出了分步的训练方法使得构建 NRE 成为可能,即先对模块和 Rule Parser 随机生成数据进行预训练,之后根据真实的样本标注用强化学习进行微调,从而得到具有泛化能力的规则表示。

实验表明 NRE 可以大幅提升规则的 Recall,同时还能维持较高的 Precision。NRE 不仅是一种新的神经符号学习范式,同时也为现有的工业应用带来了一种高效的改进,它可以被用来对已有的规则系统进行升级,或者在训练数据不大的情况下快速开发出神经规则系统。

理论神经网络神经规则引擎
2
相关数据
规则引擎技术

与基于规则的专家系统(rule-based expert system)涵义类似,通常是依据设定好的规则作出决策的引擎。在计算机科学中,基于规则的系统被用作存储和操纵知识的一种方式,以有用的方式解释信息, 它们经常用于人工智能应用和研究。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

分类数据技术

一种特征,拥有一组离散的可能值。以某个名为 house style 的分类特征为例,该特征拥有一组离散的可能值(共三个),即 Tudor, ranch, colonial。通过将 house style 表示成分类数据,相应模型可以学习 Tudor、ranch 和 colonial 分别对房价的影响。 有时,离散集中的值是互斥的,只能将其中一个值应用于指定样本。例如,car maker 分类特征可能只允许一个样本有一个值 (Toyota)。在其他情况下,则可以应用多个值。一辆车可能会被喷涂多种不同的颜色,因此,car color 分类特征可能会允许单个样本具有多个值(例如 red 和 white)。

有限状态机技术

有限状态机(英语:finite-state machine,缩写:FSM)又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

自然语言处理技术

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

序列到序列技术

强化学习技术

强化学习是一种试错方法,其目标是让软件智能体在特定环境中能够采取回报最大化的行为。强化学习在马尔可夫决策过程环境中主要使用的技术是动态规划(Dynamic Programming)。流行的强化学习方法包括自适应动态规划(ADP)、时间差分(TD)学习、状态-动作-回报-状态-动作(SARSA)算法、Q 学习、深度强化学习(DQN);其应用包括下棋类游戏、机器人控制和工作调度等。

符号人工智能技术

符号人工智能是指人工智能研究中所有的基于高阶“符号”(人类可读)表示的问题、逻辑和搜索的方法的集合。

暂无评论
暂无评论~