当前位置: 首页 > news >正文

知识图谱-KGE-语义匹配-双线性模型(打分函数用到了双线性函数)-2012:LFM(Latent Factor Model)

【paper】 A latent factor model for highly multi-relational data

【简介】 这篇文章是法国的研究团队发表在 NIPS 2012 上的文章,还挂了 Antoine Bordes 的名字。文章提出了 LFM(Latent Factor Model),主要贡献有两点:一是定义了 unigram、bigram、trigram 三种方式组合的三元组打分函数;二是将关系矩阵分解为低阶矩阵的组合,这样可以实现参数共享。

其实这种比较老的论文的表达方式、行文结构跟现在的论文都不太一样,再加上时间有限,所以没有看太明白。但这类模型终究是要过一遍的,就这样吧。

模型

文章在 intro 部分介绍了统计关系数据建模的现存难点:

  1. 频繁出现的关系类型只是一小部分(长尾现象)
  2. 数据存在噪声并且不完整
  3. 数据集规模有限

文章称 LFM 是基于概率的,明确考虑了数据的不确定性。这里的不确定性应该不是指的实体和关系包含语义的不确定性,只是指对三元组进行概率打分。

早期的论文中三元组表示都是(subject, relation, object),若三元组成立,写作 Ri(Si,Ok)=1Ri(Si,Ok)=1。

表示及打分函数

logistic 模型进行了如下的定义:

其中,ηik(j)ηik(j) 是一个线性函数:

贡献一: 对打分函数 ηik(j)ηik(j) 进行了重新定义

贡献二: 对关系矩阵进行分解

当关系数量比较多时,每个关系下的样本很少,容易引起过拟合。之前的模型曾经使用两种解决方法,一是聚类,二是用向量表示关系。与 RESCAL 的使用一个通用矩阵进行参数化的方法不同,本文提出的解决方法是将关系矩阵分解为 d 秩一矩阵(不知道这里的“一矩阵”是不是指对角矩阵){Θr}1≤r≤d{Θr}1≤r≤d。

分解的稀疏性和 d≪nrd≪nr 可以保证不同关系的参数共享。

Loss

模型训练的目标是最大化下面的 likelihood:

经过推导,可以得到 log-likelihood:

上午推导了一下,前半部分没有对上,可能中间有近似约减消掉的项。

训练目标等价于最小化负的 log-likelihood:

实验

和 RESCAL 一样,在 Kinships、UMLS、Nations 数据集上进行了实验,与 RESCAL、MRC 和 SME 三个 baseline 对比了 AUC 和 log-likelihood。

除了进行关系数据建模,实验部分还学习了动词的语义表示。这部分没细看。

代码

没有代码。


【总结】 本文定义了 unigram、bigram、trigram 进行组合的线性打分函数,并对关系矩阵进行分解实现参数共享。

双线性模型(一)(RESCAL、LFM、DistMult) - 胡萝不青菜 - 博客园

相关文章:

  • opcj-如何通过一个项目征服Java
  • 【知识图谱】(task1)知识图谱概论
  • PyTorch笔记 - Word Embeddings Word2vec 原理与源码
  • [C++]类和对象【上篇】
  • Docker 安装 Python
  • java 八股文
  • NETCAD GIS快速而简单的搜索引擎
  • Javascript异步编程深入浅出
  • 脉冲波形的产生和整形
  • 2022最后一个月,我们该如何学Java​?
  • Python用一行代码,截取图片
  • C# 11 中的新增功能
  • 【蓝桥杯国赛真题06】python绘制菱形圆环 蓝桥杯青少年组python编程 蓝桥杯国赛真题解析
  • 我为什么选择博客园!
  • BUG系列路径规划算法原理介绍(六)——BugFlood算法
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 2017年终总结、随想
  • Docker容器管理
  • E-HPC支持多队列管理和自动伸缩
  • ESLint简单操作
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • iOS小技巧之UIImagePickerController实现头像选择
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • 高度不固定时垂直居中
  • 经典排序算法及其 Java 实现
  • 排序(1):冒泡排序
  • 1.Ext JS 建立web开发工程
  • Android开发者必备:推荐一款助力开发的开源APP
  • Nginx实现动静分离
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • (rabbitmq的高级特性)消息可靠性
  • (八十八)VFL语言初步 - 实现布局
  • (分类)KNN算法- 参数调优
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (力扣题库)跳跃游戏II(c++)
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)母版页和相对路径
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .NET Core WebAPI中封装Swagger配置
  • .net core 依赖注入的基本用发
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • @staticmethod和@classmethod的作用与区别
  • [<死锁专题>]
  • [Angular] 笔记 6:ngStyle
  • [APUE]进程关系(下)
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [BT]小迪安全2023学习笔记(第15天:PHP开发-登录验证)
  • [C# WPF] 如何给控件添加边框(Border)?
  • [C# 网络编程系列]专题六:UDP编程
  • [C#]猫叫人醒老鼠跑 C#的委托及事件
  • [C++核心编程](四):类和对象——封装