赞
踩
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=1∑N(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=1∑N(f(Gi)yi−f(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
=
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=1∑N(1−∣Mi∣∣mi∣)
其中
∣
m
i
∣
|m_i|
∣mi∣表示
m
i
m_i
mi中识别的重要输入要素(结点/边/结点要素)的数量,而
∣
M
i
∣
|M_i|
∣Mi∣表示
G
i
G_i
Gi中的要素总数。请注意,较高的值表示解释更加稀疏,并且倾向于仅捕获最重要的输入信息。
这里怎么识别最重要的特征个数,个人理解应该是选取一个阙值
好的解释要稳定。直觉上,当对输入进行小的改变而不影响预测时,解释应该保持相似。最近提出的稳定性度量标准衡量一种解释方法是否稳定[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)=i∑nm(G+ noise i),m= GradInput
接近度定义为CF示例和原始输入之间的特征距离的平均值。对于一组示例,邻近度就是所有示例的平均邻近度。
C:反事实实例
K:是反事实实例的个数
X:特征
对于分类特征
如果CF()示例中任何分类特征的值与原始输入不同,则距离为1,否则为零
(姚明, 出生于, 上海) ∧ (上海, 位于, 中国) ⇒ (姚明, 国籍, 中国)
基于随机游走的方法首先确定目标关系,判断两个实体之间是否存在该关系,如果存在,将其加入到正例集合,由于知识图谱中只有正例没有负例,通过对头尾实体进行随机替换构造负例集合。将两个实体之间的一条路径作为一个特征,任意枚举两个实体之间的长度不超过特定阈值的所有可能路径,将这些可能路径放入特征集合,根据随机游走的思想计算路径的特征值,进而构成每个样本的特征向量;通过利用这些正负例样本的特征向量训练 logistic 回归分类器。
缺点:枚举对于大规模知识图谱的不适应,而且如果是实体预测,构造一个负例如果他刚好是测试集的正例呢
这里主要是将三元组向量化
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
Xk≈ARkAT, 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距离最小
假设实体对(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+r≈tr
在ConvE模型中,实体和关系嵌入首先被整形和连接(步骤1,2);然后将得到的矩阵用作卷积层的输入(步骤3);得到的特征图张量被矢量化并投影到k维空间中(步骤4),并与所有候选对象嵌入相匹配(步骤5)
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,ek∣r~k,j)=⟨e0+s=1∑jrs,ek+s=j+1∑krs⟩+bek
Temporal Knowledge Graphs
时间知识图(TKG)这类数据的推理相对还未被探索过
TKG推理主要有两种设置:内插和外推(interpolation and extrapolation)。
内插主要是用于预测已知时间范围内的新事件
外推是预测未来时间段的新事件
主要分为两块,第一个是对前一个时间戳的全局图表征,第二个是对同个时间戳的邻居做聚合
这篇论文做的是知识问答,主要用一阶逻辑回归,这种方法相对于其他更有可解释性,对于否定难以建模,因为很难进入封闭规则???
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']
首先从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散度
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。