当前位置:   article > 正文

推理论文笔记_三元组向量化

三元组向量化

可解释指标

Explainability in Graph Neural Networks:A Taxonomic Survey

Fidelity(保真度)

Fidelity+被定义为原始预测和屏蔽重要输入特征后的新预测之间的准确度(或预测概率)差异,值越大代表模型可解释性越强
分类任务
 Fidelity-  a c c = 1 N ∑ i = 1 N ( 1 ( y ^ i = y i ) − 1 ( y ^ i m i = y i ) ) \text { Fidelity- }{ }^{a c c}=\frac{1}{N} \sum_{i=1}^{N}\left(\mathbb{1}\left(\hat{y}_{i}=y_{i}\right)-\mathbb{1}\left(\hat{y}_{i}^{m_{i}}=y_{i}\right)\right)  Fidelity- acc=N1i=1N(1(y^i=yi)1(y^imi=yi))
回归任务
 Fidelity-  p r o b = 1 N ∑ i = 1 N ( f ( G i ) y i − f ( G i m i ) y i ) \text { Fidelity- }{ }^{p r o b}=\frac{1}{N} \sum_{i=1}^{N}\left(f\left(\mathcal{G}_{i}\right)_{y_{i}}-f\left(\mathcal{G}_{i}^{m_{i}}\right)_{y_{i}}\right)  Fidelity- prob=N1i=1N(f(Gi)yif(Gimi)yi)
Explainability Methods for Graph Convolutional Neural Networks
这篇论文背景是图像分类(化学结构)任务,对于分子分类,每个分子可以表示为一个属性图 G i G_i Gi = ( X i X_i Xi A i A_i Ai),其中节点特征 X i X_i Xi总结了分子中原子的局部化学环境,包括原子类型、杂化类型和价结构[35],邻接矩阵编码了原子键并展示了整个分子的连通性。
将保真度定义为通过遮挡显著性值大于0.01(在0到1的范围内)的所有节点而获得的精确度差异。

Sparsity(稀疏度)

好的解释应该是稀疏的,这意味着它们应该捕捉最重要的输入特征,忽略不相关的特征。
 Sparsity  = 1 N ∑ i = 1 N ( 1 − ∣ m i ∣ ∣ M i ∣ ) \text { Sparsity }=\frac{1}{N} \sum_{i=1}^{N}\left(1-\frac{\left|m_{i}\right|}{\left|M_{i}\right|}\right)  Sparsity =N1i=1N(1Mimi)
其中 ∣ m i ∣ |m_i| mi表示 m i m_i mi中识别的重要输入要素(结点/边/结点要素)的数量,而 ∣ M i ∣ |M_i| Mi表示 G i G_i Gi中的要素总数。请注意,较高的值表示解释更加稀疏,并且倾向于仅捕获最重要的输入信息。
这里怎么识别最重要的特征个数,个人理解应该是选取一个阙值

Stability(稳定性)

好的解释要稳定。直觉上,当对输入进行小的改变而不影响预测时,解释应该保持相似。最近提出的稳定性度量标准衡量一种解释方法是否稳定[83]。给定一个输入图 G i G_i Gi,它的解释mi被认为是基本事实。然后,输入图 G i G_i Gi被小的变化扰乱,例如附加新的节点/边,以获得新的图Gi。请注意, G i G_i Gi和- G i G_i Gii需要具有相同的预测。然后得到对 G i G_i Gi的解释,记为ˇmi。通过比较mi和ˇmi之间的差异,我们可以计算稳定性得分。请注意,较低的值表明解释技术更稳定,对噪声信息更鲁棒。
G A ( m ) = ∑ i n m ( G +  noise  i ) , m =  GradInput  G_{A}(m)=\sum_{i}^{n} m\left(G+\text { noise }_{i}\right), m=\text { GradInput } GA(m)=inm(G+ noise i),m= GradInput 

相似性(用于因果推断

在这里插入图片描述
接近度定义为CF示例和原始输入之间的特征距离的平均值。对于一组示例,邻近度就是所有示例的平均邻近度。
C:反事实实例
K:是反事实实例的个数
X:特征
对于分类特征
如果CF()示例中任何分类特征的值与原始输入不同,则距离为1,否则为零

知识推理分类

基于逻辑规则的知识推理

基于一阶谓词逻辑规则的知识推理

(姚明, 出生于, 上海) ∧ (上海, 位于, 中国) ⇒ (姚明, 国籍, 中国)
  • 1

基于随机游走算法的知识推理

基于随机游走的方法首先确定目标关系,判断两个实体之间是否存在该关系,如果存在,将其加入到正例集合,由于知识图谱中只有正例没有负例,通过对头尾实体进行随机替换构造负例集合。将两个实体之间的一条路径作为一个特征,任意枚举两个实体之间的长度不超过特定阈值的所有可能路径,将这些可能路径放入特征集合,根据随机游走的思想计算路径的特征值,进而构成每个样本的特征向量;通过利用这些正负例样本的特征向量训练 logistic 回归分类器。

缺点:枚举对于大规模知识图谱的不适应,而且如果是实体预测,构造一个负例如果他刚好是测试集的正例呢

基于分布式表示的知识推理

这里主要是将三元组向量化

A Three-Way Model for Collective Learning on Multi-Relational Data(张量分解)

在这里插入图片描述
X k ≈ A R k A T ,  for  k = 1 , … , m \mathcal{X}_{k} \approx A R_{k} A^{T}, \text { for } k=1, \ldots, m XkARkAT, for k=1,,m

X i j k = 1 X_{ijk} = 1 Xijk=1 denotes the fact that there exists a relation
这里的A和R应该都是初始embedding做训练,使得与X距离最小

Learning Entity and Relation Embeddings for Knowledge Graph Completion(距离模型)

假设实体对(h,r,t),首先根据当前的关系r将头尾实体 h r h_r hr, t r t_r tr分别映射到关系空间中,然后在关系空间中建模 h r + r ≈ t r h_{r}+r \approx t_{r} hr+rtr

基于神经网络的知识推理

Convolutional 2D Knowledge Graph Embeddings

请添加图片描述
在ConvE模型中,实体和关系嵌入首先被整形和连接(步骤1,2);然后将得到的矩阵用作卷积层的输入(步骤3);得到的特征图张量被矢量化并投影到k维空间中(步骤4),并与所有候选对象嵌入相匹配(步骤5)

DSKG: A Deep Sequential Model for Knowledge Graph Completion

请添加图片描述

Reinforcement Knowledge Graph Reasoning for Explainable Recommendation

请添加图片描述
f ( e 0 , e k ∣ r ~ k , j ) = ⟨ e 0 + ∑ s = 1 j r s , e k + ∑ s = j + 1 k r s ⟩ + b e k f\left(e_{0}, e_{k} \mid \tilde{r}_{k, j}\right)=\left\langle\mathbf{e}_{0}+\sum_{s=1}^{j} \mathbf{r}_{\mathrm{s}}, \mathbf{e}_{\mathbf{k}}+\sum_{s=j+1}^{k} \mathbf{r}_{\mathrm{s}}\right\rangle+b_{e_{k}} f(e0,ekr~k,j)=e0+s=1jrs,ek+s=j+1krs+bek

Recurrent Event Network: Autoregressive Structure Inference over

创新点

Temporal Knowledge Graphs
时间知识图(TKG)这类数据的推理相对还未被探索过
TKG推理主要有两种设置:内插和外推(interpolation and extrapolation)。
内插主要是用于预测已知时间范围内的新事件
外推是预测未来时间段的新事件

模型步骤

主要分为两块,第一个是对前一个时间戳的全局图表征,第二个是对同个时间戳的邻居做聚合

问题

  1. 为什么将节点出现次数占所有节点的占比可以当成真实值,再去与预测值计算loss
  2. p(G_t | G_t-1)中的G中的s,r,o都会改变,预测的时候不应该是要固定用户,即s?

Beta Embeddings for Multi-Hop Logical Reasoning in Knowledge Graphs

这篇论文做的是知识问答,主要用一阶逻辑回归,这种方法相对于其他更有可解释性,对于否定难以建模,因为很难进入封闭规则???

AMIE只挖掘关联规则,也就是说,它避免构建包含不相关原子的规则。如果规则中的每个变量至少出现两次,我们说规则是封闭的。

例如,下面公式中f,c是需要求出来的,所以m是变量,m在关联规则中出现了2次,因此规则是封闭的
在这里插入图片描述

构造规则输入:
首先ent_in是字典,存储{h:{r:t}},en_out也是字典,存储{t:{r:h}}
对queries做封闭规则(不太懂封闭规则是什么概念)

query_structures = [
                        [e, [r]],
                        [e, [r, r]],
                        [e, [r, r, r]],
                        [[e, [r]], [e, [r]]],
                        [[e, [r]], [e, [r]], [e, [r]]],
                        [[e, [r, r]], [e, [r]]],
                        [[[e, [r]], [e, [r]]], [r]],
                        # negation
                        [[e, [r]], [e, [r, n]]],
                        [[e, [r]], [e, [r]], [e, [r, n]]],
                        [[e, [r, r]], [e, [r, n]]],
                        [[e, [r, r, n]], [e, [r]]],
                        [[[e, [r]], [e, [r, n]]], [r]],
                        # union
                        [[e, [r]], [e, [r]], [u]],
                        [[[e, [r]], [e, [r]], [u]], [r]]
                       ]
query_names = ['1p', '2p', '3p', '2i', '3i', 'pi', 'ip', '2in', '3in', 'pin', 'pni', 'inp', '2u', 'up']
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

首先从ent_in随机取一个keys(),即answer,再按照上述的query_structures格式随机取r,最后的根据answer和r随机取到e,把取到的e,r按照格式存储,每个格式取14890次
1、如果是[e, [r, r]],首先取第一个r,从知识图谱得到(e,r)的下一个e‘,再取第二个r,(e’,r)得到下一个实体,即answer,多跳
2、如果是[[e,[r]],[e,[r]]],就是随机取一个answer,随机两个r组成,后面生成的答案就是两个的交集

构造完queries,就要生成answer,因为上述构造的e是最后生成,答案从e开始,按照格式生成最后的答案e
train_queries:

在这里插入图片描述
train_answers:
在这里插入图片描述
query_name_dict

在这里插入图片描述
train_path_queries:1p,2p,3p代表一条路径
其他存储在train_other_queries
即把train_queries分成两部分存储
再转换queries转换格式:queries is a list of (query, query_structure) pairs,后续为了方便训练
(6288, (8,)) -》 [6288,8]
positive_sample:queries的id格式对应到answer的内容,可能会对应多个实体,随机选一个存储即可
negative_sample:在实体编号随机取256个
negative_sample = np.random.randint(self.nentity, size=self.negative_sample_size*2)

test阶段:
所有实体是候选答案

按照逻辑规则对实体进行beta-embedding

第一步:构造逻辑规则query_structures,按照不同逻辑规则构造完queries和对应的answer
第二步:训练过程
loss是正例和负例之间的距离
与或非有不同对应的计算
与: [e, [r, r, r]]的计算方式是e的embeding和r的embedding做concat,再过多个网络层,得到embeding,将embedding与下一个r做相同操作
或:[[e, [r]], [e, [r]]],每对里面分别concat,对两队之间做attention
非:[[e, [r]], [e, [r, n]]],对 [e, [r, n]]最后的n是将e和r结合的embedding做倒数
上面三个操作最后都会得到alpha_embedding和beta_embedding
将两个embedding输入torch.distributions.beta.Beta分布,得到答案的embedding,再与真实的答案做KL散度

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/374468
推荐阅读
相关标签
  

闽ICP备14008679号