想象你手里有一张巨大的“关系城市”地图。这座城市里没有马路,只有一个个闪着光的地标——“中国”“北京”“巴黎”“长城”;地标之间飘着发光的箭头,箭头上写着关系:“首都”“位于”“著名景点”。这张地图就是知识图谱,地标是实体,箭头是关系,而每条“地标 → 箭头 → 地标”的路线就是一个三元组。可问题是:地图缺了太多路,很多地标之间的箭头明明存在,却没人画上去。知识推理要做的,就是学会箭头的“脾气”,把缺失的路线自动补出来。 怎么让机器学会箭头脾气?科学家想了个聪明办法:把地标变成坐标系里的点,把关系变成“移动规则”。TransE 说:关系就是一次直线位移,从“中国”出发,沿“首都”这个箭头走一步,刚好落在“北京”上。RotatE 说:关系更像表盘上的旋转,把“中国”转到某个角度,正好对准“北京”。一个用直线搬家的方式描述世界,一个用旋转表盘的方式描述世界。这篇文将带你从地图开始,一步步看懂这两种模型如何让机器学会“指路”。
学懂 TransE 与 RotatE,你就掌握了知识图谱表示学习的底层逻辑——这是从事知识图谱补全、推荐系统、智能问答等 AI 工作的必备基本功,也是面试中高频考点。
目录
可视化演示
动态演示知识推理的核心机制,通过采集/分析/决策/反馈四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
知识推理:知识图谱 知识图谱表示学习问题定义 TransE翻译假设与能量函数 核心机制可视化 知识推理整体架构与关键组件
知识图谱基础:初见关系城市
想象你举着一张巨大的“关系城市”地图,上面没有道路,只有发光的建筑和飘动的箭头。每个建筑是一个实体,比如“中国”“北京”“故宫”;每条箭头是一种关系,比如“首都”“位于”“包含”。箭头从一座建筑指向另一座建筑,构成一条完整的路径,这就是三元组——我们记作 (头实体 h, 关系 r, 尾实体 t)。比如 (“中国”, “首都”, “北京”) 就是一条箭头从“中国”射出、标着“首都”、扎进“北京”的路线。
地图上的建筑太多了,机器没法直接“看”懂它们的名字。于是科学家做了一个关键决定:给每座建筑发一个坐标,把实体和关系都变成一组数字,这组数字就叫嵌入向量。就像城市规划局把每座建筑标上经纬度,实体从此有了数学意义上的“位置”;关系则变成连接位置的“移动规则”。有了坐标和移动规则,知识推理就不再是翻字典,而变成了纯粹的数学运算。
把整个城市坐标化之后,补全地图的任务就像在地图上做几何题:已知两个点和一个移动规则,求第三个点。接下来我们要看的 TransE,就是第一个想到用“直线平移”解决这道几何题的模型。
- 头实体 h三元组里的起点,比如“中国”。
- 关系 r连接两个实体的箭头标签,比如“首都”。
- 尾实体 t三元组里的终点,比如“北京”。
- d 维实数空间向量落在 d 维实数空间里,d 是嵌入维度,可以理解为坐标的“自由度”。
TransE 核心思想:把关系写成位移箭头
想象你是这座关系城市的快递员,手里有一本路牌手册。手册上写着:“从中国出发,沿'首都'箭头走一步,就能到北京。”TransE 的思路和这本手册一模一样:它认为关系就是一次位移。在向量空间里,把头实体 h 的坐标加上一个“位移向量” r,得到的结果应该和尾实体 t 的坐标重合。
用数学语言说,TransE 为每个三元组立下一条铁律:h + r ≈ t。比如,如果我们把“中国”的坐标和“首都”这个位移向量加起来,应当非常接近“北京”的坐标。反过来,如果把“北京”和“首都”加起来,绝不应该接近“中国”——因为方向反了。为了让机器能打分,TransE 又把“接近程度”翻译成一个可计算的数值:打分函数。它把平移后的位置与真实终点的距离算出来,距离越小,说明这条三元组越可信。
这样,知识推理就变成了“找最近点”:给定“中国”和“首都”,模型只要在所有实体里找出哪个坐标离“移动后的位置”最接近,就能预测出“北京”。
- 起点加位移把头实体向量与关系向量相加,得到“预期终点”的位置。
- 减去真实终点用预期终点减去真实尾实体的坐标,得到偏差向量。若二者重合,偏差为零。
- 求距离取偏差向量的范数,也就是它在空间中的长度,用来衡量偏差大小。
- 打分规则分数越小,三元组成立的可能性越高;分数越大,说明这条路画错了。
TransE 训练机制:错题本与负样本
地图不会自己变准确,模型需要靠“做题”来学习。想象一个备考的学生:他不仅要反复做对题(正样本),还要把错题抄进错题本反复订正。TransE 的训练也正是如此——它不断从地图上抽取真实存在的三元组作为正样本,同时故意把正确的路牌改坏,造出一些不存在的三元组作为负样本。
怎么造负样本呢?最简单的方法是负采样:拿一个真实三元组,随机把里面的头实体或尾实体换成另一个实体。比如把 (“中国”, “首都”, “北京”) 换成 (“中国”, “首都”, “巴黎”)——谁都知道这是错的。模型的任务,就是让正样本的打分变小,让负样本的打分变大,两者之间还要留出一道安全距离,这个距离叫边际 γ。于是损失函数长成了这样:
训练时,模型用梯度下降不断微调每个实体和关系向量的坐标,就像学生一遍遍订正错题。经过若干轮迭代,正样本的分数被压到接近零,负样本的分数被推到远处,地图上的路牌也就逐渐校准了。
- 正样本集合 S真实存在的三元组,代表“地图上已经画对的路线”。
- 负样本集合 S'被破坏后的错误三元组,代表“故意画错的路线”。
- 边际 γ一个超参数,规定正样本必须比负样本“好”多少才安全。γ 越大,要求越苛刻。
- 截断函数 max(0,·)只有当正负样本分得不够开时,损失才非零;已经合格的样本不再给模型添麻烦。
- 双重求和遍历所有正样本,再对每个正样本遍历其所有负样本,把损失累积起来。
TransE 的局限:直线箭头的地图死角
TransE 的“直线位移”思路虽然简单,却在地图上撞上了一面墙,那就是对称关系。想象关系“相邻”:如果 A 国和 B 国相邻,那么从 A 出发沿“相邻”箭头能到 B,从 B 出发沿同一个箭头也应当能回到 A。可 TransE 要求同一个位移向量同时满足两个方向——这就像告诉快递员“从 A 向前走一步到 B,再从 B 向前走一步回 A”,除非这条路有一个环形时空,否则根本做不到。
把两个方程写在一起就能看出矛盾:h + r ≈ t 和 t + r ≈ h 同时成立,把第一个式子代入第二个,唯一的结果就是 r 必须等于零向量。这意味着“相邻”这个关系在 TransE 眼里会退化成“原地不动”,而两侧的实体向量也会被压到一起,失去区分度。
同样的问题也出现在一对多关系上:一个父亲有多个孩子,TransE 却要求同一个 r 同时指向多个不同的 t,这会把实体向量挤得互相重叠。TransE 本质上是为“一对一关系”设计的直线模型,当地图变得复杂,直线箭头就盖不住了。
- 正向等式从 h 沿 r 走一步到 t,这是正向三元组的要求。
- 反向等式从 t 沿同一个 r 也能走回 h,这是对称关系的定义。
- 代入消元将两个等式联立,发现唯一自洽的解是 r 为零向量。
RotatE 核心:把路牌换成旋转表盘
面对对称关系的死结,RotatE 换了一个思路:不当快递员了,改当表盘修理工。它把每个实体想象成表盘上的一个刻度位置,而关系不是“走一段直线”,而是“旋转一个角度”。从“中国”这个刻度出发,把表盘顺时针转“首都”这个角度,恰好落在“北京”刻度上。这样一来,对称关系就变得自然了:从 A 转到 B 是转 θ 度,从 B 转回 A 也就是再转 θ 度,恰好是转一整圈回到原位(或者转过 180° 的镜像位置)。
为了实现旋转,RotatE 把实体和关系都请进了复数空间。复数有一个神奇性质:乘以一个模长为 1 的数,就相当于在复平面上旋转。RotatE 让每个实体成为一个复数向量,让每个关系变成一串“单位旋转量”,三元组的要求变成了逐元素旋转:h 的每个分量乘以 r 的对应分量,等于 t 的对应分量。
有了“旋转”这个新工具,RotatE 不仅保留了 TransE 的表达能力,还解锁了对称、逆、组合等复杂关系模式。接下来我们看看这些“舞步”是如何在表盘上跳出来的。
- 逐元素复数乘法符号 ∘ 表示把两个复数向量逐位相乘,每个维度各自旋转。
- 单位旋转量关系向量的每个分量写成 e 的 iθ 次方,本质是一个单位圆上的点,决定了旋转角。
- 模长约束每个分量的模长必须等于 1,确保关系只旋转、不拉伸,像一个只有角度的表盘指针。
- 旋转完等于终点h 旋转完应该落在 t 上,偏差越小三元组越可信。
关系模式能力:对称、反对称、逆与组合
如果说 TransE 只会迈着直线步子走路,那 RotatE 就像一位会跳四种交谊舞的舞者。第一种舞步是对称关系(如“相邻”):从 A 转到 B 是转 θ 度,从 B 转到 A 也要转 θ 度。两次旋转叠加后回到原位,即旋转角必须满足 2θ 是整圈——也就是 θ 等于 0° 或 180°。0° 表示两个实体重合,180° 则表示它们在表盘上关于圆心对称,正好表达“双向相邻”。
第二种舞步是逆关系(如“位于”与“包含”):如果“位于”是顺时针转 60°,那么它的逆关系“包含”就是逆时针转 60°。第三种是反对称关系(如“大于”):它不能同时成立,RotatE 通过把旋转角与它的逆角区分开来自然实现。第四种是组合关系(如“祖父 = 父亲 + 父亲”):从 A 转 θ₁ 到 B,再从 B 转 θ₂ 到 C,总旋转角就是两个角度相加。
靠着这四种舞步,RotatE 可以优雅地处理大量真实世界的关系类型,不再像 TransE 那样在对称关系上摔跟头。
- 对称条件旋转两次回到原样,要求 r 自乘等于单位元,即角度翻倍后是整圈。
- 角度解单位圆上满足 2θ 为整圈的角只有 0 和 π。
- 组合关系三步路的旋转角相加,对应关系向量的复数乘法。
训练评估:旋转地图的考试
模型学得好不好,需要一场公平的考试。想象你在关系城市里给模型出了一道题:给出起点“中国”和关系“首都”,让它从城市里所有地标中挑出终点。模型会默默给每个候选地标打分,然后把分数从小到大排个名次——正确答案“北京”排在第几名,就是它这道题的得分。真正评估时,我们不会只考一道题,而是把所有测试三元组都考一遍,然后看两个关键指标。
第一个指标叫 MRR(平均倒数排名):对每个测试三元组看正确答案的排名 rank,取倒数后求平均。如果正确答案总是排第一,MRR 就是 1;排名越靠后,对倒数的惩罚越重。第二个指标叫 Hits@10:统计正确答案排进前 10 名的三元组占比。它更宽容,只关心“正确答案是否出现在候选名单里”。
训练时的负采样也有讲究,伯努利负采样会根据关系类型动态调整替换头实体或尾实体的概率——就像考试出题时会根据知识点的性质决定“替换主语”还是“替换宾语”,避免总出同一种错误题型。
MRR=\frac{1}{|S|}\sum_{i=1}^{|S|}\frac{1}{rank_i},\qquadHits@10=\frac{1}{|S|}\sum_{i=1}^{|S|}\mathbb{I}[rank_i\le 10]- 排名 rank对每个测试三元组,模型给所有候选实体打分并排序,正确答案所在的位置就是 rank。
- 取倒数排名越靠前,倒数越大;第一名贡献满分 1,第十名只贡献 0.1。
- 求平均把所有测试样本的贡献加起来除以样本数,得到总体水平。
- 指示函数当条件成立时为 1,否则为 0,用来统计“排进前 10”的样本比例。
应用与展望:地图的自我生长
掌握了 TransE 与 RotatE,就像给关系城市装上了自动补路的机器人。在实际工程中,链接预测是最直接的应用:搜索引擎的知识图谱经常缺边,比如某位科学家获得某个奖项的三元组缺失,模型就能根据周围实体和关系推断出缺失的关系。推荐系统更是这类模型的用武之地——把“用户-物品-标签”建模成一个迷你知识图谱,用户就是起点,交互行为就是关系,模型负责预测他下一步可能喜欢的地标。
更妙的是,旋转模型还能完成多跳推理。想象地图上有两条路:从 A 沿“父亲”到 B,再从 B 沿“父亲”到 C,那么模型可以自动推出 A 沿“祖父”能到 C。这在 TransE 里要靠向量相加,在 RotatE 里就是旋转角直接相加,直觉而优雅。
回到选型上:如果图谱关系偏简单、多是“一对一”且非对称,TransE 轻便高效,足够胜任;如果图谱里充满“相邻”“朋友”“家人”这类对称或组合关系,RotatE 的旋转表盘几乎是为它们量身定做的。地图不会自己长出路来,但有了这两种模型,机器就能在坐标与角度之间,把路一条条补出来。
- 推理前提已知两条首尾相接的路线,相当于地图上的两道箭头。
- 推理结论可以推出从 a 到 c 存在一条新关系 r₃,即复合关系。
- 旋转合成新关系的向量等于两个旧关系向量逐元素相乘,对应角度相加。
AI 应用场景
知识图谱补全:给地图补上断头路
阶段:模型推理 / 链接预测
解决的问题:大型知识图谱(如电商商品图谱、百科图谱)往往存在大量缺失关系。传统方式依赖人工规则或正则模板,覆盖低、维护难。AI 使用 TransE/RotatE 对已有三元组训练嵌入,再对可疑的候选 (h, r, ?) 打分排序,自动补全缺失路径。
具体案例:某电商平台构建“商品-品牌-品类”知识图谱时发现,“某手机→所属品牌→某品牌”的边缺失。工程师用 RotatE 训练图谱嵌入,对每个商品预测“所属品牌”关系,排在第一的候选品牌命中率达 72%,补全了超过十万条缺失边。
推荐系统:为游客推荐下一个地标
阶段:特征表示 / 召回排序
解决的问题:传统协同过滤只利用“用户-物品”交互,冷启动严重。AI 将“用户-物品-标签-品牌”组织成语义图谱,用知识推理嵌入把用户表示成图谱中的实体向量,进而预测用户与未交互物品之间存在“点击/购买”关系的概率,作为召回依据。
具体案例:某资讯 App 将用户与文章、作者、话题构建知识图谱,用 TransE 训练后,对每个用户生成 Top-100 候选文章,再让 RotatE 对“用户→喜欢→文章”三元组打分排序。上线后 CTR 提升 18%,冷启动用户推荐效果显著改善。
医药知识发现:在药图上寻找隐藏捷径
阶段:关系预测 / 知识发现
解决的问题:药物-靶点-疾病之间的关联隐藏在大量文献中,人工整理极其耗时。AI 用知识推理模型在药物知识图谱上预测“药物→治疗→疾病”等关系,寻找传统检索难以发现的间接关联。
具体案例:某生物医药团队把药物、蛋白、疾病构建成知识图谱,用 RotatE 预测“某老药→治疗→某罕见病”的三元组,模型在公开基准上 Hits@10 达到 0.61,筛选出 37 个候选老药新用组合,其中 5 个进入体外实验验证。
Python 演示
import numpy as np np.random.seed(42) ents = ["中国", "北京", "法国", "巴黎", "A国", "B国"]rels = ["首都", "相邻"] triples = [ ("中国", "首都", "北京"), ("法国", "首都", "巴黎"), ("A国", "相邻", "B国"), ("B国", "相邻", "A国"),] def norm(v): return np.sqrt(np.sum(v * np.conj(v)).real) class TransE: def __init__(self, dim=16, margin=1.0, lr=0.1): self.dim = dim self.margin = margin self.lr = lr self.emb = {e: np.random.randn(dim) for e in ents} self.rel = {r: np.random.randn(dim) for r in rels} def score(self, h, r, t): return norm(self.emb[h] + self.rel[r] - self.emb[t]) def train(self, steps=800): for _ in range(steps): for h, r, t in triples: if np.random.rand() < 0.5: h2, t2 = str(np.random.choice(ents)), t else: h2, t2 = h, str(np.random.choice(ents)) p = self.emb[h] + self.rel[r] - self.emb[t] n = self.emb[h2] + self.rel[r] - self.emb[t2] if norm(p) - norm(n) + self.margin > 0: self.emb[h] -= self.lr * p self.emb[t] += self.lr * p self.emb[h2] += self.lr * n self.emb[t2] -= self.lr * n self.rel[r] += self.lr * (n - p) class RotatE: def __init__(self, dim=16, margin=1.0, lr=0.1): self.dim = dim self.margin = margin self.lr = lr self.emb = {e: np.exp(1j * np.random.uniform(0, 2 * np.pi, dim)) for e in ents} self.rel = {r: np.exp(1j * np.random.uniform(0, 2 * np.pi, dim)) for r in rels} def score(self, h, r, t): return np.linalg.norm(self.emb[h] * self.rel[r] - self.emb[t]) def train(self, steps=800): for _ in range(steps): for h, r, t in triples: if np.random.rand() < 0.5: h2, t2 = str(np.random.choice(ents)), t else: h2, t2 = h, str(np.random.choice(ents)) p = self.emb[h] * self.rel[r] - self.emb[t] n = self.emb[h2] * self.rel[r] - self.emb[t2] if np.linalg.norm(p) - np.linalg.norm(n) + self.margin > 0: self.emb[h] -= self.lr * p * np.conj(self.rel[r]) self.emb[t] += self.lr * p self.emb[h2] += self.lr * n * np.conj(self.rel[r]) self.emb[t2] -= self.lr * n self.rel[r] += self.lr * (n * np.conj(self.emb[h2]) - p * np.conj(self.emb[h])) self.rel[r] /= np.abs(self.rel[r]) t1 = TransE()t1.train()t2 = RotatE()t2.train() print("[TransE] 关系向量长度(首都应较大,相邻被削短):")for r in rels: print(" %s: %.3f" % (r, norm(t1.rel[r])))print("[RotatE] 关系旋转平均相位(度):")for r in rels: print(" %s: %.1f" % (r, np.degrees(np.angle(t2.rel[r]).mean())))
self.emb = {e: np.random.randn(dim) for e in ents}初始化每个实体的随机向量,相当于先给地标随便发个坐标。self.rel = {r: np.random.randn(dim) for r in rels}初始化关系向量,即给每条路先随机画一个箭头。p = self.emb[h] + self.rel[r] - self.emb[t]计算正样本的偏差向量,衡量 h+r 离 t 有多远。h2, t2 = str(np.random.choice(ents)), t随机替换头实体或尾实体来构造负样本,相当于故意画错一条路。if norm(p) - norm(n) + self.margin > 0:只有当正负样本距离不够远时才更新,类似错题本只订正做错的题。self.rel[r] /= np.abs(self.rel[r])每次更新后把关系向量强制拉回单位圆,确保它只做旋转不伸缩。np.angle(t2.rel[r]).mean()读取关系向量的平均相位角(单位弧度),乘 180/π 换算成角度,验证对称关系收敛到 180°。
常见误区
误区既然 TransE 能把实体和关系都嵌入向量空间,那它应该什么关系都能学,包括“相邻”“朋友”这类对称关系。
正解TransE 本质上假设关系是“一对一”的直线位移。对对称关系,它会被迫把关系向量压成零向量,导致实体表示退化;对一对多关系,同一个位移向量无法同时指向多个不同终点。它擅长的是“中国→首都→北京”这类非对称、一对一的确定性关系。
为何常见:因为 TransE 简单又出名,很多入门教程只讲它的平移公式,很少强调它适用的关系类型,让人误以为它是万能的。
误区听到“RotatE 用旋转建模关系”,就以为它像陀螺一样在三维空间里转,实体嵌入是三维向量。
正解RotatE 的旋转发生在复数平面,是二维旋转,而且是在每个嵌入维度上各自独立旋转。实体被表示为复数向量,关系向量每个分量的模长为 1,只带一个角度信息。它不是立体的“陀螺”,而是多个叠在一起的“表盘”。
为何常见:“旋转”这个词很容易让人联想到三维空间,但复数乘法的几何意义是二维平面旋转,两者完全是两码事。
误区维度是模型的容量,把嵌入维度设得很大,模型表达能力更强,训练出来的推理准确率一定更高。
正解嵌入维度确实影响容量,但维度越大,参数量越多,越容易在小知识图谱上过拟合——模型把训练三元组背下来,测试时反而表现更差。实际调参中,常用维度在 64~256 之间,需要结合图谱规模和数据量一起选择。
为何常见:深度学习里“大模型更强”的直觉深入人心,但知识图谱补全通常数据稀疏,容量过大的代价会超过收益。
误区构造负样本就是把三元组的头或尾随机换掉,换谁无所谓,反正都是不存在的错误三元组。
正解随机均匀采样容易生成“假阴性”——换出来的三元组可能恰好是图谱里缺失但真实存在的事实。更合理的做法是伯努利负采样:根据关系类型动态调整替换头尾的比例,降低假阴性干扰,让训练信号更干净。
为何常见:初学者只看到负样本是“随机”生成,忽略了不同关系的头尾分布差异,直到模型训练不稳定才察觉问题。
面试题
Q1. TransE 的核心思想是什么?
- A.用向量加法表示关系← 正确答案
- B.用复数乘法表示关系
- C.用矩阵乘法表示关系
- D.用注意力机制表示关系
答案:A。TransE 把关系建模为头实体到尾实体的位移向量,打分时计算 h+r 与 t 的距离,属于向量加法。复数乘法是 RotatE 的建模方式,矩阵乘法和注意力机制都不是 TransE 的核心。
Q2. RotatE 中实体和关系被表示在哪个空间?
- A.实数向量空间
- B.复数向量空间← 正确答案
- C.概率分布空间
- D.图卷积网络空间
答案:B。RotatE 利用复数乘法实现旋转,实体是复数向量,关系的每个分量是单位复数 e^{iθ}。实数向量空间是 TransE 的领地,概率空间和图卷积空间与 RotatE 无关。
Q3. 对称关系“相邻”在 TransE 中会迫使关系向量发生什么?
- A.趋于零向量← 正确答案
- B.趋于无穷向量
- C.保持随机向量
- D.变成正交向量
答案:A。对称关系要求 h+r≈t 和 t+r≈h 同时成立,联立可得 r≈0。TransE 无法表达“双向可达”,只能让关系向量退化,这是它的固有局限。
Q4. RotatE 对关系向量模长的约束是什么?
- A.恒为 1← 正确答案
- B.恒为 0
- C.与实体相同
- D.几乎无约束
答案:A。RotatE 的关系向量每个分量都为 e^{iθ},模长恒为 1,所以关系只提供旋转角度,不改变实体的模长。这是“旋转而非拉伸”的关键约束。
Q5. RotatE 中关系“对称”要求旋转角满足什么条件?
- A.旋转角为 0 或π← 正确答案
- B.旋转角恒为π/2
- C.旋转角为任意值
- D.旋转角与实体无关
答案:A。对称关系要求 r∘r=1,即 e^{i2θ}=1,解得 θ=0 或 π。θ=0 表示实体重合,θ=π 表示实体关于圆心对称,两者都能表达对称关系。
Q6. RotatE 中复合关系 r3=r1∘r2 对应旋转角如何变化?
- A.两个角度相加← 正确答案
- B.两个角度相乘
- C.后角减前角
- D.两个角度相除
答案:A。复数乘法对应角度相加,e^{iθ1}×e^{iθ2}=e^{i(θ1+θ2)}。所以“祖父 = 父亲 + 父亲”这类组合关系在 RotatE 中就是旋转角直接相加。
Q7. TransE 的局限有哪些?
- A.难以建模对称关系← 正确答案
- B.一对多关系易冲突← 正确答案
- C.自反关系易退化← 正确答案
- D.能完美建模所有关系
答案:ABC。TransE 用单一位移向量表达关系,对称关系迫使向量为零,一对多(一个父亲多个孩子)让同一个 r 指向不同终点,自反关系同样退化。它并非万能的,D 错误。
Q8. 伯努利负采样比均匀负采样强在什么地方?
- A.按关系类型替换头尾← 正确答案
- B.删除错误的三元组数据
- C.增大嵌入向量的维度
- D.减少训练所需的数据量
答案:A。伯努利负采样根据关系是更偏向“替换头”还是“替换尾”来动态决定采样方式,减少假阴性样本,让训练信号更干净。它不删除数据、不改变维度,也不减少样本量。
Q9. 评估知识图谱链接预测常用的指标有哪些?
- A.平均倒数排名 MRR← 正确答案
- B.命中前10比例 Hits@10← 正确答案
- C.机器翻译指标 BLEU
- D.语言模型困惑度指标
答案:AB。MRR 衡量正确答案平均排名的倒数,Hits@10 衡量正确答案进入前 10 的比例,都是链接预测的标准指标。BLEU 用于机器翻译,困惑度用于语言模型,与知识图谱推理无关。
Q10. 若“北京→位于→中国”与“中国→首都→北京”都成立,则“位于”与“首都”的旋转角是什么关系?
- A.互为相反数关系← 正确答案
- B.完全相同的关系
- C.相差九十度的关系
- D.毫无关联的两个角
答案:A。从北京转 θ₁ 到中国,从中国转 θ₂ 到北京,两次旋转正好回到起点,所以 θ₁+θ₂=0,即“位于”和“首都”互为逆关系,旋转角互为相反数。