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

2013 NeuralIPS Translating Embeddings for Modeling Multi-relational Data

论文基本信息

题目: Translating Embeddings for Modeling Multi-relational Data
作者: Antoine Bordes, Nicolas Usunier, Alberto Garcia-Durán, Jason Weston, Oksana Yakhnenko
机构: Université de Technologie de Compiègne – CNRS (Heudiasyc UMR 7253), Google
发表地点与年份: NeuralIPS,年份为2013年
关键词术语: Knowledge Base (KB), Multi-relational Data, Link Prediction, Embedding, Translation-based Model, TransE


摘要(详细复述)

背景: 多关系数据(如知识库)通常以三元组 (h,l,t)(h, l, t)(h,l,t) 形式存在,表示头实体 hhh 和尾实体 ttt 之间存在关系 lll。传统方法如矩阵分解或贝叶斯聚类虽有效但模型复杂,参数量大,难以扩展到大规模数据。
方案概述: 提出 TransE 模型,将关系解释为实体嵌入空间中的平移操作,即若 (h,l,t)(h, l, t)(h,l,t) 成立,则 h+l≈th + l \approx th+lt。该模型仅需为每个实体和关系学习一个低维向量,参数量极少。
主要结果/提升: 在 Wordnet 和 Freebase 数据集上,TransE 在链接预测任务中显著优于当时最佳方法(SOTA),例如在 Wordnet 上 Hits@10 达到 89.2%(过滤设置)。模型可成功训练于超大规模数据集(FB1M:100 万实体、2.5 万关系、1750 万训练样本)。
结论与意义: TransE 以极简的平移假设实现了高效、可扩展的多关系数据建模,为知识库补全提供了强大工具。


研究背景与动机

学术/应用场景: 多关系数据广泛存在于社交网络、推荐系统、知识库(如 Freebase、Wordnet)中,常用于链接预测(知识补全)。
痛点: 传统方法(如张量分解、聚类)模型复杂、参数量大、训练困难,难以扩展至大规模数据,且易过拟合或欠拟合。
主流路线与局限:

方法类别代表工作优点不足
张量分解RESCAL表达能力强参数量大(O(nek+nrk2)O(n_ek + n_rk^2)O(nek+nrk2)),计算成本高
能量模型SE, SME可捕捉复杂关系优化困难,易欠拟合
隐因子模型LFM多关系建模参数量中等,但训练不稳定

问题定义(形式化)

输入: 训练集 S={(h,l,t)}S = \{(h, l, t)\}S={(h,l,t)},其中 h,t∈Eh, t \in Eh,tE(实体集),l∈Ll \in LlL(关系集)。
输出: 实体嵌入向量 e∈Rk\mathbf{e} \in \mathbb{R}^keRk∀e∈E\forall e \in EeE),关系嵌入向量 l∈Rk\mathbf{l} \in \mathbb{R}^klRk∀l∈L\forall l \in LlL)。
目标函数: 最小化边际排序损失(公式 1),使得正例三元组的能量 d(h+l,t)d(\mathbf{h} + \mathbf{l}, \mathbf{t})d(h+l,t) 低于负例。
评测目标: 链接预测任务中,通过排名指标(平均秩 Mean Rank 和 Hits@10)评估模型性能。


创新点

  1. 关系作为平移操作: 首次将关系建模为嵌入空间中的平移向量 l\mathbf{l}l,强制 h+l≈t\mathbf{h} + \mathbf{l} \approx \mathbf{t}h+lt。该假设直观对应知识库中的层次关系(如父子关系为垂直平移)。
  2. 极简参数化: 每个实体和关系仅需学习一个 kkk 维向量,总参数量为 O(nek+nrk)O(n_ek + n_rk)O(nek+nrk),远低于同期方法(见表 1)。
  3. 高效优化: 采用带约束的随机梯度下降(SGD),约束实体嵌入的 L2 范数为 1,防止平凡解。

方法与核心思路

整体框架

TransE 基于能量模型框架,核心思想是将关系 lll 视为头实体嵌入 h\mathbf{h}h 到尾实体嵌入 t\mathbf{t}t 的平移。模型结构如下:

graph TDA[输入三元组 h l t] --> B[查找嵌入向量]B --> C[计算平移向量 h 加 l]C --> D[计算差异度 d(h+l t)]D --> E[与负例三元组对比]E --> F[优化损失函数 L]

步骤分解

  1. 初始化: 所有实体和关系嵌入向量均匀随机初始化于 [−6k,6k]\left[ -\frac{6}{\sqrt{k}}, \frac{6}{\sqrt{k}} \right][k6,k6] 区间。
  2. 归一化: 每轮迭代前,将所有实体嵌入向量归一化为单位范数(防止训练塌陷)。
  3. 采样: 从训练集 SSS 中采样一个 mini-batch,对每个正例三元组 (h,l,t)(h, l, t)(h,l,t),构造一个负例三元组 (h′,l,t′)(h', l, t')(h,l,t),其中 h′h'ht′t't 被随机实体替换(公式 2)。
  4. 计算损失: 对每个正负样本对,计算边际损失 [γ+d(h+l,t)−d(h′+l,t′)]+\left[ \gamma + d(\mathbf{h} + \mathbf{l}, \mathbf{t}) - d(\mathbf{h'} + \mathbf{l}, \mathbf{t'}) \right]_+[γ+d(h+l,t)d(h+l,t)]+
  5. 梯度更新: 根据损失梯度更新所有嵌入参数。

模块与交互

  • 嵌入层: 将实体和关系 ID 映射为 kkk 维向量。
  • 平移模块: 计算 h+l\mathbf{h} + \mathbf{l}h+l,得到预测尾实体位置。
  • 差异度计算: 使用 L1L_1L1L2L_2L2 距离衡量 h+l\mathbf{h} + \mathbf{l}h+lt\mathbf{t}t 的差异。
  • 损失模块: 基于边际排序损失,推动正例差异度小于负例。

公式与符号

能量函数:

d(h+l,t)=∥h+l−t∥p(p=1 或 2) d(\mathbf{h} + \mathbf{l}, \mathbf{t}) = \| \mathbf{h} + \mathbf{l} - \mathbf{t} \|_p \quad (p=1 \text{ 或 } 2) d(h+l,t)=h+ltp(p=1  2)

损失函数:

L=∑(h,l,t)∈S∑(h′,l,t′)∈S(h,l,t)′[γ+d(h+l,t)−d(h′+l,t′)]+ L = \sum_{(h,l,t) \in S} \sum_{(h',l,t') \in S'_{(h,l,t)}} \left[ \gamma + d(\mathbf{h} + \mathbf{l}, \mathbf{t}) - d(\mathbf{h'} + \mathbf{l}, \mathbf{t'}) \right]_+ L=(h,l,t)S(h,l,t)S(h,l,t)[γ+d(h+l,t)d(h+l,t)]+

负例构造:

S(h,l,t)′={(h′,l,t)∣h′∈E}∪{(h,l,t′)∣t′∈E} S'_{(h,l,t)} = \{ (h', l, t) \mid h' \in E \} \cup \{ (h, l, t') \mid t' \in E \} S(h,l,t)={(h,l,t)hE}{(h,l,t)tE}

伪代码

算法 1:TransE 训练流程

输入: 训练集 S, 实体集 E, 关系集 L, 边际 γ, 嵌入维度 k
1: 初始化所有实体和关系嵌入向量
2: loop
3:   对每个实体 e ∈ E: e ← e / ∥e∥₂  # 归一化
4:   S_batch ← 从 S 采样 b 个三元组
5:   T_batch ← ∅
6:   对每个 (h,l,t) ∈ S_batch:
7:       (h',l,t') ← 从 S'_{(h,l,t)} 采样一个负例
8:       T_batch ← T_batch ∪ {((h,l,t), (h',l,t'))}
9:   结束循环
10:   根据梯度 ∇∑_{T_batch} [γ + d(h+l,t) - d(h'+l,t')]_+ 更新嵌入
11: end loop

伪代码描述:
该算法通过随机梯度下降优化边际排序损失。每轮迭代先归一化实体嵌入,然后采样正负样本对,计算损失并更新参数。

复杂度分析

  • 时间复杂度: 每轮迭代需计算 O(b)O(b)O(b) 个距离(bbb 为 batch size),每个距离计算为 O(k)O(k)O(k),故每轮复杂度为 O(bk)O(bk)O(bk)
  • 空间复杂度: 存储所有实体和关系嵌入,总计 O((ne+nr)k)O((n_e + n_r)k)O((ne+nr)k) 参数。
  • 资源开销: 极低,可处理百万级实体和关系。

关键设计选择

  • 归一化实体嵌入: 防止训练过程中通过增大嵌入范数降低损失,确保优化聚焦于方向而非尺度。
  • 使用边际损失: 而非交叉熵等,更适合排序任务,直接优化正负例的相对顺序。
  • 负例采样策略: 仅替换头或尾,而非同时替换,保证负例与正例有较高相似性,增加训练难度。

实验设置

数据集:

数据集实体数关系数训练样本数验证样本数测试样本数
WN40,94318141,4425,0005,000
FB15K14,9511,345483,14250,00059,071
FB1M1M23,38217.5M50,000177,404

对比基线: Unstructured, RESCAL, SE, SME(linear), SME(bilinear), LFM。
评价指标:

  • Mean Rank:正确实体的平均排名(越低越好)。
  • Hits@10:正确实体排名在前 10 的比例(越高越好)。
  • 提供 Raw(未过滤)和 Filtered(过滤掉所有已知真实三元组)两种设置。

实现细节:

  • 框架:自定义实现(开源代码)。
  • 超参数:通过验证集选择 k∈{20,50}k \in \{20,50\}k{20,50}, γ∈{1,2,10}\gamma \in \{1,2,10\}γ{1,2,10}, 学习率 λ∈{0.001,0.01,0.1}\lambda \in \{0.001,0.01,0.1\}λ{0.001,0.01,0.1}
  • 硬件与训练时间:未明确说明,但强调可扩展至大规模数据。

实验结果与分析

主结果表

数据集方法Mean Rank (Filt)Hits@10% (Filt)
WNUnstructured30438.2
RESCAL1,16352.8
SE98580.5
SME(linear)53374.1
SME(bilinear)50961.3
LFM45681.6
TransE25189.2
FB15KTransE12547.1
FB1MTransE14,61534.0
  • TransE 在所有数据集和指标上均优于基线,尤其在 WN 上 Hits@10 提升 7.6%。
  • 在超大规模 FB1M 上,TransE 仍能有效训练,而部分基线因计算成本过高未实验。

消融实验

  • Unstructured 对比: 无平移项的 TransE 变体性能大幅下降(Hits@10 仅 6.3% on FB15K),证明平移机制的关键作用。
  • 关系类型分析(表 4): TransE 在 1-to-1、1-to-Many、Many-to-1、Many-to-Many 所有关系类型上均优于或接近最佳基线。

泛化能力

  • 少样本学习(图 1): 仅需 10 个新关系样本,TransE 的 Hits@10 即达 18%,显著优于基线,显示其优秀泛化能力。

误差分析与失败案例

错误类别:

  • 主要误差出现在复杂多对多关系(Many-to-Many)中,因三元交互未被显式建模。
  • 部分错误源于相似实体在嵌入空间中聚集,导致排名竞争激烈。
    失败案例: 在 Kinships 数据集上(未包含),因三元交互关键,TransE 性能不及 SOTA,证明其局限性与数据特性相关。

复现性清单

代码与数据: 论文提及开源代码(项目网页),但未提供链接;数据集使用公开 Wordnet 和 Freebase。
环境与依赖: 未明确说明。
运行命令: 未提供。
许可证: 未说明。


结论与未来工作

结论: TransE 以平移假设实现高效、可扩展的知识表示学习,在链接预测任务中取得突破性性能。
未来工作:

  • 扩展模型以处理更复杂关系(如对称、组合关系)。
  • 结合文本信息(如关系抽取)进行联合学习。
  • 应用于词表示学习(受 Word2Vec 启发)。

http://www.dtcms.com/a/362213.html

相关文章:

  • JAVA后端开发——MyBatis 结合 MySQL JSON 类型查询详解
  • vue组件中实现鼠标右键弹出自定义菜单栏
  • 智慧交通时代,数字孪生为何成为关键力量?
  • Map接口
  • 基于若依框架前端学习VUE和TS的核心内容
  • 手搓3D轮播图组件以及倒影效果
  • 基于STM32的ESP8266连接华为云(MQTT协议)
  • leetcode46.全排列
  • java web 练习 简单增删改查,多选删除,包含完整的sql文件demo。生成简单验证码前端是jsp
  • (Mysql)MVCC、Redo Log 与 Undo Log
  • C#知识学习-012(修饰符)
  • Python OpenCV图像处理与深度学习:Python OpenCV边缘检测入门
  • FastLED库完全指南:打造炫酷LED灯光效果
  • 【Excel】将一个单元格内​​的多行文本,​​拆分成多个单元格,每个单元格一行​​
  • 【设计模式】--重点知识点总结
  • C++ Bellman-Ford算法
  • Linux并发与竞争实验
  • 软件使用教程(四):Jupyter Notebook 终极使用指南
  • 数据分析编程第八步:文本处理
  • 设计模式-状态模式 Java
  • 华清远见25072班I/O学习day2
  • PostgreSQL备份指南:逻辑与物理备份详解
  • 椭圆曲线群运算与困难问题
  • 【数据分享】多份土地利用矢量shp数据分享-澳门
  • AI产品经理面试宝典第81天:RAG系统架构演进与面试核心要点解析
  • Qt中的信号与槽机制的主要优点
  • 自动化测试时,chrome浏览器启动后闪退的问题
  • 【趣味阅读】Python 文件头的秘密:从编码声明到 Shebang
  • VisionProC#联合编程相机实战开发
  • 【云存储桶安全】怎么满足业务需求,又最大程度上满足信息安全要求呢?