发布时间:2021-11-06
近年来,以神经网络为代表的机器学习技术和知识表征、符号推理技术的结合受到了越来越多研究者的关注。曾经,人们通过「数据驱动 vs 知识驱动」、「符号 vs 子符号」、「求解器 vs 学习器」等概念来区分学习和推理。如今,人们更常用「系统 1」和「系统 2」来代表能够迅速思考的系统和较慢推理的系统。
图 1:学习与推理
在由中国人工智能学会主办的2021年中国人工智能大会上,比利时皇家科学院院士,鲁汶大学计算机科学院教授,人工智能研究所主任,IJCAI-22程序委员会主席,AAAI Fellow Luc De Raedt做了主题为《从统计关系人工智能到神经符号计算》的报告。
Luc De Raedt 的研究领域包括人工智能、机器学习和数据挖掘及其应用。他以其在学习和推理领域的贡献而闻名,特别是对统计关系学习、概率和归纳编程的贡献。
他近期在研究下一代编程语言(可以自动从数据中学习),结合概率和逻辑推理和学习,研究(数据)科学的自动化,以及验证学习人工智能系统和机器人技术。他还专注于将概率逻辑与神经网络相结合,并希望将其应用于强化学习和程序归纳。
Luc De Raedt 的许多学生都获得了重要奖项,其中Guy Van den Broeck 是 2019 年 IJCAI 计算机与思想奖的获得者,该奖是人工智能领域 35 岁以下研究人员的最高奖项。
以下为演讲全文,AI科技评论进行了不改变原意的整理。
1 系统 1 与系统 2
系统 1 看到一张图片就可以直接识别其中包含的人或物体。当我们面对一个复杂的问题(例如,数学问题或规划任务),就需要经过多步推理才能得出结论,此时就要用到较慢的系统 2。
图 2:生活中的学习与推理
我们在生活中也需要将学习和推理结合起来。在驾照考试中,我们需要将感知和推理相结合才能回答图 2 中的问题。首先,我们需要识别出场景中的车辆和交通信号。接着,我们需要基于这些观察结果进行推理,推理时会考虑到交通规则。通常情况下,交通规则可以表示为一些逻辑规则。除了回答这些问题,我们在考驾照时还需要判断图中那辆车应该先通过,而自动驾驶汽车也需要具备这种能力。
图 3:融合学习与推理
就系统 1 而言,神经网络是如今最主要的学习范式,它在计算机视觉、语音识别、自然语言处理等感知任务中十分有效。就系统 2 而言,在较慢地推理和思考时,同样也有两种主要的范式:逻辑和概率。在过去的 20 年间,该领域的研究被称为「统计关系学习」(StarAI)或「概率编程」。如今,我们希望将神经网络和统计关系学习结合的基本范式起来。
2 神经符号计算
图 4:统计关系学习和神经符号计算的相似之处
有关「如何将逻辑和神经网络结合起来」的研究被称为「神经符号计算」。我们在统计关系学习和神经符号计算领域中遇到的一些问题是相似的,因此统计关系学习领域的一些解决方案也很有可能适用于神经符号计算。
图 5:神经符号计算最新进展
目前大多数最先进的神经符号计算方法都会将逻辑和知识嵌入到神经网络中,然后由神经网络完成接下来的工作。然而,这样做的弊端在于,它并不依赖于逻辑和神经网络中任何一项技术,丧失了纯粹的逻辑推理所具备的能力(可解释性和可信计算)。
图 6:融合方法
因此,我们需要提出不同的方法来结合逻辑和神经网络——DeepProbLogic。Luc De Raedt 教授认为,逻辑、神经网络都是这种新的神经符号方法的特例。
3 StarAI 与 NeSy 类似的解决方案
图 7:逻辑、图模型、神经符号模型
统计关系学习和神经符号计算都涉及到系统 1 和系统 2。其中,一种系统是有向的、另一种是无向的;一种系统是基于证明的、另一种是基于模型的。这种差异存在于逻辑、图模型,以及神经符号模型中。
图 8:逻辑编程——事实
图 8 展示了一个编程语言 Prolog 实现的命题逻辑程序。橙色方框中有一些事实,例如,发生了入室盗窃、Mary 听到了警报、发生了地震、John 听到了警报。
图 9:逻辑编程——命题
接下来,在基于规则的系统中,橙色方框中的部分表示:如果响起了警报,且 Mary 听到了警报,那么 Mary 就会呼救。如果我们通过 Prolog 或逻辑编程建立了知识库,就可以通过它来判断某个命题的真假。逻辑也有理论模型,在 SAT 求解器中,我们可以将一些逻辑作为约束。
图 10:两种概率图模型和统计关系学习系统
图 10 展示了两种概率图模型和统计关系学习系统。在马尔科夫逻辑和概率软逻辑等系统中,逻辑经常被用作约束,这些系统可以被表示为无向图模型。而贝叶斯网络等有向图模型的思路则与概率逻辑编程十分相近,我们在这里将重点介绍 ProbLog。
图 11:两种神经符号系统
类似地,在神经符号系统中,我们可以将逻辑作为一种神经程序,这与贝叶斯网络等有向的统计关系学习方法和逻辑编程相类似;此外,我们还可以将逻辑作为正则化项,这与马尔科夫网络等无向的统计关系学习方法和软约束相类似。一些神经符号计算系统会进行基于知识的模型构建,其中逻辑将被用作模板。
4 神经编程逻辑
图 12:将逻辑作为一种神经程序
在神经编程逻辑中,我们首先将逻辑程序编码到神经网络中。上世纪 90 年代中期,Towell 和 Shavlik 等人提出了 KBANN 方法,首次融合了逻辑和神经网络。他们首先得到了命题 Prolog 程序,然后以此为依据得到了一些证明结构,形成了具有合取、析取关系的证明树。得到的证明树可以作为神经网络的基础结构。
图 13:神经理论证明器
得到了神经网络的结构后,他们会为网络的输入、边添加权重,并使用传统的训练机制来学习。这种有向的神经编程方法取得了很好的效果,至今仍十分流行。《Lifted Relational Neural Networks》、《Neural Theorem Prover》等论文都使用了这种方法。
在 NeurIPS 2017 上发表的论文《Neural Theorem Prover》中,作者并没有使用命题逻辑,而是使用 ProLog 构建了神经证明器,推导出了神经网络的架构,并将其用作计算图。在这种情况下,逻辑被编码到神经网络中,从而丧失了纯粹的逻辑推理能力。
5 将逻辑作为约束/正则化项
图 14:逻辑约束
在一个多分类任务中,神经网络需要预测出样本从属于某一个特定类型。因此,预测的结果需要满足如图 x 右侧所示的约束。基于类似的思想,我们可以得到更复杂的逻辑表示,也可以实现更有趣的应用。
图 15:逻辑约束——软概率
在具体的实现过程中,作者计算了满足上述条件的软概率,并将其作为一种语义损失函数,用来惩罚不满足约束的神经网络预测结果。
图 16:逻辑正则化项
作者将这种语义损失函数与传统的损失函数相加,从而引入约束。当预测结果满足约束的程度越高时,语义损失越小。这种将逻辑作为约束的方法在「逻辑张量网络」和「基于语义的正则化」等神经符号计算系统中十分流行。
图 17:逻辑、概率、模糊逻辑
由于逻辑以数字和权重的形式被编码到了神经网络中,我们也试图研究这些数字究竟有什么意义。受统计关系学习的启发,我们至少可以从逻辑、概率、模糊逻辑三个层面上探究该问题。
图 18:逻辑、概率、模糊逻辑举例
具体而言,Dai 等人在 NeurIPS 2019 上提出了纯逻辑的神经符号计算方法,但该方法试图仅仅针对网络中纯逻辑的方法优化神经网络,导致优化十分困难。
我们还可以使用统计关系学习中概率图模型的工具来实现神经符号计算,例如:算术环路和知识补全。然而,概率方法的弊端在于其运算速度较慢。
因此,有些研究人员试图通过模糊逻辑实现神经符号计算,将逻辑运算转化为神经网络。通常而言,这种方法的优化速度较快。但是模糊逻辑的效果并不完全等同于纯逻辑方法,有一些在纯逻辑中成立的结论在模糊逻辑中不一定成立。
图 19:马尔科夫逻辑
如前文所述,我们可以通过语义损失函数,将逻辑转化为概率化的约束,为可能出现的事实赋予概率。在马尔科夫逻辑中,我们为约束赋予权重,权重越高的约束越重要。
图 20:概率软逻辑
为了解决概率软约束方法的一些弊端,人们提出了其模糊逻辑变体。该方法目前成为了神经符号计算领域的主流方法,代表性的工作包括「Logic Tensor Networks」、「Semantic based Regularization」、「Lifted Relation Neural Networks」等,这些模型更加关注效率而不是底层的概率的语义。该方法使用的语法与概率软约束类似,但优化速度大幅提升。其弊端在于,一些纯逻辑、软约束方法下成立的结论在此不一定成立,可能会出现一些意想不到的情况,难以解释语义。
6 DeepProbLog
图 21:DeepProbLog
为了同时兼具神经网络和逻辑推理的优势,Luc 教授坚信真正实现神经符号计算的方法需要能将逻辑和神经网络囊括为其特例。为此,我们需要在逻辑和神经网络之间构建一个信息能够双向流通的接口——DeepProbLog。
图 22:DeepProbLog 与 NeSy
DeepProbLog 是 ProbLog 的深度学习拓展版本,相较于其它的神经符号计算方法,其优势在于它能够同时保留底层的概率框架、逻辑框架、神经网络框架的完整的表达能力。因此,逻辑和神经网络都是 DeepProbLog 的特例。从语义的层面上说,DeepProbLog 继承了 ProbLog 的语义。
7 从 Prolog 到 ProbLog
图 23:概率逻辑编程
在命题逻辑中,我们会用到一些事实和规则,并以此证明一些结论。为了将概率引入该框架,将逻辑和概率统一,我们首先需要统一二者的底层概念,即「命题」和「随机变量」。我们以此为依据构建逻辑和概率之间的接口,将概率化的事实转化为 ProbLog 的命题逻辑,通过规则根据这些概率化的事实推导出概率分布。同时,我们还可以计算出一些证明的概率。
图 24:概率逻辑编程——语义
如图 23 所示,在概率逻辑程序中,「地震」的概率为 1。以此为根节点,我们构造出了一棵生成树,树上的节点为可能发生的事件及其为真概率,将每一条路径上节点的概率相乘就可以得到一系列事件同时为真的概率。
图 25:概率逻辑编程——贝叶斯网络
研究人员注意到,ProbLog 程序和贝叶斯网络等有向图模型之间有很紧密的联系,同时 ProbLog 的表达能力要强于贝叶斯网络。首先,ProbLog 是一种编程语言, 它是 Prolog 的扩展。其次,它兼具统计关系学习和概率化数据库的优点。
图 26:概率逻辑编程举例
在如图 25 所示的例子中,左侧的方框代表学生,右侧的方框代表课程,二者交叉的部分代表学生的成绩。我们可以根据相关的规则,基于学生的智力和课程的难度,对学生的课程成绩进行关系推理。在这里,概率之间是互斥的。我们还可以通过逻辑和 ProbLog 将该方法扩展到本体知识上。
图 27:ProbLog 示例
通过上述方式,我们可以对任意数量的本体进行抽象,并捕获它们之间的关系。输入学生和课程的信息,我们就可以得到如图 26 右下角所示的贝叶斯网络,将学生的表现、课程组合等信息组织到一个复杂的模型中。
8 ProbLog 的推理
图 28:ProbLog 推理
使用 ProbLog 进行推理往往包含以下四个步骤:(1)将查询中的变量替换为相应的常量,得到对应的程序(2)将程序改写为命题逻辑公式(3)将命题逻辑公式编译为算术环路(4)对算术环路进行估计。
ProbLog 可以被应用于游戏等动态网络中。在游戏的每一个状态下,场景中都会出现大量的目标和实体。我们可以通过统计关系学习的方式对其建模,从而预测世界将会如何变化。ProbLog 推理还可以被用于行为识别,对包含的物体进行推理和跟踪。在机器人领域,ProbLog 可以被用于通过关系学习物体的功能可见性,进而规划行为。在生物学领域,我们使用 ProbLog 解释分子结构。通常而言,分子结构是一个非常大的交互网络,ProbLog 可以推理出导致出现某种现象的子网络。
9 从 ProbLog 到 DeepProbLog
图 29:神经谓词
同样,如果我们想要统一逻辑和神经网络,就需要统一底层的基本概念。「谓词」是一阶逻辑的基本概念之一。为了构建逻辑和神经网络之间的接口,我们试图使用「神经谓词」。
图 30:神经谓词举例——MNIST
以 MNIST 手写数字分类为例,神经网络的输入为一张图像,输出为各个数字的概率分布,我们将这一过程表示为神经谓词。
图 31:MNIST addition
如图 30 右侧所示,在更为复杂的任务中,我们向 DeepProbLog 指定加法的规则,前两个 MNIST 数字的和为第三个数字。当我们得到两张 MNIST 图像和对应的和之后,可以更准确地推理出 MNIST 数字的类别,这相当于施加了一种约束。
以往,要想通过传统的 CNN 实现两个 MNIST 数字的加法,我们需要将两个数字拼接起来,并进行分类。这样的收敛速度比使用 DeepProbLog 要慢得多。然而,如果我们要计算一连串 MNIST 数字的加法,就很难使用传统的 CNN 实现。因此,我们的网络还需要学会将 MNIST 数字映射为数值。
10 推理与学习
图 32:梯度半环
以加法为例,在推理和学习的过程中,我们首先需要将加法转化为环路中的各个节点,叶子节点为神经谓词。神经谓词下方是识别图像的神经网络。这些神经谓词就是神经网络和符号计算之间的接口。在计算梯度时,我们从最上方的加法节点开始使用交叉熵计算损失,通过随机梯度下降等方法传播误差。
11 实验评估
图 33:实验评估——程序归纳
符号计算系统经常被用于归纳规则。在该任务中,人们通常会使用模板,使用具体的谓词替换其中的谓词变量。任务的目标在于找到正确的谓词,使规则成立。显然,这里的搜索空间十分巨大,学习十分困难。神经符号方法会赋予每条规则一定的权重,从而进行学习。具体而言,作者在排序、加法、单词代数问题这三个任务上测试了程序归纳方法。此外,DeepProbLog 还可以被用于数据中带噪声的加法,我们可以学习出噪声出现的概率。在扑克游戏等场景下,我们可以通过 DeepProbLog 处理不确定性问题,预测获胜的概率。
12 软统一
图 34:软统一
神经理论证明器(NTP)使用神经网络的嵌入进行软统一,例如:「grandpa」和「grandfather」是同义词,则计算出的二者统一的概率很高。
图 35:MNIST 中的嵌入
我们可以通过 DeepProbLog 实现软统一谓词,以 MNIST 为例,我们首先将 MNIST 图像映射到参数上并进行嵌入。接着,我们通过径向基函数计算两个嵌入的距离。与 TransE 的想法类似,我们还可以将一些具体的操作、关系嵌入到计算图中。
图 36:CLUTRR 数据集
我们也在 CLUTRR 数据集上测试了这种思想。CLUTRR 是一个被神经符号方法广为使用的数据集,其任务为根据给定的句子预测家庭成员之间的关系。通过使用 DeepProbLog,我们可以显式地给出家庭关系的规则。
13 未来的挑战
图 37:未来的挑战
未来,DeepProbLog 等神经符号方法需要扩展其规模,不仅仅局限于推理环节。研究人员目前正试图通过一些近似方法来提升这类模型的规模和速度。此外,神经符号方法还应该被应用于更多的真实应用场景。
14 结语
在本次演讲中 Luc De Raedt 院士从两个方面介绍了将统计关系学习和神经符号计算融合在一起的思路。
图 38:StarAI 与 NeSy 共享研究问题和解决方案
首先,统计关系学习和神经符号计算有许多共同的研究问题,因而也拥有共同的设计空间和解决方案,例如:有向图与无向图,基于逻辑的方法与基于概率的方法,纯逻辑与模糊逻辑。因此,研究神经符号计算可以借鉴许多统计关系学习研究的思路。
图 39:构建神经网络和符号计算之间的接口层
其次,Luc De Raedt 教授试图构建一种新的神经符号计算方法,而不仅仅是直接将逻辑和知识嵌入到神经网络中。Luc 教授倡导在神经网络和符号计算之间构建一个接口层。这种接口并不是简单的流水线,而是双向的信息通道。
感谢AI科技评论协助整理