CAKE: A Scalable Commonsense-Aware Framework For Multi-View Knowledge Graph Completion
CSDN上传图片比较麻烦, 若想获得完整阅读体验请移步原文原文链接
Field: CS, NLP
Status: Just started
参考资料
CAKE: A Scalable Commonsense-Aware Framework For Multi-View…
https://github.com/ngl567/cake
https://1drv.ms/b/s!Agt9MGedHZtOk3DEK7RFDNMdaHFY?e=K9zqDP
知识图谱顶会论文(ACL-2022) CAKE:用于多视图KGC的可扩展常识感知框架_cake:scalable commonsense-aware framework for mult-CSDN博客
I. Background
Local cloased-world assumption LCWA 局部世界封闭假设
II. Motivation
首先是作者的目的
补全知识图谱
因为knowledge graph还不够完善, 还需要complete
这个complete就是一个KGC模型, 也就是knowledge graph complete model
那目前KGC还有什么缺点呢?
-
invalid nagative sampling和low quality negative sampling
-
uncertainty of fact-view link prediction
目前的工作中link prediction仅依靠于fact-view
什么是fact-view?
fact-view和commonsense-view是一个相对的概念
fact-view就是基于事实的视角, 也就是三元组中的head和tail都是一个具体的事件, 而不是一个概念
而commonsense-view就基于常识的视角, 三元组中的head和tail都是一个concept而不是fact
这就导致了一个问题
完全依赖于fact-view会有一种不确定性, 预测出来的结果可能是不符合常理的
III. Improvement
-
作者为了解决Invalid negative sampling问题提出了ACG + CANS模块
其中ACG模块能够将triple中的fact entity转化为concept
然后CANS就可以利用ACG模块产生的concept进行commonsense aware的negative sampling
-
作者为了解决uncertainty of fact-view link prediction的问题, 提出了MVLK模块
在MVLK模块中, 作者会利用常识来约束link prediction, 避免完全基于fact-view的问题
换言之, 就是在fact-view的基础上引入了commonsense-view
IV. Method
Commonsense Knowledge
作者在本文中设置了两种类型的commonsense knowledge
-
individual form C 1 C_1 C1
C 1 = { ( c h , r , c t ) } C_1 = \{(c_h, r, c_t)\} C1={(ch,r,ct)}
其中, c h c_h ch表示一个单独的head, c t c_t ct表示一个单独的tail
对应的 c h c_h ch和 c t c_t ct由 r r r连接
-
set form C 2 C_2 C2
C 2 = { ( C h , r , C t ) } C_2 = \{(C_h , r, C_t)\} C2={(Ch,r,Ct)}
其中, C h C_h Ch表示一个head的集合, C t C_t Ct表示一个tail的集合
集合 C h C_h Ch和集合 C t C_t Ct由 r r r连接, 也就是说 C t C_t Ct和 C h C_h Ch其中的任意一个元素都可以通过 r r r来连接
KGE Score Function
E ( h , r , t ) E(h, r,t) E(h,r,t)
什么是KGE score Function, 这个Funtion是用来做什么的?
这个function是用来打分的, 给定一个三元组 ( h , r , t ) (h,r,t) (h,r,t), 将这个三元组送入 E ( h , r , t ) E(h,r,t) E(h,r,t)中会得到一个置信度
这个三元组里面的 h , r , t h,r,t h,r,t都是embedding
TransE
E ( h , r , t ) = = ∣ ∣ h + r − t ∣ ∣ E(h, r, t) == ||h + r - t|| E(h,r,t)==∣∣h+r−t∣∣
TransE很容易理解, h , r , t h,r,t h,r,t都是想向量, 并且理想情况下 h + r = t h+r=t h+r=t, 因此我们计算 h + r − t h+r-t h+r−t的L2范数即 ∣ ∣ h + r − t ∣ ∣ ||h+r-t|| ∣∣h+r−t∣∣
RotatE
E ( h , r , t ) = ∣ ∣ h ∘ r − t ∣ ∣ E(h, r,t)=||h \circ r - t|| E(h,r,t)=∣∣h∘r−t∣∣
在上式中, ∘ \circ ∘表示hardmard product, 也就是两个向量按元素相乘, 也就是向量的点积dot-product
DistMult
E ( h , r , t ) = h T d i a g ( M r ) t E(h,r,t)=h^Tdiag(M_r)t E(h,r,t)=hTdiag(Mr)t
对于上面的所有 E ( h , r , t ) E(h,r,t) E(h,r,t)来说, 值越小, 就表示三元组 ( h , r , t ) (h,r,t) (h,r,t)的置信度越高.
- 为什么RotatE和DistMult能够实现置信度打分? 我不是很理解
Automatic Commonsense Generation ACG
作者在本文开发了一个entity-to-concept converter
这个converter能够将fact级别的knowledge转化为concept级别的knowledge
并且对于一个三元组而言, 仅转化其head和tail, 不转化relation
因为作者认为: concept级别的head和tail如果能够通过relation相连接, 那么fact级别的head和tail肯定可以通过relation相连接
通过ACG模块, 给定一个fact级别的三元组, 就能够生成一个concept级别的三元组, 也就是一个commonsense
举一个例子:
给定一个三元组 (Bob, Nationality, U.S.), ACG能够将Bob转化为对应的本体概念Person, 同理U.S.能够被转化为其本体概念Country
那么, 给定的三元组 (Bob, Nationality, U.S.) 就被ACG转化为了 (Person, Nationality, Country)
通过这种方式, 我们给定大量的fact级别的三元组, 经过ACG就能一系列的Commonsense knowledge
那么每一个Commonsense knoeledge我们都能够将其称之为 C 1 C_1 C1
将这些C_1进行归纳, 所有relation相同的C_1归纳到一起就能够得到 C 2 C_2 C2
比如说:
对于这张图, 我们给定下面所有的fact knowledge, 能够生成很多的concept knowledge
(State, LocatedIn, Country)
(Company, LocatedIn, State)
(City, LocatedIn, State)
…
那么, 上述的这些commonsense都是 C 1 C_1 C1, 将这些 C 1 C_1 C1集合起来就是 C 2 C_2 C2
Commonsense-Aware Negative Sampling CANS
作者认为, 在采样的时候引入Commonsense knowledge能够有效的帮助模型采样出Actually negative triples, 因此, 作者实现了Commonsense-Aware Negative Sampling
首先介绍一些知识图谱中不同的relation
知识图谱中有很多不同的relation, 可以归结到几个大类: 1-N, N-N, N-1, 1-1
这上面的这几个大类是什么意思呢? 举一个例子
因为我们之前已经把所有的fact都转化为了Concept, 那么我们就可以获得很多的triple, 这些triple在本文中就记为 C 1 C_1 C1, 然后这些 C 1 C_1 C1经过wipe out和summarize将其构建为多个 C 2 C_2 C2
比如说, 我们现在有一个 C 2 C_2 C2
那么, 对于这个C_2所表示的relation就是一个N-1的relation
对于不同的关系, 就能够引申出不同的采样方式
-
uniqueness sampling
uniqueness表示特殊的, 也就是N-1关系中的1
对于这种concept, 作者认为可以将其直接corrupted
就比如上面那个例子中的stateprovince, 我们直接将其corrupted成为一个和原来不同的entity, 那么无论如何其都是一个actually negative triple
-
none-uniqueness sampling
和上面的相反, none-uniqueness sampling表示非特殊的, 也就是一般的, 也就是N-1关系里面的N
对于这种concept, 作者认为不能随便对其corrupted
我们一个属于N的concept corrupted后, 输出一个entity
这个entity肯定属于一个triple, 那么这个triple会有模型给其打分, 这个分数表示了其置信度的高低.
作者在这里认为, 模型打的分越高 (表示置信度越高), 那么就越有可能是一个false negative triple
那么, 作者是如何实现CANS的, 分为两步
- 首先从 C 2 C_2 C2中获取candidate concept
- 将这些candidate concept进行currupted, 对这些currupted的结果赋予权重
-
对于none-uniqueness sampling的currupted采用如下公式赋予权重
上式表示一个N-1的relation, head是N, tail是1
h i ′ h_i^\prime hi′表示currupted后的第i个head
r表示realtion
t表示tail
α \alpha α表示一个temperature
E ( h i ′ , r , t ) E(h_i^\prime, r, t) E(hi′,r,t)表示模型给这个三元组打的分, 也就是置信度
e x p α E ( h j ′ , r , t ) ∑ i e x p α E ( h i ′ , r , t ) \frac{\mathrm{exp}\alpha E(h_j^\prime, r, t)}{\sum_i{\mathrm{exp}\alpha E(h_i^\prime, r, t)}} ∑iexpαE(hi′,r,t)expαE(hj′,r,t)
这个公式本质上就是一个softmax, 对所有currupted的结果做一个归一化, 得出每一个结果的概率
P ( ( h j ′ , r , t ) ∣ { h i , r i , t i } ) = e x p α E ( h j ′ , r , t ) ∑ i e x p α E ( h i ′ , r , t ) P((h_j^\prime, r, t) | \{h_i, r_i, t_i\}) =\frac{\mathrm{exp}\alpha E(h_j^\prime, r, t)}{\sum_i{\mathrm{exp}\alpha E(h_i^\prime, r, t)}} P((hj′,r,t)∣{hi,ri,ti})=∑iexpαE(hi′,r,t)expαE(hj′,r,t)
这个公式里面的 P ( ( h j ′ , r , t ) ∣ { h i , r i , t i } ) P((h_j^\prime, r, t) | \{h_i, r_i, t_i\}) P((hj′,r,t)∣{hi,ri,ti})代表了一个条件分布, 也就是给定所有的currupted输出, 得出特定的currupted输出的结果, 可以认为这个 P ( ( h j ′ , r , t ) ∣ { h i , r i , t i } ) P((h_j^\prime, r, t) | \{h_i, r_i, t_i\}) P((hj′,r,t)∣{hi,ri,ti})就代表了三元组 ( h j ′ , r , t ) (h_j^\prime, r, t) (hj′,r,t)为positive的概率
ω ( h j ′ , r , t ) = 1 − P ( ( h j ′ , r , t ) ∣ { h i , r i , t i } ) \omega(h_j^\prime, r, t) = 1 -P((h_j^\prime, r, t) | \{h_i, r_i, t_i\}) ω(hj′,r,t)=1−P((hj′,r,t)∣{hi,ri,ti})
这个 ω ( h j ′ , r , t ) \omega(h_j^\prime, r, t) ω(hj′,r,t)表示一个三元组是Negative三元组的概率, 本文中将其称之为一个权重, weight
为什么权重需要这样表示呢?
很简单, 按照上面讲的, P ( ( h j ′ , r , t ) ∣ { h i , r i , t i } ) P((h_j^\prime, r, t) | \{h_i, r_i, t_i\}) P((hj′,r,t)∣{hi,ri,ti})表示一个三元组为positive的概率, 那么其为positive的概率越小, 其为negative的概率就越大.我们就将其权重置的更大
-
对于uniqueness sampling的currupted采用如下公式赋予权重
-
以下面这个例子来具体来看
我们可以很明显的看到, 对于N类concept的currupted和1类的currupted的weight是不同的, 对于N类concept的currupted, weight是和propability是完全相反的, 对于1类concept的currupted, weight和probability顺序相同的
Traning the KGE model
如何训练KGEmodel? 损失函数是什么?
上图中
γ \gamma γ是一个边界, margin
E E E表示一个三元组送给模型, 模型给其打的分. 可以理解为模型输出的置信度
( h , r , t ) (h,r,t) (h,r,t)表示一个positive triple
上图中
( h i ′ , r , t ) (h_i^\prime, r, t) (hi′,r,t)是一个negative triple
其中 ω ( h i ′ , r , t ) \omega(h_i^\prime, r,t) ω(hi′,r,t)表示CANS模块为这个triple赋予的权重
综上所属, 整个loss函数的脉络就很清楚了, 第一个部分 − l o g σ ( γ − E ( h , r , t ) ) -log\sigma(\gamma - E(h,r,t)) −logσ(γ−E(h,r,t))的目的是为了使positive triple的输出得分远小于 γ \gamma γ. 第二个部分 − ω ( h i ′ , r , t ) l o g σ ( E ( h i ′ , r , t ) − γ ) -\omega(h_i^\prime, r,t)log\sigma(E(h_i^\prime, r, t) - \gamma) −ω(hi′,r,t)logσ(E(hi′,r,t)−γ)是为了让negative triple的输出得分远大于 γ \gamma γ
简单一点理解, 就是聚类, 将positive triple得分和negative triple的score分开, 分的越远越好
Multi-View Link Prediction MVLK
Multi-View Link Prediction就是inference阶段的行为
即: 如何利用常识知识来帮助模型进行节点预测
以 ( h , r , ? ) (h,r,?) (h,r,?)为例, MVLK分为了两个阶段
-
粗粒度阶段
粗粒度阶段会从借助常识, 来filter一些entity, 攻击后面细粒度阶段使用
C 1 t = { c t i ∣ ( c h i , r , c t i ) ∈ C 1 } \mathrm{C}_{1t} = \{c_{ti}|(c_{hi}, r, c_{ti}) \in C_1\} C1t={cti∣(chi,r,cti)∈C1}
C 1 t \mathrm{C_{1t}} C1t表示的就是我们根据一个常识 C 1 C_1 C1过滤出来的tail entity
( c h i , r , c t i ) ∈ C 1 (c_{hi}, r, c_{ti}) \in C_1 (chi,r,cti)∈C1
这里表示我们先给定一个commonsense C 1 C_1 C1, 然后根据这个 C 1 C_1 C1找到一系列的triple
这些triple即 ( c h i , r , c t i ) (c_{hi}, r, c_{ti}) (chi,r,cti), 表示一个集合形式的commonsense knowledge.
其中 c h i c_{hi} chi和 c t i c_{ti} cti都是concept, c h i c_{hi} chi表示head的第i个concept, c t i c_{ti} cti表示tail的第i个concept
C 1 t = { c t i ∣ ( c h i , r , c t i ) ∈ C 1 } \mathrm{C}_{1t} = \{c_{ti}|(c_{hi}, r, c_{ti}) \in C_1\} C1t={cti∣(chi,r,cti)∈C1}
后面, 我们根据找到的一系列的triple, 获取这些triple的 c t i c_{ti} cti
然后, 再根据这些 c t i c_{ti} cti获取一些列的entity, 这些entities就构成了集合 C 1 t \mathrm{C}_{1t} C1t
举例来说
我们给定一个Query: (David, Nationality, ?)
然后可以从常识图谱中获取一个常识 C 1 C_1 C1 (Person, Nationality, Country)
后面我们根据这个 C 1 C_1 C1就可以过滤得到一些列的entity C 1 t \mathrm{C}_{1t} C1t
-
细粒度阶段
在细粒度阶段会对 C 1 t \mathrm{C}_{1t} C1t中的每个元素 e i e_i ei拼接到原始的Query中进行打分, 选取分数最高的作为我们的输出
s c o r e ( e i ) = E ( h , r , e i ) score(e_i) = E(h,r,e_i) score(ei)=E(h,r,ei)
如图所示
将我们之前在粗粒度阶段获取得到的 C 1 t \mathrm{C}_{1t} C1t拼接到Query中进行打分, 选取分数最高的作为inference阶段的输出
V. Experiment
一些实验的配置
作者使用的实验数据集:
作者使用的Baselines
-
TransE
Translating embeddings for modeling multirelational data
-
RotatE
RotatE: Knowledge graph embedding by relational rotation in complex space
-
HAKE
Learning hierarchy-aware knowledge graph embeddings for link prediction.
作者的超参数设置
优化器使用的是Adam优化器
negative sample size is 2
learning rate is chosen from 1e-4 to 1e-2
margin is tuned in {9, 12, 18, 24, 30}
sampling temperature is adjusted in {0.5, 1.0}
作者使用的评价指标
-
mean reciprocal rank (MRR)
-
mean rank (MR)
-
proportion of the correct entites ranked in the top n (Hits@N)
作者在不同模型上应用不同的框架做横向对比
这里可以看到, 作者在不同的模型上应用了多个框架 CANS
, MVLP
, CAKE
, CKAE
的结果在绝大多数实验条件下都很好
作者使用不同的NS技术, 做横向对比
上图中, Unifo, NoSamp, NSCach, Domain, SAdv, CANS都是不同的NS技术, 可以发现, 这些技术中CANS总是能取得sota成绩