基于知识图谱嵌入(KGE)的关系表示学习算法
题目描述
知识图谱(Knowledge Graph, KG)是一种用图结构来表示知识的数据形式,图中节点代表实体(如“北京”、“中国”),边代表实体间的关系(如“首都”)。一个基本事实通常表示为三元组(头实体,关系,尾实体),例如(北京,首都,中国)。知识图谱嵌入(Knowledge Graph Embedding, KGE)算法的核心目标是将图中的实体和关系映射到一个低维、连续的向量空间中,使得原始图谱中的结构信息(特别是语义关系)能够在这个向量空间中得到保留和计算。这有助于完成诸如链接预测(预测缺失的三元组)、关系抽取等任务。
解题过程
-
问题定义与目标
- 输入:一个知识图谱 \(G\),由一组三元组 \((h, r, t)\) 构成,其中 \(h\) 是头实体,\(r\) 是关系,\(t\) 是尾实体。所有实体的集合记为 \(E\),所有关系的集合记为 \(R\)。
- 目标:为每个实体 \(e \in E\) 学习一个向量表示 \(\mathbf{e} \in \mathbb{R}^d\),为每个关系 \(r \in R\) 学习一个向量表示 \(\mathbf{r} \in \mathbb{R}^k\)(\(d\) 和 \(k\) 是嵌入向量的维度)。学习到的嵌入应满足:对于一个真实的三元组 \((h, r, t)\),其向量表示通过一个特定的评分函数 \(f(\mathbf{h}, \mathbf{r}, \mathbf{t})\) 计算后,会得到一个较高的分数(表示该三元组成立的可能性大);而对于一个错误的三元组 \((h', r, t')\),其评分分数应较低。
-
核心思想:基于距离的评分函数
我们从一个经典且直观的模型——TransE 开始。它的核心思想非常简洁:如果一个三元组 \((h, r, t)\) 是真实的,那么在向量空间中,从头实体 \(\mathbf{h}\) 出发,加上关系 \(\mathbf{r}\) 的向量,应该近似等于尾实体 \(\mathbf{t}\) 的向量。即 \(\mathbf{h} + \mathbf{r} \approx \mathbf{t}\)。- 评分函数:为了衡量 \(\mathbf{h} + \mathbf{r}\) 和 \(\mathbf{t}\) 的接近程度,我们使用距离函数。TransE 使用 L1 或 L2 范数(距离)。评分函数定义为:
\(f(h, r, t) = - \| \mathbf{h} + \mathbf{r} - \mathbf{t} \|\)
这个分数是距离的负数,因此距离越小(越接近),分数越高,表明三元组越可能是真实的。
- 评分函数:为了衡量 \(\mathbf{h} + \mathbf{r}\) 和 \(\mathbf{t}\) 的接近程度,我们使用距离函数。TransE 使用 L1 或 L2 范数(距离)。评分函数定义为:
-
模型训练:最大化差异
我们的目标不是让所有三元组的分数都高,而是让正确三元组的分数显著高于错误三元组的分数。这通过一种称为“负采样”的策略和边际排名损失(Margin-based Ranking Loss)来实现。- 构造负样本:对于一个正确的训练三元组 \((h, r, t)\),我们通过随机替换其头实体或尾实体来构造一个错误的三元组(负样本),例如 \((h', r, t)\) 或 \((h, r, t')\)。
- 损失函数:我们希望正确三元组的分数比它对应的负样本分数高出至少一个边际值 \(\gamma\)(一个超参数,如 1.0)。损失函数定义如下:
\(\mathcal{L} = \sum_{(h,r,t) \in G} \sum_{(h',r,t') \in N_{(h,r,t)}} \max(0, \gamma - f(h, r, t) + f(h', r, t'))\)
其中,\(N_{(h,r,t)}\) 是三元组 \((h, r, t)\) 对应的负样本集合。\(\max(0, ...)\) 是铰链损失(Hinge Loss),只有当正确分数未能超过错误分数一个边际 \(\gamma\) 时,才会产生损失。训练过程就是通过梯度下降等优化算法,最小化这个总损失,从而更新所有实体和关系的向量表示。
-
TransE 的局限性与发展
TransE 模型简单高效,但它难以处理复杂关系,如一对多(1-N)、多对一(N-1)和多对多(N-N)关系。- 问题示例:对于关系“包含”,国家“中国”包含许多城市(北京、上海...)。在 TransE 中,我们会期望 \(\mathbf{中国} + \mathbf{包含} \approx \mathbf{北京}\) 且 \(\mathbf{中国} + \mathbf{包含} \approx \mathbf{上海}\),这会导致 \(\mathbf{北京} \approx \mathbf{上海}\),但北京和上海是两个不同的实体,它们的向量不应该相同。
- 改进模型:TransH
为了解决这个问题,TransH 模型被提出。它的核心思想是:让同一个实体在不同关系下拥有不同的表示。具体做法是:- 将关系 \(r\) 表示为一个超平面(由法向量 \(\mathbf{w}_r\) 定义)。
- 将头实体向量 \(\mathbf{h}\) 和尾实体向量 \(\mathbf{t}\) 投影到这个关系超平面上,得到投影向量 \(\mathbf{h}_{\perp}\) 和 \(\mathbf{t}_{\perp}\)。
- 在投影后的超平面内,仍然遵循 TransE 的平移假设:\(\mathbf{h}_{\perp} + \mathbf{r} \approx \mathbf{t}_{\perp}\)。
- 新的评分函数:\(f(h, r, t) = - \| \mathbf{h}_{\perp} + \mathbf{r} - \mathbf{t}_{\perp} \|\)
通过投影,实体在涉及不同关系时,其有效的表示(投影向量)是不同的,这解决了 TransE 在处理复杂关系时的局限性。
-
另一种思路:基于语义匹配的模型
除了 TransE 这种基于距离平移的模型,还有一大类模型基于语义匹配(或双线性模型)。它们的思想是:通过关系向量(或矩阵)来衡量头尾实体向量在语义上的匹配程度。- 代表性模型:DistMult
DistMult 模型采用了一种极其简单的方式:它将评分函数定义为一个三线性点积。
\(f(h, r, t) = \langle \mathbf{h}, \mathbf{r}, \mathbf{t} \rangle = \sum_i \mathbf{h}_i \cdot \mathbf{r}_i \cdot \mathbf{t}_i\)
这里,\(\mathbf{r}\) 是一个向量,而不是超平面参数。这个函数可以看作是头实体和尾实体向量在关系向量的“调节”下进行相似度计算。如果 \((h, r, t)\) 成立,那么这个点积值应该很大。DistMult 的优点是简单高效,但缺点是它只能处理对称关系(即如果 (h, r, t) 成立,则 (t, r, h) 也成立),因为点积运算满足交换律。 - 改进模型:ComplEx
为了建模非对称关系,ComplEx 模型将实体和关系嵌入到复数向量空间中。其评分函数利用复数的性质(特别是共轭)来打破对称性:
\(f(h, r, t) = \text{Re}(\langle \mathbf{h}, \mathbf{r}, \overline{\mathbf{t}} \rangle)\)
其中 \(\mathbf{h}, \mathbf{r}, \mathbf{t} \in \mathbb{C}^d\) 是复数向量,\(\overline{\mathbf{t}}\) 是 \(\mathbf{t}\) 的共轭,\(\text{Re}(\cdot)\) 取实部,\(\langle \cdot, \cdot, \cdot \rangle\) 是复数的三线性点积。这个设计使得 \(f(h, r, t)\) 和 \(f(t, r, h)\) 的结果可以不同,从而能够处理非对称关系。
- 代表性模型:DistMult
总结
知识图谱嵌入算法通过将离散的符号(实体和关系)映射到连续的向量空间,使机器能够进行计算和推理。其核心步骤是:1) 设计一个合理的评分函数来衡量三元组的可信度;2) 通过构造负样本和定义损失函数来训练模型,拉大正负样本的分数差距。从简单的 TransE,到解决复杂关系的 TransH,再到基于语义匹配的 DistMult 和 ComplEx,这些算法都在探索如何更好地在向量空间中捕捉和表示知识图谱中丰富的语义和结构信息。