• 前言
  • 原理
  • 详细算法流程

前言

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

学习笔记(2)——TransE算法(Translating Embedding)相关推荐

  1. 台大李宏毅Machine Learning 2017Fall学习笔记 (16)Unsupervised Learning:Neighbor Embedding

    台大李宏毅Machine Learning 2017Fall学习笔记 (16)Unsupervised Learning:Neighbor Embedding

  2. R语言与机器学习学习笔记(分类算法)

    转载自:http://www.itongji.cn/article/0P534092014.html 人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型.神经 ...

  3. 《基于张量网络的机器学习入门》学习笔记8(Shor算法)

    <基于张量网络的机器学习入门>学习笔记8 Shor算法 来源 Shor算法的大致流程 因数分解 周期求取与量子傅里叶变换(QFT) Shor算法 来源 1994 1994 1994年,应用 ...

  4. 【学习笔记】【算法】【智能优化】粒子群优化(PSO)

    [学习笔记][算法][智能优化]粒子群优化(PSO) 文章目录 [学习笔记][算法][智能优化]粒子群优化(PSO) 1 算法背景 1.1 背景 1.2 基础知识 2 算法原理 2.1 基本原理 2. ...

  5. 【学习笔记】网络流算法简单入门

    [学习笔记]网络流算法简单入门 [大前言] 网络流是一种神奇的问题,在不同的题中你会发现各种各样的神仙操作. 而且从理论上讲,网络流可以处理所有二分图问题. 二分图和网络流的难度都在于问题建模,一般不 ...

  6. 点云学习笔记11——VoxelNet算法+代码运行

    点云学习笔记11--VoxelNet算法+代码运行 一.算法分析 摘要 介绍 相关工作 1.2. 贡献 2.VoxelNet 2.1.特征学习网络 2.1.1 特征学习网络 二.代码复现 2.1.环境 ...

  7. 学习笔记------人工蜂群算法

    学习笔记------人工蜂群算法 为了解决多变量函数优化问题Karaboga在2005年提出了人工蜂群算法ABC模型. 1. 蜜蜂采蜜机理 蜜蜂是一种群居昆虫,虽然单个昆虫的行为极其简单,但是由单个简 ...

  8. GMM高斯混合模型学习笔记(EM算法求解)

    提出混合模型主要是为了能更好地近似一些较复杂的样本分布,通过不断添加component个数,能够随意地逼近不论什么连续的概率分布.所以我们觉得不论什么样本分布都能够用混合模型来建模.由于高斯函数具有一 ...

  9. 强化学习笔记:Sarsa算法

    1 Sarsa(0) Sarsa算法和TD类似,只不过TD是更新状态的奖励函数V,这里是更新Q函数强化学习笔记:Q-learning :temporal difference 方法_UQI-LIUWJ ...

  10. 2.2)深度学习笔记:优化算法

    目录 1)Mini-batch gradient descent(重点) 2)Understanding mini-batch gradient descent 3)Exponentially wei ...

最新文章

  1. 正确配置Linux系统ulimit值的方法
  2. 如何在SAP Spartacus category 页面里拿到当前的category信息
  3. Ubuntu 18的中文界面切换《图解教程》亲测成功
  4. 解决PhoneGap在Android手机上的全屏问题
  5. Linux里面nginx显示Hello,Nginx得知——Hello World模
  6. 代码审计 phpcmsv9 MVC介绍
  7. 绝版经典《Linux与UNIX Shell编程指南》中文文字PDF版
  8. 掘金mysql_MySQL学习笔记(转自掘金小册 MySQL是怎样运行的,版权归作者所有!)
  9. English语法_分词用法-作名词
  10. 定位到excel最后一个非空单元格操作技巧,你一定要知道!(二)
  11. 计算机cpu 显卡的作用是什么,显卡的作用是什么 显卡简介【图文详解】
  12. 一张图回顾Hadoop十年 Hadoop老矣,尚能饭否
  13. 浏览器油猴插件Tampermonkey下载安装
  14. 优秀码农选择对象详细指南,看完记得要实战噢
  15. impala添加kerberos认证
  16. balsamiq mockups 3.0破解教程
  17. 逻辑备份和物理备份表级恢复
  18. Error creating bean with name ‘dataSource‘: Error setting property,river for test database type [HSQ
  19. python 动物分类_动物有哪些分类?
  20. MRT(MODIS Reprojection Tool) 工具下载及安装教程

热门文章

  1. POJ 3384 Feng Shui
  2. 浏览器配置存在问题。。360断网急救箱未能修复
  3. 史上最全JVM重点知识总结
  4. java web 酒店管理系统_GitHub - inkss/hotelbook-JavaWeb: 酒店管理系统-JavaWeb期末项目。...
  5. 如何修改aix服务器lv的名称,aix 更改lv的大小 smitty extendlv
  6. 软件质量测试:Jmeter察看结果树的响应数据中的中文显示乱码问题处理
  7. 散——TIPS(C语言)
  8. python云计算好学吗_没有基础,可以学云计算专业吗,学起来是不是很难,?
  9. 聊聊Elasticsearch的NodesSniffer
  10. 监听元素宽高变化resize