学习笔记(2)——TransE算法(Translating Embedding)

前言

TransE算法是知识图谱补全的经典方法。

目前网络上存在大量知识库(KBs):如OpenCyc、WordNet、Freebase、Dbpedia等等,它们因不同目的建成,因此很难用到其他系统上。为发挥知识库的图(graph)性,也为得到统计学习(包括机器学习和深度学习)的优势,需要将知识库嵌入(embedding)到一个低维空间里(比如10、20、50维)。获得向量后,就可以运用各种数学工具进行分析。

表示学习 :学习一系列低维稠密向量来表征语义信息,知识表示学习是面向知识库中实体和关系的表示学习。大规模知识库(知识图谱)的构建为许多NLP任务提供了底层支持,但由于其规模庞大且不完备,如何高效存储和补全知识库成为了一项非常重要的任务,这就依托于知识表示学习。

TransE算法 是一个非常经典的知识表示学习,它的提出,是为了解决多关系数据(multi-relational data) 的处理问题。它用分布式表示(distributed representation) 来描述知识库中的三元组。这类表示法既避免了庞大的树结构构造,又能通过简单的数学计算获取语义信息,因此成为了当前表示学习的根基。

知识图谱 的集合,链接起来成为一个图(graph),每个节点是一个一个实体,每条边是一个关系,或者说是一个事实(fact)。也就是有向图,主体指向客体。

原理

TransE的直观含义:即TransE基于实体和关系的分布式向量表示,将每个三元组实例(head,relation,tail) 中的关系relation看做从实体head到实体tail的翻译,通过不断调整h、r和t(head、relation和tail的向量),使(h + r) 尽可能与 t 相等,即 h + r = t

光有这一个约束不够,还需设置一个损失函数。表示学习没有明显的监督信号,也就是不会明确告诉模型学到的表示对不对。想要快速收敛,引入“相对”概念,即相对负例来说,正例的打分要更高,方法学名“negative sampling”。损失函数 设计如下:

L = ∑ ( h , ℓ , t ) ∈ S ∑ ( h ′ , ℓ , t ′ ) ∈ S ( h , ℓ , t ) ′ [ γ + d ( h + ℓ , t ) − d ( h ′ + ℓ , t ′ ) ] + \mathcal{L}=\sum_{(h, \ell, t) \in S} \sum_{\left(h^{\prime}, \ell, t^{\prime}\right) \in S_{(h, \ell, t)}^{\prime}}\left[\gamma+d(\boldsymbol{h}+\ell, \boldsymbol{t})-d\left(\boldsymbol{h}^{\prime}+\boldsymbol{\ell}, \boldsymbol{t}^{\prime}\right)\right]_{+} L=(h,,t)S(h,,t)S(h,,t)[γ+d(h+,t)d(h+,t)]+

其中(h′,l,t′)称为corrupted triplet ,是随机替换头或尾实体得到(非同时,其实也可以替换relation)。γ为margin。此公式就是SVM的soft margin损失函数,所以transE针对给定三元组进行二分类任务,其中负例是通过替换自行构造的,目标是使得最相近的正负例样本距离最大化,尽可能将对的和错的分开。margin值一般设为1。

详细算法流程

在这里插入图片描述

  1. 其中距离度量方式有L1范数L2范数 两种。在测试时,以一个三元组为例,用语料中所有实体替换当前三元组的头实体计算距离d(h′+l,t),将结果按升序排序,用正确三元组的排名情况来评估学习效果(同理对尾实体这样做)。度量标准选择:
  • hits@10:命中前10的次数/总查询次数
  • mean rank:正确结果排名之和/总查询次数
  1. 两种测试结果:rawfilter ,其动机是我们在测试时通过替换得到的三元组并不一定就是负例,可能恰巧换对了,那么它排名高也是正确的,把当前三元组挤下去也正常。 所以测试时在替换后要检查一下新三元组是否出现在训练集中,是的话就删掉,这就是filter训练方法(不检查的是raw)。
  2. 关于模型的参数:参数θ是所有实体的向量。设一共有 |E| 个实体和 |R| 个关系,每个实体/关系的向量长度为d维,因此,一共有( |E| + |R| ) * d 个参数。
  3. 关于参数的更新:使用的是随机梯度下降(Stochastic Gradient Descent,SGD) 训练方法。SGD不用对所有的和求梯度,而是对一个batch求梯度之后就立即更新theta值。
  4. SGD的收敛没有GD好,但这反而是优点,因为在机器学习领域,过于best的结果反而不好,会产生过拟合(overfitting)。也就是,尽管叫做D(下降),但整个过程难保一直D下去。
  5. 归一化公式 的分母是向量的平方和再开方;而对于距离公式 是向量的平方和(没有开方)。若公式书写错误,会引起收敛失败。
  6. 关于L1范数的求导方法:先对L2范数求导,逐元素判断正负,为正赋值为1,负则为-1。
  7. 超参选择:对FB15k数据集,epoch选了1000(其实不需这么大,后面就没什么提高了),nbatches选了400(训练最快),embedding_dim=50, learning_rate=0.01, margin=1。

参考文献:
https://blog.csdn.net/shunaoxi2313/article/details/89766467
https://blog.csdn.net/u012102306/article/details/80047103

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值