TransE算法解析
transE(Translating Embedding)详解+简单python实现
概念
transE算法是一个非常经典的知识表示学习,用分布式表示(distributed representation)来描述知识库中的三元组。
原理
transE算法利用了word2vec的平移不变性,TransE的直观含义,就是TransE基于实体和关系的分布式向量表示,将每个三元组实例(head,relation,tail)中的关系relation看做从实体head到实体tail的翻译(其实就是向量相加),通过不断调整h、r和t(head、relation和tail的向量),使(h + r) 尽可能与 t 相等,即,实体向量 + 关系向量 = 实体向量 (h+l = t)
损失函数
1️⃣ ( h ′ , l , t ′ )称为corrupted triplet,通过随机替换头或尾实体得到的
2️⃣ 正样本 - 即原有样本,公式中的d(h+l, t)
3️⃣ 负样本 - 随机替换h或者l, 不同时替换,公式中的d(h’+l, t’)
4️⃣ γ>0为 margin(一个边际参数),表示正负样本之间的间距
5️⃣ transE针对给定三元组进行二分类任务
其中的负例是通过替换自行构造的,目标是使得最相近的正负例样本距离最大化。
6️⃣ 距离度量方式
L1和L2范数
7️⃣ 关系向量 (l)需要归一化,避免训练时带来实体向量的尺度变化
8️⃣ 让正样本的距离最小,也就是m i n ( d i s t a n c e ( h + r , t ) ),让负样本的相反数最小也就是min(-distance(h’+r’,t’)),对于每一个正样本和负样本求和,再增加一个常数的间距margin,就是整体距离的最小值。也就是我们的目标函数。
9️⃣ 如何产生负样本
通过随机替换头实体的方式来实现一个错误的三元组,或者采用随机替换一个错误的尾实体的方式来形成一个错误的三 元组。
同时,为了避免出现生成的负例其实存在于知识库中的情况,我们在替换形成的三元组也存在于知识图谱中,我们需要在替换之后进行过滤
训练方式采用SGD训练法
SGD的收敛没有GD好,但是,这反而是优点,因为在机器学习领域,过于best的结果反而是害处,因为用于过拟合(overfitting)。也就是,尽管叫做D(下降),但整个过程我们难保一直D下去。只能保证在forever可以做到D。
通常为了方便训练并避免过拟合,会加上约束条件
∣ ∣ h ∣ ∣ ≤ 1 , ∣ ∣ r ∣ ∣ ≤ 1 , ∣ ∣ t ∣ ∣ ≤ 1 ,
具体的优化过程
1️⃣ 所有实体和关系的嵌入首先按照随机过程进行初始化;
2️⃣ 在算法的每次主要迭代中,对实体的嵌入向量进行归一化;
3️⃣ 从训练集中采样一个小的三元组集合,作为小批的训练三元组;
4️⃣ 对于每一个这样的三元组,我们取样一个损坏的三元组;
5️⃣ 然后以恒定的学习速率梯度更新参数。
下图是论文里的算法描述:
代码从网上下载即可。
运行的部分结果:
论文:Translating Embeddings for Modeling Multi-relational Data
TransE算法解析相关推荐
- 回归算法分类,常用回归算法解析
回归算法分类,常用回归算法解析 回归是数学建模.分类和预测中最古老但功能非常强大的工具之一.回归在工程.物理学.生物学.金融.社会科学等各个领域都有应用,是数据科学家常用的基本工具. 回归通常是机器学 ...
- CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)
CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020) 目标检测:FCOS(CVPR 2019) 目标检测算法FCOS(FCOS: ...
- 10没有基于策略的qos_分布式QoS算法解析
QoS对于服务多租户多业务的整体系统来说,不管对网络还是存储,都格外重要,没有QoS,会造成不同租户及业务之间对资源的抢占,用户A用爽了,用户B却遭了殃,频频投诉,这是系统管理员最头疼的事情.我们今天 ...
- python终结一个循环额_Python语言入门之内存管理方式和垃圾回收算法解析
本文主要向大家介绍了Python语言入门之内存管理方式和垃圾回收算法解析,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 在列表,元组,实例,类,字典和函数中存在循环引用问题.有 ...
- 脑机接口主流算法解析课程视频汇总
目录 讲座1--SSVEP算法解析 讲座2--ERP/P300算法解析 讲座3--运动想象算法解析 讲座4--情感脑机接口算法解析 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流 ...
- yolo类检测算法解析——yolo v3
原文:https://www.cnblogs.com/cvtoEyes/p/8608205.html yolo类检测算法解析--yolo v3 计算机视觉的发展史可谓很长了,它的分支很多,而且理论那是 ...
- 【机器学习】通俗的元胞自动机算法解析和应用
[机器学习]通俗的元胞自动机算法解析和应用 文章目录 1 元胞自动机的定义 2 元胞自动机的组成 3 元胞自动机的特征 4 Python实现元胞自动机(生命游戏) 5 总结 6 Github(华盛顿州 ...
- 【机器学习】树回归和聚类算法解析和应用
[机器学习]树回归和聚类算法解析和应用 文章目录 1 树回归 2 CART ( Classification And Regression Tree) 分类回归树 3 K-means3.1 合理选择 ...
- 【机器学习】通俗的k-近邻算法算法解析和应用
[机器学习]通俗的k-近邻算法算法解析和应用 文章目录 1 概述 2 KNN 场景 3 KNN 原理 4 实例:改进约会网站的配对效果 5 算法总结 6 KNN算法的优缺点 7 图像分类应用 1 概述 ...
最新文章
- android 自定义属性步骤
- 基于SDP的提议/应答(offer/answer)模型简介
- PHP结合Ueditor并修改图片上传路径
- History of Microsoft Windows CE
- matlab中电感元件,中性点经消弧线圈及其并电阻接地系统的MATLAB仿真
- 如果身价千万,你还会事无巨细亲力亲为吗
- 分享,用sql快速创建MODEL,快速提高工作效率哦
- vb6源码 ymodem_VB6 实时曲线显示源码全套资料
- 如何在软件里显示编译时间?__DATE__和__TIME__
- 南京大学计算机专业复试面试,南京大学计算机CS专业复试超全PPT及真题、面试内部资料(离散编译上机面试)...
- c语言转换绝对值函数的程序,c语言abs(c语言求绝对值的程序)
- 80端口封了怎么办,利用80端口映射解决
- html页脚版权声明,版权声明与免责声明的区别
- google thumbnailator简介
- font-style 属性 oblique 是什么意思
- 北航和北理工计算机专业哪个好,北理和北航哪个好?
- 你必须要知道CNN模型:ResNet
- 21 个好用的持续集成工具,总有一款适合你
- 二级计算机公共基础知识
- 电商项目测试实战(二)
热门文章
- Fabric1.4源码解析:Peer节点启动过程
- 362. Design Hit Counter
- [转] 多线程 《深入浅出 Java Concurrency》目录
- RESTful API标准设计教程
- SAP 设置或取消仓库不参与MRP运算(转)
- ExtJs十(ExtJs Mvc用户管理之二)
- ObjectDataSource控件的使用...
- The least round way CodeForces - 2B (DP 矩阵 路径)
- 一款可以安利的MarkDown编辑器
- form表单中的enctype=multipart/form-data什么意思?