Neural LP阅读笔记

it2023-02-23  95

Differentiable Learning of Logical Rules for Knowledge Base Reasoning 阅读笔记

NIPS 2017

Introduction

1.逻辑规则是知识库推理任务的有效表示形式,因为逻辑规则可解释,而这种可解释性导致转移任务的可靠性,因为规则是无关特定实体的。这也是Embedding不能做到的。 2.通过为逻辑程序加上概率,能够更好地对复杂和嘈杂的数据进行建模。 3.学习逻辑的结构一般来说是一个离散问题。 4.本文提出了一种完全可微的系统:Neural LP,用于学习由一阶规则集定义的模型,这使得我们可以将现代的基于梯度的编程框架和优化方法用于归纳逻辑变成任务。 5.该模型的提出是受到了TensorLog的启发,TensorLog在使用一阶规则的推理和稀疏矩阵的乘法之间建立了联系,这使得某些类型的推理任务可以编译为对矩阵进行微分的序列。(将实体的关系都用向量/矩阵表示,规则表示为矩阵乘法)但是TensorLog只能学习参数,不能学习规则结构。 6.本文提出的神经LP在TensorLog的基础上加入了具有注意力机制和内存的神经控制器系统,使之能够同时学习参数和结构。

Framework

1.基于知识推理 知识库是Relation(head,tail)格式的关系数据的集合,其中head和tail是实体,Relation是两者之间的关系。

为了实现基于知识库的推理,我们需要学习以下形式的加权链式逻辑规则: 其中α为规则置信度。 推理过程中,给定一个实体x,每个y的得分被定义为query(y,x)的规则置信度的总和,我们将返回一个排序的实体列表,得分越高,排名越高。

2.TensorLog 将所有实体进行one-hot编码,向量长度为实体个数,对于第i个实体来说,只有i-th位置处为1,其余位置均为0; 将每个关系定义为一个操作符Mr,其规模为|E|x|E|,取值为0/1,有且仅有R中存在R(i,j),Mr[i,j]才取值为1,其余位置为0。 利用上述表示,我们可以通过执行矩阵乘法Mp·Mq·Vx=s来模拟任何实体X=x的逻辑规则推理:R(Y,X)<-P(Y,Z)^Q(Z,X),向量s中为1的位置就是y的答案。

推广到任意规则长度,rule条数为l的情况,我们想为每个查询(每种关系)学习到的内容为: l是规则的索引,α表示规则l的置信度,β表示规则l中所有关系的有序列表。 给定Vx,推理规则集得到的各个实体的分数为s中相应位置的值。 为了得到最优化的推理,需要对每个query进行下面的优化: {x,y}是所有满足query的实体对,{α,β}是要学习的参数。

3.Neural LP 学习算法需要学习两个部分:1)结构,规则尾的组成; 2)每条规则的置信度。规则置信度依赖于具体规则,而规则的确定是一个离散化的过程,所以(4)是不可微的。

作者提出了自己的想法:(交换了求和和积的位置) 其中T是规则的最大长度,|R|表示知识库中的关系总数。 作者将长度为T的规则中每个关系都与权重相关联。(mine:第t个关系处对关系集所有可能关系都有一个权重) 但是这样所有规则的长度都被统一限制为T,为了解决这一问题,论文中提出了一种递归公式(实现的大概就是和公式3差不多的事情): 引入了一个辅助记忆向量ut: ut初始设置为Vx;在(7)描述的每一步中使用内存注意向量bt计算在t步之前的所有内存向量的加权平均值。通过这种公式,模型可以将TensorLog运算符应用于所有先前部分的运算结果而不仅仅是最后一步。 最后,模型计算所有内存向量的加权平均值,因此需要注意选择恰当的规则长度。

Neural LP引入了一个神经控制系统,用来学习运算符α和内存注意向量b。使用循环神经网络,因为RNN符合循环公式,还因为当前步骤的注意力可能取决于先前的步骤。

在1~T+1的每步中,网络依据公式9,10,11预测α和b;(为什么这样算论文没说,也不知道h是什么) 系统执行公式7的运算,将每步运算得到的ut(该步的预测结果)放入内存,这样内存中会保存每个步骤的部分推断结果。 目标是最大化vy的转置乘u,这里我们最大化vy的转置乘u因为经验上讲非线性能够提升优化性能。 这样就能得到α和b。 有了这两个参数,我们就可以推导逻辑公式了。 对于每种query,我们可以得到关于它的置信度和规则结构(α,β)(β就是公式3中提到的规则组合) 通过执行公式7获得规则,并跟踪每个矩阵Mrk的系数,详细的推推导过程如下:

输入:α和注意力向量b 符号: Rt= {r1, . . . , rl}是步骤t的部分规则集,其中每个规则由一对(α,β)组成,α是置信度,β是关系索引的有序列表。

最新回复(0)