第三章题目是Learning Symbolic Rules for Reasoning in Quasi-Natural Language,旨在开发一种自动从数据中学习符号规则的方法,以实现使用自然语言进行基于规则的推理。主要介绍了两部分内容,一是MetaQNL,准自然语言的符号系统;二是MetaInduce,一种从由问题和答案组成的训练数据中归纳MetaQNL规则的学习算法。
一、MetaQNL
MetaQNL是拟自然的,并具有与自然语言兼容的形式语法。以下给出其中的一系列形式化定义:
以上定义说明MetaQNL中的句子是一个token序列,其中有3种不同类型的标记——单词、变量和特殊符号。MetaQNL将words视为符号,不假定任何关于其意义的先验知识。变量是在推理中绑定到具体句子的占位符。特殊符号对于编码具体任务的结构是有用的。
以下给出对抽象规则进行替换得到具体规则的示例:
文中还有其他的一些形式化定义,感兴趣的话可以移步原文仔细研究。
二、METAINDUCE
MetaInduce是一种通过将损失函数编码为最大可满足性(MAX-SAT)问题来学习规则的方法,可以通过现有的求解器(Z3/Open-who)有效地求解。
Metainduce算法对训练数据进行多次迭代,在每一次迭代中给定一个示例(Ai,gi),它可能是可证的也可能是不可证的,首先依赖一个规则提出器来生成候选规则,然后运行一个现有的证明器在候选规则和模型中的现有规则中搜索证明。在每个阶段结束时,将证明中使用的所有具体规则抽象为带变量的规则(反统一)。然后执行规则剪枝-选择M作为最小化损失的规则子集(通过将所有证明编码为 MAX-SAT 问题来选择模型 M 作为 规则抽象以后得到的规则加上之前的具体规则组合成的集合Γ′ 的子集,其解对应于一组近似最小化损失的规则)。
以下重点讲解规则提出器,规则抽象过程,证明器:
规则提出器:
- 首先,它通过以所有可能的方式组合训练集中的句子,生成所有前提数量≤ 2 的具体规则;
然后,它利用有关组合泛化的先验知识对规则进行筛选: 长序列的意义取决于其子序列(原来的 序列是否是新生成的序列的子序列)。
规则抽象:
采用反统一(Anti-unification)方法,给定两个句子(或两个规则),反统一性问题就是计算一个最小的反统一性完备集。
将模型复杂度度量为规则的数量。最小化损失函数来评估模型的复杂性和与训练数据的一致性:
其中,|M| 是规则数量;和
分别是与 M 一致的可证明/不可证明示例数。λ+ 和 λ- 是控制三个项之间权衡的超参数。
证明器:
Z3(可满足性模理论求解器)求解MAX-SAT问题的步骤:
(转化方法:使用布尔变量表示每个子句是否满足,然后通过逻辑运算符(如与、或、非)将子句组合成一个整体的布尔逻辑公式)。
2.定义布尔变量和约束:在Z3求解器中定义布尔变量,并添加约束条件,将转化后的布尔逻辑公式作为约束添加到求解器中。
除此之外,由于自然语言中的推理通常是模棱两可的。为了覆盖更广泛的自然语言推理,本章还尝试将严格证明放宽为模糊证明(仅在测试中执行),用分数表示严格程度。这种软匹配允许——如果现有的规则知识库不足以产生严格的答案,它可以产生“有根据的猜测”。
本文使用了两种软匹配的方法:第一种预训练大语言模型是给定 r 和 A,我们使用语言模型来输出具体的规则。具体来说,我们将软匹配编码为 seq2seq 任务,并精细化 T5(Raffel 等人,2020 年)模型。此方法需要监督才能进行微调。
第二种符号反统一是,给定 r 和 A,r 不适用,但我们可以找到一个更一般的规则 r′,它适用于将 A 与 r 的前提反统一。例如,将“An elephants smiles”与“The [A] smiles”反统一会产生“[A] smiles”。当 r 本身适用时,此过程将刚性匹配作为特殊情况。为了计算匹配分数,我们使用 r 和 A 之间完美匹配的单词数的启发式方法。
三、实验
本章在三个任务上实例化 MetaQNL/MetaInduce:
1.在 MiniSCAN/SCAN 上学习组合指令
2.在 RuleTaker 上进行逻辑推理(Clark 等人,2020a)
3.在 SIGMORPHON 2018 上进行形态分析(Cotterell 等人,2018 年)
以下是实验结果:
本章的读书笔记基于Yang和Deng ( 2021 )发表的文章 LEARNING SYMBOLIC RULES FOR REASONING IN QUASI-NATURAL LANGUAG。