知识图谱——TransE模型原理

1 TransE模型介绍

1.1 TransE模型引入

在我们之前的文章中,提到了知识图谱补全任务的前提任务是知识表示学习,在知识表示学习中,最为经典的模型就是TransE模型,TransE模型的核心作用就是将知识图谱中的三元组翻译成embedding向量。

1.2 TransE模型思想

为了后面便于表示,我们先设定一些符号

  1. h 表示知识图谱中的头实体的向量。
  2. t 表示知识图谱中的尾实体的向量。
  3. r 表示知识图谱中的关系的向量。

在TransE模型中,有这样一个假设
t=h+rt=h+rt=h+r
也就是说,正常情况下的尾实体向量=头实体向量+关系向量。用图的方式描述如下:

如果一个三元组不满足上述的的关系,我们就可以认为这是一个错误的三元组。

1.3 TransE模型的目标函数

首先,我们先来介绍两个数学概念:

L1范数

也称为曼哈顿距离,对于一个向量X而言,其L1范数的计算公式为:
∣∣X∣∣L1=∑i=1n∣xi∣||X||_{L1}=∑_{i=1}^n|x_i|XL1=i=1nxi
其中,xix_ixi表示向量X的第i个属性值,这里我们取的是绝对值。并且,使用L1范数可以衡量两个向量之间的差异性,也就是两个向量的距离。
DistanceL1(X1,X2)=∑i=1n∣X1i−X2i∣Distance_{L1}(X_1,X_2)=∑_{i=1}^n|X_{1i}-X_{2i}|DistanceL1(X1,X2)=i=1nX1iX2i

L2范数

也称为欧式距离,对于一个向量X而言,其L2范数的计算公式为:
∣∣X∣∣L2=∑i=1nXi2||X||_{L2}=\sqrt{∑_{i=1}^nX_i^2}XL2=i=1nXi2


同样,L2范数也可以用来衡量两个向量之间的差距:
DistanceL2(X1,X2)=∑i=1n(X1i−X2i)2Distance_{L2}(X_1,X_2)=∑_{i=1}^n(X_{1i}-X_{2i})^2DistanceL2(X1,X2)=i=1n(X1iX2i)2

根据我们上面介绍的Trans中的假设,我们可以知道,对于一个三元组而言,头实体向量和关系向量之和与尾实体向量越接近,那么说明该三元组越接近一个正确的三元组,差距越大,那么说明这个三元组越不正常。那么我们可以选择L1或者L2范数来衡量三个向量的差距。而我们的目标就是使得争取的三元组的距离越小越好,错误的三元组距离越大越好,也就是其相反数越小越好。数学化的表示就是:
min∑(h,r,t)∈G∑(h′,r′,t′)∈G′[γ+distance(h+r,t)−distance(h′+r′,t′)]+min∑_{(h,r,t)∈G}∑_{(h',r',t')∈G'}[γ+distance(h+r,t)-distance(h'+r',t')]_+min(h,r,t)G(h,r,t)G[γ+distance(h+r,t)distance(h+r,t)]+

其中:

(h,r,t)(h,r,t)(h,r,t):表示正确的三元组
(h′,r′,t′)(h',r',t')(h,r,t): 表示错误的三三元组
γγγ :表示正样本和负样本之间的间距,一个常数
[x]+[x]_+[x]+:表示max(0,x)

我们来简单的解释以下目标函数,我们的目标是让正例的距离最小,也就是min(distance(h+r,t))min(distance(h+r,t))min(distance(h+r,t)),让负例的相反数最小也就是(min(−distance(h′+r′,t′)))(min(-distance(h'+r',t')))(min(distance(h+r,t))),对于每一个正样本和负样本求和,再增加一个常数的间距,就是整体距离的最小值。也就是我们的目标函数。

1.4 目标函数的数学推导

这里,我们采用欧氏距离作为distance函数,则目标函数可以改写为:
min∑(h,r,t)∈G∑(h′,r′,t′)∈G′[γ+(h+r−t)2−(h′+r′−t′)2]+min∑_{(h,r,t)∈G}∑_{(h',r',t')∈G'}[γ+(h+r-t)^2-(h'+r'-t')^2]_+min(h,r,t)G(h,r,t)G[γ+(h+rt)2(h+rt)2]+
则对于损失函数loss就有:
Loss=∑(h,r,t)∈G∑(h′,r′,t′)∈G′[γ+(h+r−t)2−(h′+r−t′)2]+Loss = ∑_{(h,r,t)∈G}∑_{(h',r',t')∈G'}[γ+(h+r-t)^2-(h'+r-t')^2]_+Loss=(h,r,t)G(h,r,t)G[γ+(h+rt)2(h+rt)2]+
在损失函数中,我们知道所有的参数包括{h,r,t,h′,r,t′h,r,t,h',r,t'h,r,t,h,r,t}。下面,我们来逐个进行梯度推导:

  1. 首先是对h的梯度,对于某一个hih_ihi而言
    ∂Loss∂hi=∑(h,r,t)∈G∑(h′,r,t′)∈G′∂[γ+(h+r−t)2−(h′+r−t′)2]+∂hi\frac{∂Loss}{∂h_i}= ∑_{(h_,r,t)∈G}∑_{(h',r,t')∈G'}\frac{∂[γ+(h+r-t)^2-(h'+r-t')^2]_+}{∂h_i}hiLoss=(h,r,t)G(h,r,t)Ghi[γ+(h+rt)2(h+rt)2]+
    在整个求和的过程中,只针对包含hih_ihi的项求导:
    ∂[γ+(hi+r−t)2−(h′+r−t′)2]+∂hi\frac{∂[γ+(h_i+r-t)^2-(h'+r-t')^2]_+}{∂h_i}hi[γ+(hi+rt)2(h+rt)2]+
    有:
    ∂[γ+(hi+r−t)2−(h′+r−t′)2]+∂hi={2(hi+r−t)γ+(h+r−t)2−(h′+r−t′)2>00γ+(h+r−t)2−(h′+r−t′)2<=0\frac{∂[γ+(h_i+r-t)^2-(h'+r-t')^2]_+}{∂h_i}= \begin{cases} 2(h_i+r-t)&&γ+(h+r-t)^2-(h'+r-t')^2>0\\ 0 &&γ+(h+r-t)^2-(h'+r-t')^2<=0 \end{cases}hi[γ+(hi+rt)2(h+rt)2]+={2(hi+rt)0γ+(h+rt)2(h+rt)2>0γ+(h+rt)2(h+rt)2<=0
    则原式变为:
    ∂Loss∂hi=∑(hi,r,t)∈G∑(h′,r,t′)∈G′{2(hi+r−t)γ+(hi+r−t)2−(h′+r−t′)2>00γ+(hi+r−t)2−(h′+r−t′)2<=0\frac{∂Loss}{∂h_i}= ∑_{(h_i,r,t)∈G}∑_{(h',r,t')∈G'} \begin{cases} 2(h_i+r-t)&&γ+(h_i+r-t)^2-(h'+r-t')^2>0\\ 0 &&γ+(h_i+r-t)^2-(h'+r-t')^2<=0 \end{cases} hiLoss=(hi,r,t)G(h,r,t)G{2(hi+rt)0γ+(hi+rt)2(h+rt)2>0γ+(hi+rt)2(h+rt)2<=0
    同理对于ti,hi′,ti′t_i,h_i',t_i'ti,hi,ti有:
    ∂Loss∂ti=∑(h,r,ti)∈G∑(h′,r,t′)∈G′{−2(h+r−ti)γ+(h+r−ti)2−(h′+r−t′)2>00γ+(h+r−ti)2−(h′+r−t′)2<=0\frac{∂Loss}{∂t_i}= ∑_{(h,r,t_i)∈G}∑_{(h',r,t')∈G'} \begin{cases} -2(h+r-t_i)&&γ+(h+r-t_i)^2-(h'+r-t')^2>0\\ 0 &&γ+(h+r-t_i)^2-(h'+r-t')^2<=0 \end{cases} tiLoss=(h,r,ti)G(h,r,t)G{2(h+rti)0γ+(h+rti)2(h+rt)2>0γ+(h+rti)2(h+rt)2<=0
    ∂Loss∂hi′=∑(h,r,t)∈G∑(hi′,r,t′)∈G′{−2(h′+r−t′)γ+(h+r−t)2−(hi′+r−t′)2>00γ+(h+r−t)2−(hi′+r−t′)2<=0\frac{∂Loss}{∂h_i'}= ∑_{(h,r,t)∈G}∑_{(h_i',r,t')∈G'} \begin{cases} -2(h'+r-t')&&γ+(h+r-t)^2-(h_i'+r-t')^2>0\\ 0 &&γ+(h+r-t)^2-(h_i'+r-t')^2<=0 \end{cases} hiLoss=(h,r,t)G(hi,r,t)G{2(h+rt)0γ+(h+rt)2(hi+rt)2>0γ+(h+rt)2(hi+rt)2<=0
    ∂Loss∂ti′=∑(h,r,t)∈G∑(h′,r,ti′)∈G′{2(h′+r−t′)γ+(h+r−t)2−(h′+r−ti′)2>00γ+(h+r−t)2−(h′+r−ti′)2<=0\frac{∂Loss}{∂t_i'}= ∑_{(h,r,t)∈G}∑_{(h',r,t_i')∈G'} \begin{cases} 2(h'+r-t')&&γ+(h+r-t)^2-(h'+r-t_i')^2>0\\ 0 &&γ+(h+r-t)^2-(h'+r-t_i')^2<=0 \end{cases} tiLoss=(h,r,t)G(h,r,ti)G{2(h+rt)0γ+(h+rt)2(h+rti)2>0γ+(h+rt)2(h+rti)2<=0
    最后对于rir_iri,γ有:
    ∂Loss∂ri=∑(h,ri,t)∈G∑(h′,ri,t′)∈G′{2(h+ri−t)−2(h′+ri−t′)γ+(h+ri−t)2−(h′+ri−t′)2>00γ+(h+ri−t)2−(h′+ri−t′)2<=0\frac{∂Loss}{∂r_i}=∑_{(h,r_i,t)∈G}∑_{(h',r_i,t')∈G'} \begin{cases} 2(h+r_i-t)-2(h'+r_i-t')&&γ+(h+r_i-t)^2-(h'+r_i-t')^2>0\\ 0 &&γ+(h+r_i-t)^2-(h'+r_i-t')^2<=0 \end{cases} riLoss=(h,ri,t)G(h,ri,t)G{2(h+rit)2(h+rit)0γ+(h+rit)2(h+rit)2>0γ+(h+rit)2(h+rit)2<=0
    ∂Loss∂γ=∑(h,r,t)∈G∑(h′,r′,t′)∈G′{1γ+(h+r−t)2−(h′+r−t′)2>00γ+(h+r−t)2−(h′+r−t′)2<=0\frac{∂Loss}{∂γ}= ∑_{(h,r,t)∈G}∑_{(h',r',t')∈G'} \begin{cases} 1&&γ+(h+r-t)^2-(h'+r-t')^2>0\\ 0 &&γ+(h+r-t)^2-(h'+r-t')^2<=0 \end{cases} γLoss=(h,r,t)G(h,r,t)G{10γ+(h+rt)2(h+rt)2>0γ+(h+rt)2(h+rt)2<=0

1.5 如何产生负样本

在我们之前算法描述中,我们提到了负样本的问题,对于一个知识图谱而言,其中保存的全部都是正样本时肯定的了。那么,我们应该如何获取负样本呢?

具体的可以通过随机替换头实体的方式来实现一个错误的三元组,或者采用随机替换一个错误的尾实体的方式来形成一个错误的三元组。

同时,为了避免,我们在替换形成的三元组也存在于知识图谱中,我们需要在替换之后进行过滤。

2 参考文章

  1. TransE如何进行向量更新?
  2. TransE算法详解

知识图谱——TransE模型原理相关推荐

  1. 知识图谱——TransH模型原理

    知识图谱--TransH模型原理 1 从TransE到TransH模型 在之前的文章知识图谱--TransE模型原理中,我们介绍了TransE模型的基本原理,对于TransE模型而言,其核心思想为: ...

  2. ACL-BioNLP 2020 | 耶鲁大学实践成果:生物医药知识图谱嵌入模型基准测试

    今天给大家介绍的是耶鲁大学医学信息学中心主任Brandt教授实验室和爱丁堡大学的博士生联合发表在ACL-BioNLP 2020发表的文章"Benchmark and Best Practic ...

  3. 知识图谱嵌入模型之TransE算法

    知识图谱嵌入 知识图谱是一个三元组组成的集合,将头尾实体通过关系连接成一个图,而知识图谱存在一个问题,就是离散的图结构是不能够进行语义计算的,为帮助计算机对知识进行计算,解决数据稀疏性,可以将知识图谱 ...

  4. AAAI 2022 | 知识图谱表示模型是如何外推的

    ©作者 | 李韧 单位 | 中科院信工所 研究方向 | 知识图谱 本文是对中科院信工所曹亚男老师组发表于 AAAI 2022 的知识图谱表示学习工作的中文介绍,相关论文.代码都已开源,欢迎大家交流讨论 ...

  5. BERT融合知识图谱之模型及代码浅析

    出品:贪心科技AI 作者:高阶NLP6期学员,吕工匠 最近小编在做一个文本分类的项目,相比一般的文本分类任务,其挑战之处在于: 1)特征很少:训练数据的文本很短,3~5个字符 2)类别很多:>3 ...

  6. 【知识图谱】本周文献阅读笔记(3)——周二 2023.1.10:英文)知识图谱补全研究综述 + 网络安全知识图谱研究综述 + 知识图谱嵌入模型中的损失函数 + 图神经网络应用于知识图谱推理的研究综述

    声明:仅学习使用~ 对于各文献,目前仅是泛读形式,摘出我认为重要的点,并非按照原目录进行简单罗列! 另:鉴于阅读paper数目稍多,对paper内提到的多数模型暂未细致思考分析.目的是总结整理关于KG ...

  7. 知识图谱-第三方工具:LibKGE(用于Knowledge Graph Embedding)【包含多种模型:TransE、DistMult、ComplEx、ConvE、Transformer等】

    用于Knowledge Graph Embedding的向量表示库有很多,比如: LibKGE GraphVite AmpliGraph OpenKE pykeen pykg2vec LibKGE的主 ...

  8. 知识图谱的嵌入:TransE

    下面对知识图谱的嵌入模型TransE进行原理讲解,文末提供完整全注释版代码. TransE模型原理 知识图谱首要任务是知识图谱的嵌入,知识图谱的嵌入中,最为经典的模型就是TransE模型,TransE ...

  9. 图谱实战 | 再谈图谱表示:图网络表示GE与知识图谱表示KGE的原理对比与实操效果分析...

    转载公众号 | 老刘说NLP 知识图谱嵌入是一个经典话题,在之前的文章<知识表示技术:图谱表示VS图网络表示及基于距离函数的表示学习总结>中,围绕知识图谱嵌入学习这一主题,对比了知识图谱嵌 ...

  10. 智慧城市知识图谱模型与本体构建方法

    智慧城市知识图谱模型与本体构建方法 臧根林1,2, 王亚强1,2, 吴庆蓉1,2, 占春丽1,2, 李熠3 1 拓尔思知识图谱研究院,广东 广州 510665 2 广州拓尔思大数据有限公司,广东 广州 ...

最新文章

  1. centos7 安装jdk7
  2. 面试中必知必会的那些题——单链表倒置
  3. 【三万字!】Dubbo、Zookeeper学习笔记!秒杀面试官!——双非上岸阿里巴巴系列
  4. 汇编怎么输入_一位过来人的嵌入式汇编语言学习经验
  5. 存储服务器的操作系统,存储服务器是什么操作系统
  6. springcloud微服务多节点高性能、高可用、高并发部署
  7. BugkuCTF-MISC题where is flag3
  8. python多线程threading之阻塞线程(join)线程同步和守护线程(setDaemon(True))实例详解
  9. springSecurity 登录以及用户账号密码解析原理
  10. 用HttpClient来模拟浏览器GET POST
  11. PHP表单入库处理,ThinkPHP收集表单数据入库操作(三种方式)
  12. dev万能头文件_CSP-J/S考试中是否可以使用万能头文件
  13. ColorZilla|网页颜色颜色提取
  14. wps excel连接MySQL数据库可刷新实时读取数据
  15. 前端面试题(css)
  16. 王心凌的「爱你」,我们用Python跳起来!
  17. macOS、Linux CentOS 、Docker安装部署canal-server(canal-deployer)服务
  18. C++中cout<<后面加endl什么意思?
  19. 端午节用Python教你画绿豆糕
  20. 俏江南“倒闭”真相:对员工好坏,直接决定了企业的生死!

热门文章

  1. 金山词霸-身边的实用工具
  2. eXeScope 注册机制破解
  3. 【侯捷】C++内存管理机制
  4. Java学习笔记 --- IDEA
  5. jquery 李南江老师jquery和ajax视频教程
  6. 德尔福和Mobileye强强联手,将展示双方共同开发的CSLP系统
  7. 西门子PLC S7-200 SMART简介
  8. 最新 android 机型,安卓11支持哪些机型,Android11适配机型一览
  9. 省级面板数据(1990-2019):能源消费(煤炭、焦炭、石油、原油等)excel或stata版本
  10. java爬虫视频教程_JAVA开发教程:java视频教程java爬虫实战项目 百度网盘