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算法解析相关推荐

  1. 回归算法分类,常用回归算法解析

    回归算法分类,常用回归算法解析 回归是数学建模.分类和预测中最古老但功能非常强大的工具之一.回归在工程.物理学.生物学.金融.社会科学等各个领域都有应用,是数据科学家常用的基本工具. 回归通常是机器学 ...

  2. CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)

    CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020) 目标检测:FCOS(CVPR 2019) 目标检测算法FCOS(FCOS: ...

  3. 10没有基于策略的qos_分布式QoS算法解析

    QoS对于服务多租户多业务的整体系统来说,不管对网络还是存储,都格外重要,没有QoS,会造成不同租户及业务之间对资源的抢占,用户A用爽了,用户B却遭了殃,频频投诉,这是系统管理员最头疼的事情.我们今天 ...

  4. python终结一个循环额_Python语言入门之内存管理方式和垃圾回收算法解析

    本文主要向大家介绍了Python语言入门之内存管理方式和垃圾回收算法解析,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 在列表,元组,实例,类,字典和函数中存在循环引用问题.有 ...

  5. 脑机接口主流算法解析课程视频汇总

    目录 讲座1--SSVEP算法解析 讲座2--ERP/P300算法解析 讲座3--运动想象算法解析 讲座4--情感脑机接口算法解析 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流 ...

  6. yolo类检测算法解析——yolo v3

    原文:https://www.cnblogs.com/cvtoEyes/p/8608205.html yolo类检测算法解析--yolo v3 计算机视觉的发展史可谓很长了,它的分支很多,而且理论那是 ...

  7. 【机器学习】通俗的元胞自动机算法解析和应用

    [机器学习]通俗的元胞自动机算法解析和应用 文章目录 1 元胞自动机的定义 2 元胞自动机的组成 3 元胞自动机的特征 4 Python实现元胞自动机(生命游戏) 5 总结 6 Github(华盛顿州 ...

  8. 【机器学习】树回归和聚类算法解析和应用

    [机器学习]树回归和聚类算法解析和应用 文章目录 1 树回归 2 CART ( Classification And Regression Tree) 分类回归树 3 K-means3.1 合理选择 ...

  9. 【机器学习】通俗的k-近邻算法算法解析和应用

    [机器学习]通俗的k-近邻算法算法解析和应用 文章目录 1 概述 2 KNN 场景 3 KNN 原理 4 实例:改进约会网站的配对效果 5 算法总结 6 KNN算法的优缺点 7 图像分类应用 1 概述 ...

最新文章

  1. android 自定义属性步骤
  2. 基于SDP的提议/应答(offer/answer)模型简介
  3. PHP结合Ueditor并修改图片上传路径
  4. History of Microsoft Windows CE
  5. matlab中电感元件,中性点经消弧线圈及其并电阻接地系统的MATLAB仿真
  6. 如果身价千万,你还会事无巨细亲力亲为吗
  7. 分享,用sql快速创建MODEL,快速提高工作效率哦
  8. vb6源码 ymodem_VB6 实时曲线显示源码全套资料
  9. 如何在软件里显示编译时间?__DATE__和__TIME__
  10. 南京大学计算机专业复试面试,南京大学计算机CS专业复试超全PPT及真题、面试内部资料(离散编译上机面试)...
  11. c语言转换绝对值函数的程序,c语言abs(c语言求绝对值的程序)
  12. 80端口封了怎么办,利用80端口映射解决
  13. html页脚版权声明,版权声明与免责声明的区别
  14. google thumbnailator简介
  15. font-style 属性 oblique 是什么意思
  16. 北航和北理工计算机专业哪个好,北理和北航哪个好?
  17. 你必须要知道CNN模型:ResNet
  18. 21 个好用的持续集成工具,总有一款适合你
  19. 二级计算机公共基础知识
  20. 电商项目测试实战(二)

热门文章

  1. Fabric1.4源码解析:Peer节点启动过程
  2. 362. Design Hit Counter
  3. [转] 多线程 《深入浅出 Java Concurrency》目录
  4. RESTful API标准设计教程
  5. SAP 设置或取消仓库不参与MRP运算(转)
  6. ExtJs十(ExtJs Mvc用户管理之二)
  7. ObjectDataSource控件的使用...
  8. The least round way CodeForces - 2B (DP 矩阵 路径)
  9. 一款可以安利的MarkDown编辑器
  10. form表单中的enctype=multipart/form-data什么意思?