学习笔记(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。
详细算法流程
- 其中距离度量方式有L1范数 和L2范数 两种。在测试时,以一个三元组为例,用语料中所有实体替换当前三元组的头实体计算距离d(h′+l,t),将结果按升序排序,用正确三元组的排名情况来评估学习效果(同理对尾实体这样做)。度量标准选择:
- hits@10:命中前10的次数/总查询次数
- mean rank:正确结果排名之和/总查询次数
- 两种测试结果:raw 和filter ,其动机是我们在测试时通过替换得到的三元组并不一定就是负例,可能恰巧换对了,那么它排名高也是正确的,把当前三元组挤下去也正常。 所以测试时在替换后要检查一下新三元组是否出现在训练集中,是的话就删掉,这就是filter训练方法(不检查的是raw)。
- 关于模型的参数:参数θ是所有实体的向量。设一共有 |E| 个实体和 |R| 个关系,每个实体/关系的向量长度为d维,因此,一共有( |E| + |R| ) * d 个参数。
- 关于参数的更新:使用的是随机梯度下降(Stochastic Gradient Descent,SGD) 训练方法。SGD不用对所有的和求梯度,而是对一个batch求梯度之后就立即更新theta值。
- SGD的收敛没有GD好,但这反而是优点,因为在机器学习领域,过于best的结果反而不好,会产生过拟合(overfitting)。也就是,尽管叫做D(下降),但整个过程难保一直D下去。
- 归一化公式 的分母是向量的平方和再开方;而对于距离公式 是向量的平方和(没有开方)。若公式书写错误,会引起收敛失败。
- 关于L1范数的求导方法:先对L2范数求导,逐元素判断正负,为正赋值为1,负则为-1。
- 超参选择:对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)相关推荐
- 台大李宏毅Machine Learning 2017Fall学习笔记 (16)Unsupervised Learning:Neighbor Embedding
台大李宏毅Machine Learning 2017Fall学习笔记 (16)Unsupervised Learning:Neighbor Embedding
- R语言与机器学习学习笔记(分类算法)
转载自:http://www.itongji.cn/article/0P534092014.html 人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型.神经 ...
- 《基于张量网络的机器学习入门》学习笔记8(Shor算法)
<基于张量网络的机器学习入门>学习笔记8 Shor算法 来源 Shor算法的大致流程 因数分解 周期求取与量子傅里叶变换(QFT) Shor算法 来源 1994 1994 1994年,应用 ...
- 【学习笔记】【算法】【智能优化】粒子群优化(PSO)
[学习笔记][算法][智能优化]粒子群优化(PSO) 文章目录 [学习笔记][算法][智能优化]粒子群优化(PSO) 1 算法背景 1.1 背景 1.2 基础知识 2 算法原理 2.1 基本原理 2. ...
- 【学习笔记】网络流算法简单入门
[学习笔记]网络流算法简单入门 [大前言] 网络流是一种神奇的问题,在不同的题中你会发现各种各样的神仙操作. 而且从理论上讲,网络流可以处理所有二分图问题. 二分图和网络流的难度都在于问题建模,一般不 ...
- 点云学习笔记11——VoxelNet算法+代码运行
点云学习笔记11--VoxelNet算法+代码运行 一.算法分析 摘要 介绍 相关工作 1.2. 贡献 2.VoxelNet 2.1.特征学习网络 2.1.1 特征学习网络 二.代码复现 2.1.环境 ...
- 学习笔记------人工蜂群算法
学习笔记------人工蜂群算法 为了解决多变量函数优化问题Karaboga在2005年提出了人工蜂群算法ABC模型. 1. 蜜蜂采蜜机理 蜜蜂是一种群居昆虫,虽然单个昆虫的行为极其简单,但是由单个简 ...
- GMM高斯混合模型学习笔记(EM算法求解)
提出混合模型主要是为了能更好地近似一些较复杂的样本分布,通过不断添加component个数,能够随意地逼近不论什么连续的概率分布.所以我们觉得不论什么样本分布都能够用混合模型来建模.由于高斯函数具有一 ...
- 强化学习笔记:Sarsa算法
1 Sarsa(0) Sarsa算法和TD类似,只不过TD是更新状态的奖励函数V,这里是更新Q函数强化学习笔记:Q-learning :temporal difference 方法_UQI-LIUWJ ...
- 2.2)深度学习笔记:优化算法
目录 1)Mini-batch gradient descent(重点) 2)Understanding mini-batch gradient descent 3)Exponentially wei ...
最新文章
- 正确配置Linux系统ulimit值的方法
- 如何在SAP Spartacus category 页面里拿到当前的category信息
- Ubuntu 18的中文界面切换《图解教程》亲测成功
- 解决PhoneGap在Android手机上的全屏问题
- Linux里面nginx显示Hello,Nginx得知——Hello World模
- 代码审计 phpcmsv9 MVC介绍
- 绝版经典《Linux与UNIX Shell编程指南》中文文字PDF版
- 掘金mysql_MySQL学习笔记(转自掘金小册 MySQL是怎样运行的,版权归作者所有!)
- English语法_分词用法-作名词
- 定位到excel最后一个非空单元格操作技巧,你一定要知道!(二)
- 计算机cpu 显卡的作用是什么,显卡的作用是什么 显卡简介【图文详解】
- 一张图回顾Hadoop十年 Hadoop老矣,尚能饭否
- 浏览器油猴插件Tampermonkey下载安装
- 优秀码农选择对象详细指南,看完记得要实战噢
- impala添加kerberos认证
- balsamiq mockups 3.0破解教程
- 逻辑备份和物理备份表级恢复
- Error creating bean with name ‘dataSource‘: Error setting property,river for test database type [HSQ
- python 动物分类_动物有哪些分类?
- MRT(MODIS Reprojection Tool) 工具下载及安装教程
热门文章
- POJ 3384 Feng Shui
- 浏览器配置存在问题。。360断网急救箱未能修复
- 史上最全JVM重点知识总结
- java web 酒店管理系统_GitHub - inkss/hotelbook-JavaWeb: 酒店管理系统-JavaWeb期末项目。...
- 如何修改aix服务器lv的名称,aix 更改lv的大小 smitty extendlv
- 软件质量测试:Jmeter察看结果树的响应数据中的中文显示乱码问题处理
- 散——TIPS(C语言)
- python云计算好学吗_没有基础,可以学云计算专业吗,学起来是不是很难,?
- 聊聊Elasticsearch的NodesSniffer
- 监听元素宽高变化resize