transE (TranslatingEmbedding )详解+简单python 实现
表⽰学习旨在学习⼀系列低维稠密向量来表征语义信息,⽽知识表⽰学习是⾯向知识库中实体和关系的表⽰学习。当今⼤规模知识库(或称知识图谱)的构建为许多NLP任务提供了底层⽀持,但由于其规模庞⼤且不完备,如何⾼效存储和补全知识库成为了⼀项⾮常重要的任务,这就依托于知识表⽰学习。
transE算法就是⼀个⾮常经典的知识表⽰学习,⽤分布式表⽰(distributed representation)来描述知识库中的三元组。想象⼀下,这类表⽰法既避免了庞⼤的树结构构造,⼜能通过简单的数学计算获取语义信息,因此成为了当前表⽰学习的根基。
1 transE 算法原理
我们知道知识图谱中的事实是⽤三元组 表⽰的,那么如何⽤低维稠密向量来表⽰它们,才能得到这种依赖关系呢?transE算法的思想⾮常简单,它受word2vec平移不变性的启发,希望(此为归纳偏差?)。
伦勃朗三角立体分析光有这⼀个约束可不够。想让,如何设置损失函数是个关键。我们发现表⽰学习都没有明显的监督信号,也就是不会明确告诉模型你学到的表⽰正不正确,那么想要快速收敛就得引⼊“相对”概念,即相对负例来说,正例的打分要更⾼,⽅法学名“negative
sampling”。损失函数设计如下:
其中称为corrupted triplet,是随机替换头或尾实体得到(⾮同时,其实也可以替换relation)。为margin。细看发现这就是SVM的soft margin损失函数,所以可以说,transE针对给定三元组进⾏⼆分类任务,其中负例是通过替换⾃⾏构造的,⽬标是使得最相近的正负例样本距离最⼤化。
论⽂中给出了详细的算法流程:
其中距离度量⽅式有L1范数和L2范数两种。在测试时,以⼀个三元组为例,⽤语料中所有实体替换当前三元组的头实体计算距离,将结果按升序排序,⽤正确三元组的排名情况来评估学习效果(同理对尾实体这样做)。度量标准选择hits@10和mean rank,前者代表命中前10的次数/总查询次数,后者代表正确结果排名之和/总查询次数。
还有⼀点值得⼀提,⽂中给了两种测试结果raw和filter,其动机是我们在测试时通过替换得到的三元组并不⼀定就是负例,可能恰巧替换对了(⽐如(奥巴马,总统,美国)被替换成了(特朗普,总统,美国)),那么它排名⾼也是正确的,把当前三元组挤下去也正常。(存疑:这样的话训练时是否也应当过滤corrupted triplet呢) 所以测试时在替换后要检查⼀下新三元组是否出现在训练集中,是的话就删掉,这就是filter训练⽅法(不检查的是raw)。
2 transE 算法的简单python 实现
(h ,l ,t )h +l ≈t h +l ≈t (h ,l ,t )′′γd (h +′l ,t )
为了更好地理解(其实是因为看不懂别⼈的),⽤python简单实现了transE算法,使⽤数据集FB15k。这⾥记录⼀些细节和⼏个⼩坑。完整代码见。
python基础知识测试1. 训练transE
Tbatch更新:在update_embeddings函数中有⼀个deepcopy操作,⽬的就是为了批量更新。这是ML中mini-batch SGD的⼀个通⽤的训练知识,在实际编码时很容易忽略。
两次更新:update_embeddings函数中,要对correct triplet和corrupted triplet都进⾏更新。虽然写作和,但两个三元组只有⼀个entity不同(前⾯说了,不同时替换头尾实体),所以在每步更新时重叠的实体要更新两次(和更新relation⼀样),否则就会导致后⼀次更新覆盖前⼀次。关于L1范数的求导⽅法:先对L2范数求导,逐元素判断正负,为正赋值为1,负则为-1。
超参选择:对FB15k数据集,epoch选了1000(其实不需要这么⼤,后⾯就没什么提⾼了),nbatches选了400(训练最
快),embedding_dim=50, learning_rate=0.01, margin=1。
mysql的安装与配置实验报告2. 测试
isFit参数:区分raw和filter。filter会⾮常慢。
3 transE 算法的局限性
transE效果很好且⾮常简单,后续⼤量的⼯作都是在此基础上的改进(简称trans⼤礼包),传统⽅法哈夫曼树编码用到什么算法
已经基本不⽤了(有些思想还是值得借鉴的,⽐如矩阵分解、双线性模型)。改进⼤体针对以下⼏个问题:
联轴器可分为三大类复杂关系建模效果差。对1-N,N-1,N-N关系,会出现冲突映射,⼀个实体在不同三元组内的表⽰融合,导致不明确甚⾄错误的语义信息。多源信息融合。 如何充分利⽤知识库中的额外信息(如实体类型、实体描述)。
关系路径建模。 对relation之间的依赖进⾏建模。
理解或实现有错误欢迎指出!
紫颜大全参考⽂献:
[1] Bordes A, Usunier N, Garcia-Duran A, et al. Translating embeddings for modeling multi-relational data[C]//Advances in neural information processing systems. 2013: 2787-2795.
[2] 刘知远, 孙茂松, 林衍凯, et al. 知识表⽰学习研究进展[J]. 计算机研究与发展, 2016, 53(2):247-261.(h ,l ,t )(h ,l ,t )′′
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论