7. 异构图与知识图谱
1. 从同质图到异构图
1.1 同质图的基本假设
同质图(Homogeneous Graph)是早期图神经网络研究的主要对象,其核心假设是整张图只包含一种节点类型和一种边类型。形式化地,图
当图规模较大时,这种无差别的聚合会导致两个显著问题:结构信息丢失(不同邻居的重要性无法区分)和类型偏差累积(不同语义来源的邻居被混合同化)。这在现实场景中是严重的建模缺陷。
1.2 异构图的定义与数学刻画
异构图(Heterogeneous Graph)的核心特征是节点类型和边类型均为多种。形式化地,设节点类型集合为
其中
典型场景举例:在学术网络中,节点类型包括 Paper、Author、Venue、Term,边类型包括 “撰写”、“发表在”、“引用”、“包含” 等。在电商网络中,节点类型包括 User、Item、Brand、Category,边类型包括 “购买”、“浏览”、“属于” 等。
1.3 元路径(Meta-Path)
元路径是异构图建模中最核心的概念之一,用于描述不同类型节点之间的高阶语义关系。一条元路径定义了节点类型序列之间的复合关系。
设
其中每条边满足
举例:在ACM学术网络中,元路径 “Author-Paper-Venue-Paper-Author”(APVPA)表示两个作者在同一 venue 发表论文的语义关系。元路径 “User-Item-Brand-Item-User”(UIBIU)表示两个用户购买过同一品牌的商品。
元路径的重要性体现在三个方面:
- 语义捕获:直接编码了节点间的复合语义,如同 venue 发表、同品牌购买等。
- 邻居定义:在异构图中,单跳邻居包含过多噪声,元路径提供了一种语义过滤机制来确定相关邻居。
- 结构表示:元路径实例可以聚合为路径级别的表示向量,用于下游任务。
1.4 同质图与异构图的对比
| 维度 | 同质图 | 异构图 |
|---|---|---|
| 节点类型数 | 1 | |
| 边类型数 | 1 | |
| 邻居定义 | 基于拓扑的一阶邻居 | 基于类型匹配的多阶语义邻居 |
| 聚合策略 | 统一AGG | 通常按类型或元路径分组后分别聚合 |
| 表示学习挑战 | 规模大、结构稀疏 | 类型异质性、元路径选择、稀疏性更严重 |
2. 知识图谱基础
2.1 实体、关系与三元组
知识图谱(Knowledge Graph,KG)是一种特殊形式的异构图,其节点代表实体(Entity),边代表关系(Relation),整张图由大量的三元组(Triple)
从图结构角度看,知识图谱是一个有向图,边的方向性由
知识图谱的构建目标是将人类知识结构化地存储为可计算的形式,使得机器能够进行推理和问答。典型的公开知识图谱包括 FreeBase、WikiData、YAGO、DBpedia,以及中文的CN-DBpedia、CN-Probase等。
2.2 链接预测(Link Prediction)
链接预测是知识图谱的核心任务之一,其目标是根据已有三元组推断未知三元组。这对应着 “知识补全”(Knowledge Graph Completion)任务。
给定头实体
2.3 实体对齐(Entity Alignment)
实体对齐旨在识别不同知识图谱中指向同一真实世界实体的节点,并将其融合。这一步骤是跨语言知识图谱构建和知识融合的关键环节。
实体对齐面临的核心挑战包括:不同图谱中的实体表示形式不同(如 “Beijing” vs “北京”)、属性描述不同、关系结构不同。早期方法依赖人工定义的映射规则,当前主流方法则采用基于表示学习的对齐技术,将不同图谱的实体映射到统一向量空间后再进行匹配。
3. 知识图谱嵌入与三元组打分函数
3.1 问题定义
知识图谱嵌入(Knowledge Graph Embedding,KGE)的目标是为每个实体
3.2 三元组打分函数的一般形式
打分函数的一般形式可以写作:
其中
3.3 平移型打分函数(Translational Score)
TransE(Bordes et al., 2013)是最经典的平移型模型。其核心思想是**:头实体加上关系向量应该接近尾实体向量**,即:
其中
TransE 的优势在于参数少、训练速度快、可解释性强(关系被建模为平移向量)。但其局限性也很明显:无法有效处理一对多和多对一关系。例如,当存在多条
TransH 通过让实体在关系的超平面内表现不同的角色来缓解这一问题,TransR 则通过在特定关系空间中建模来实现更细粒度的区分。
3.4 双线性打分函数(Bilinear Score)
双线性模型的核心是在头实体和尾实体之间引入一个与关系相关的线性变换:
其中
DistMult(Yang et al., 2015)是简化版本,强制
这等价于将实体表示的每个维度视为关系特定的相关性权重。
ComplEx(Trouillon et al., 2016)引入复数嵌入来解决对称关系的建模问题:
复数空间中头尾实体的非对称内积使得 ComplEx 能够同时建模对称关系和反对称关系,显著扩展了表达能力。
3.5 神经网络型打分函数(Neural Score)
神经网络型模型通过更复杂的非线性交互来提升表达能力。
ConvE(Dettmers et al., 2018)使用二维卷积神经网络建模头尾实体与关系之间的交互:将头实体和关系拼接为
RotatE(Sun et al., 2019)将关系建模为复数空间中的旋转操作:
其中
神经符号混合方法(如 Neural LP、LRP)将神经网络的可学习性与逻辑规则的可解释性结合,通过软注意力或加权路径聚合来选择重要的推理路径。
3.6 各打分函数对比
| 模型类型 | 代表模型 | 核心机制 | 优势 | 局限 |
|---|---|---|---|---|
| 平移型 | TransE, TransH, TransR | 可解释、参数少 | 一对多/多对一建模差 | |
| 双线性型 | DistMult, ComplEx | 关系特异性强 | 参数量较大 | |
| 神经网络型 | ConvE, RotatE | 非线性交互 | 表达能力强 | 可解释性弱 |
4. 负采样训练
4.1 为什么需要负采样
知识图谱嵌入的训练基于对比学习范式:正样本三元组
负样本的生成方式直接影响模型的学习效果。理想的负样本应当与正样本足够相似(“challenging negatives”),但又不能过于简单导致模型学到的是简单的 trivial patterns。
4.2 负采样策略
均匀负采样(Uniform Negative Sampling):随机替换头实体或尾实体,生成
伯努利负采样(Bernoulli Negative Sampling):根据关系的类型(一对多或多对一)动态调整替换头实体或尾实体的概率。对于一对多关系(如 “hasWinner”),替换头实体更难生成 fake negatives,因此提高头实体替换概率。这一策略由 TransE 原论文提出,能有效缓解训练噪声问题。
对抗负采样(Adversarial Negative Sampling):利用已有模型生成”高质量”负样本——即模型认为真实但实际错误的三元组。这一思路与 GAN 结合产生了 KBGAN 等模型。
self-adversarial 负采样(RotatE 采用):以当前模型参数生成的负样本分布作为权重,对负样本进行重要性加权:
其中
4.3 训练目标
常用的训练目标包括:
边际排名损失(Margin Ranking Loss):
其中
二元交叉熵损失(Binary Cross-Entropy Loss):
5. 异构消息传递:类型区分机制
5.1 异构消息传递的核心思想
在同质图中,所有邻居发送的消息使用相同的变换权重;而在异构图中,不同类型的邻居应当发送不同语义的消息,使用不同的变换参数。这要求消息传递机制能够感知节点和边的类型信息。
设节点
其中
5.2 类型区分的具体实现
基于类型特定变换的参数隔离:为每种关系类型
这样不同类型边上的消息流经不同的线性变换,语义信息在源头就被区分了。
基于注意力机制的加权聚合:采用异构注意力为不同类型的邻居分配不同的重要性权重:
其中
基于元路径的语义聚合:在 HAN(Heterogeneous Graph Attention Network)等模型中,元路径定义了节点间消息传递的路径规则。每条元路径对应一个语义空间,模型在该空间内独立计算注意力并聚合:
其中
5.3 为什么元路径在异构图里至关重要
异构图中的直接邻居关系通常包含过多噪声。例如,在电商图中,用户
元路径通过定义有意义的节点类型序列来过滤噪音、建立语义相关的邻居关系。它本质上是一种人工设计的语义归纳偏置(inductive bias),将领域知识注入模型。
此外,元路径捕获了图的高阶结构信息。直接边是一阶关系,元路径实例化后的路径是二阶乃至更高阶的关系表示。在推荐系统中,“用户购买过某品牌商品” 这种高阶协同信号,通过元路径 UIBIU(User-Item-Brand-Item-User)可以有效表达,而直接邻居信息则无法体现。
6. 工程流程
6.1 知识图谱构建流程
一个完整的知识图谱构建工程流程包含以下关键阶段:
数据采集与Schema设计:从结构化数据(数据库、API)、半结构化数据(日志、网页)、非结构化文本(自然语言)中抽取实体和关系。Schema 定义了知识图谱的顶层类别和关系类型骨架,是后续抽取任务的指引。
实体抽取与消歧:从非结构化文本中识别实体mention,并将其消歧到标准实体(Entity Recognition + Entity Linking)。常见的消歧方法包括基于候选实体集排序、基于图结构的消歧(如 PageRank)、基于表示学习的消歧。
关系抽取:从文本中抽取实体对之间的关系类型。这涉及 sentence-level relation classification 和 cross-sentence relation extraction。当前主流方法结合预训练语言模型(如 BERT)和序列标注/分类模型。
三元组清洗与质量控制:构建初期抽取出的大量三元组往往包含噪声,质量控制环节需要:删除冗余三元组、修复类型错误、验证矛盾的三元组(如同时存在
6.2 实体对齐(Entity Alignment)
实体对齐在工程中有两个主要场景:跨图谱对齐(将不同来源的知识图谱进行融合)和跨语言对齐(在双语知识图谱间建立映射)。
基于表示学习的对齐流程:
- 分别对两个知识图谱独立训练 KGE 模型,得到各自的实体嵌入
和 。 - 通过监督或无监督对齐训练,将两个空间的嵌入映射到统一语义空间。
- 在统一空间中通过最近邻搜索(KNN)或阈值判断来匹配对应实体。
监督信号通常来自已有的对齐种子(seed alignment pairs),无监督方法则利用图结构自举(bootstrapping)不断扩展对齐集合。
工业界挑战:规模化问题(数亿级实体)、噪声对齐问题(部分匹配但不完全相同)、跨语言对齐中的表达差异问题。
6.3 关系清洗(Relation Refinement)
关系清洗解决的是”关系混淆”问题。同一语义可能存在多种表面命名(如 “丈夫” 和 “配偶”),或不同语义使用了同一关系名称。清洗工作包括:
- 关系合并:将语义相近的关系类型统一归并(如将 “父亲” 和 “爸爸” 合并为 “父亲”)。
- 关系区分:将模糊关系拆分为细粒度子关系(如将通用的 “相关” 关系拆分为 “属于”、“制造”、“替代” 等明确关系)。
- 类型约束学习:通过统计学习自动推断每种关系的头尾实体类型约束,用于检测错误三元组和辅助下游推理。
6.4 负样本生成工程
在大规模知识图谱(如 Wikidata 包含数千万实体)上进行训练时,负样本生成的效率至关重要。
空间复杂度:如果每次采样都遍历所有候选实体,复杂度为
实践策略:
- 候选池采样(Candidate Pool Sampling):对每个关系
构建固定的负样本候选池,采样时只从候选池中选取,避免 遍历。 - 批内负采样(In-batch Negative Sampling):在同一个训练 batch 内,利用其他正样本的头实体或尾实体作为当前样本的负样本,通过矩阵运算批量生成,GPU 友好。
- 自适应负采样:初期使用较简单的均匀负采样,随着模型训练深入逐渐切换到对抗/自对抗负采样,提供更具挑战性的学习信号。
6.5 处理稀疏关系与长尾实体
稀疏关系问题:部分关系类型在图中出现次数极少,模型难以学到有效表示。应对策略包括:
- 关系级别的数据增强:通过规则或知识推理补全缺失的三元组(如传递性规则 “A的朋友是B,B的朋友是C” 则 A 可能是 C 的朋友)。
- 基于嵌入正则化:对稀疏关系使用更保守的参数初始化和更大的正则化项,防止过拟合。
- 基于对比学习:将稀疏关系的嵌入与相似稠密关系的嵌入对齐,实现知识迁移。
长尾实体问题:少数实体(如热门实体)在图中具有极高度数,而大量实体(如小众品牌、冷门作者)只有很少的邻居信息。
- 邻居信息补全:通过实体分类、属性推断等方法补充实体的间接关系。
- 元路径感知的邻居扩展:即使直接邻居很少,通过元路径定义的高阶可达路径仍能获取丰富的语义信息。
- 全局结构编码:利用知识图谱嵌入捕获实体的全局结构位置,将高度数实体和长尾实体的嵌入分布对齐。
7. 知识图谱嵌入与 GNN 的融合
7.1 关系型图神经网络的困境
标准 GNN(如 GCN、GraphSAGE、GAT)在同质图上效果显著,但在直接迁移到知识图谱时面临挑战:
- 边类型未利用:标准 GNN 对所有边使用相同的聚合权重,知识图谱中的多种关系类型被无差别对待。
- 关系语义未显式建模:GNN 的邻居聚合不包含关系特定的语义变换,无法捕获 TransE 等方法所建模的关系平移语义。
7.2 KGE 与 GNN 的融合路径
关系增强型 GNN:将 KGE 中的打分函数思想引入 GNN 的消息传递机制。例如 R-GCN(Relational GCN):
其中
KGE 作为 GNN 的初始化或正则化:先用 KGE 方法(如 TransE)预训练得到实体嵌入,再将这些嵌入作为 GNN 的初始节点特征。这种方式利用了 KGE 已经建模的结构化知识来增强 GNN 的表达能力。
联合训练架构:将 KGE 的链接预测目标与 GNN 的节点表示目标联合优化,使得节点嵌入同时捕获局部图结构(通过 GNN)和全局关系语义(通过 KGE)。典型做法是在 GNN 的各层之间插入 KGE 打分约束作为正则项。
7.3 工业应用中的融合策略
在工业推荐系统和搜索系统中,KGE 与 GNN 的融合通常不追求在链接预测任务上达到 SOTA,而是服务于下游推荐/检索任务。常见的落地策略包括:
- 实体 Embedding 作为特征:将 KGE 训练得到的实体嵌入作为推荐模型(如 DIN、DIEN、GraphSAE)的输入特征,直接参与 CTR 预估或排序模型的训练。
- 关系路径作为辅助信号:将知识图谱中的多跳路径编码为路径级别的 embedding,作为用户-物品交互建模的补充上下文信息。
- 结构感知注意力:借鉴 GNN 的注意力机制,在 KGE 的打分函数中引入与图结构相关的注意力权重,使模型在关注全局 KG 语义的同时感知局部图结构。
8. 知识图谱在检索、推荐与问答中的应用
8.1 检索系统中的知识图谱
语义增强检索:传统 BM25 等稀疏检索方法仅依赖词项匹配,无法理解查询的深层语义。知识图谱通过以下方式增强检索:
- 实体链接增强查询理解:将用户查询文本中的实体 mention 链接到 KG 中的标准实体,扩展查询的语义表示。
- 实体相关性反馈:根据 KG 中的关系路径(如查询实体与文档中实体之间的关联强度)重排检索结果。
- 跨语言知识检索:在多语言场景下,通过跨语言实体对齐,实现跨语言的语义检索。
搜索排序中的 KG 特征:在 LTR(Learning to Rank)框架下,KG 衍生的特征(如实体的流行度、查询实体与候选文档实体的 KG 距离、实体类型的语义匹配度)被作为排序特征输入给 GBDT 或神经网络排序模型。
8.2 推荐系统中的知识图谱
推荐系统与知识图谱的结合是工业落地最成熟的领域之一。核心思想是:知识图谱提供了丰富的辅助信息,使推荐系统能够理解物品之间的语义关联,实现跨领域、跨类型的协同推荐。
知识增强的推荐流程:
- 图谱构建:以用户-物品交互数据为基础,融入物品的 side information(属性、类别、描述文本),构建 Item KG。
- 实体链接与关系扩展:将用户行为序列中的物品映射到 KG 实体,通过 KG 中的关系路径发现用户的潜在兴趣。
- 路径推荐与推理:基于用户历史交互的实体,通过 KG 中的多跳路径发现新的候选物品。例如,用户购买过品牌 A 的手机,通过 KG 路径 “手机→使用→芯片X→被用于→手机Y” 可以发现潜在兴趣物品。
典型工业用法:
- 协同过滤的知识增强:传统矩阵分解只依赖用户-物品交互矩阵,引入 KG 后可以将交互信息在实体间沿着关系路径传播,解决新用户和新物品的冷启动问题。
- 序列推荐:在 DIN、SIM 等序列推荐模型中,将 KG 作为外部知识库,对用户当前交互物品进行语义扩展,捕获用户的隐式兴趣转移。
- 多任务联合学习:在多任务推荐框架(如 MMOE、PLE)下,KG 嵌入作为共享表示层,同时服务于 CTR 预估、CVR 预估、物品多样性控制等多个子任务。
8.3 问答系统中的知识图谱
知识图谱问答(KGQA)是利用知识图谱进行自然语言问答的核心技术。
流程:
- 实体识别与链接:从自然语言问题中识别 query subject 并链接到 KG 实体。
- 关系检测:识别问题中询问的关系类型(如 “谁是…的父亲” 中的 “父亲” 关系)。
- 子图查询与推理:在 KG 中查询以 query subject 为中心的子图,根据检测到的关系路径执行推理,提取答案候选。
- 答案排序与选择:对候选答案进行排序,返回 top-k 结果。
融合预训练语言模型的 KGQA:当前主流方法(如 EmbeddingQA、 GraftNet、 PullNet)将知识图谱的结构化信息与预训练语言模型(如 BERT、ERNIE)的文本理解能力结合:使用 LM 对自然语言问题进行语义编码,使用 KG 结构进行推理,两者互补。
9. 异构图在工业推荐里的典型用法
9.1 工业异构图的设计模式
工业推荐系统中的异构图通常以User-Item 二分图为基础,逐步扩展出丰富的辅助节点和边类型:
- 节点类型:User、Item、Brand、Category、Tag、Supplier、POI(Point of Interest)、Content-ID 等。
- 边类型:点击、购买、收藏、搜索、浏览、属于、品牌授权、类目归属、标签标记等。
这种多类型节点和边构成的异构图,能够同时建模协同信号(User-Item 交互)、内容语义(Item 的文本/图像特征)、分类层级(Item-Category 归属关系)。
9.2 工业异构图建模的典型范式
GraphSage + 类型区分:使用 GraphSage 的邻域采样策略,对不同类型的边使用不同的采样概率和聚合权重。品牌、类目等高阶语义关系通常给予更大的采样权重,以捕获跨领域的兴趣迁移。
异构注意力网络(HAN)的简化落地:完整 HAN 在工业场景下面临计算开销问题。实践中通常采用简化的两阶段建模:第一阶段按节点类型或元路径独立建模,得到各语义空间的中间表示;第二阶段通过轻量级的跨空间注意力融合得到最终表示。
元路径在工业推荐中的工程处理:完整枚举所有元路径在大规模工业图中不现实。工程中通常通过业务规则预定义核心元路径(如 UIBIU 购品牌路径、UICI 购类目路径),然后在这些预定义路径上运行消息传递。
实时 GNN 推理的工程挑战:全图 GNN 的前向传播在大规模工业图(数十亿节点)上无法实时完成。主流解决方案包括:
- 图采样与聚合:如 PinSage 的随机游走采样策略,将 GNN 计算限制在每个节点的局部子图上。
- 知识蒸馏与轻量化:将大模型 GNN 的表示能力蒸馏到小模型中,降低在线推理延迟。
- 离线图嵌入 + 在线计算分离:使用 GraphGear、GNNAutoScale 等系统将 GNN 计算分为离线预处理(生成节点嵌入)和在线查询两个阶段。
9.3 异构图推荐系统的工程注意事项
- 类型偏置的合理建模:不同边类型的数据量可能相差数个量级(如购买行为远少于浏览行为),直接混合会导致数据量大的类型主导梯度。应当使用采样率归一化或类型特定的学习率调整。
- 冷启动实体的特殊处理:新用户、新物品在异构图中的邻居极少,直接使用 GNN 聚合效果差。应当结合 content-based 特征(文本 embedding、图像 embedding)和基于 KG 关系推断的间接邻居。
- 动态图更新的挑战:用户行为实时更新,但全图 GNN 无法高频更新。实践中通常采用滑动窗口局部更新(仅更新相关局部子图)结合定期全量更新的策略。
10. 知识图谱训练流程图
┌─────────────────────────────────────────────────────────────┐
│ 数据层 │
│ 结构化数据 │ 半结构化日志 │ 非结构化文本 │ 用户行为日志 │
└────────────────────────┬────────────────────────────────────┘
│ ETL / 抽取
▼
┌─────────────────────────────────────────────────────────────┐
│ 原始三元组集合 │
│ (h, r, t) 初始集合 │
└────────────────────────┬────────────────────────────────────┘
│ 实体抽取 / 关系抽取 / 消歧
▼
┌─────────────────────────────────────────────────────────────┐
│ 粗构建知识图谱 │
│ 实体集、关系集、初步三元组 │
└────────────────────────┬────────────────────────────────────┘
│ 质量评估 / 人工审核
▼
┌─────────────────────────────────────────────────────────────┐
│ 实体对齐与关系清洗 │
│ 跨图谱对齐 │ 跨语言对齐 │ 关系合并 │ 矛盾检测 │
└────────────────────────┬────────────────────────────────────┘
│ 对齐融合 / 规则清洗
▼
┌─────────────────────────────────────────────────────────────┐
│ 精构建知识图谱 │
│ 高质量实体集、关系集、三元组 │
└────────────────────────┬────────────────────────────────────┘
│ KGE 训练
▼
┌─────────────────────────────────────────────────────────────┐
│ 知识图谱嵌入 │
│ 实体嵌入 {e_i} │ 关系嵌入 {r_k} │ 打分函数 f(h,r,t) │
└────────────────────────┬────────────────────────────────────┘
│
┌──────────────┴──────────────┐
▼ ▼
┌──────────────────┐ ┌──────────────────────────────┐
│ 下游应用任务 │ │ 链接预测 / 实体分类 / 推理 │
│ │ │ 作为知识增强特征注入推荐系统 │
│ 推荐系统特征工程 │ │ 问答系统语义理解 │
│ 检索结果重排 │ │ 搜索排序 KG 特征 │
└──────────────────┘ └──────────────────────────────┘
11. 异构图建模注意事项
11.1 类型信息的有效利用
- 避免类型信息的过早丢失:在浅层 GNN(如 1-2 层)中就开始丢失类型信息,因为聚合操作会混合不同类型的邻居。应对方法是使用更深的类型感知层或增加类型特定参数。
- 元路径的选择需要业务理解:元路径数量随路径长度指数增长,但不是所有元路径都有利于下游任务。应当结合业务知识和任务相关的图分析(如路径重要性评估)来筛选关键元路径。
11.2 计算可扩展性
- 异构图的邻接矩阵存储:异构图的不同边类型需要独立存储,内存消耗远大于同质图。在实践中通常采用 CSR/CSC 格式的稀疏矩阵分块存储。
- 采样策略的设计:异构图的采样需要同时考虑节点类型和边类型,确保每个 batch 内各类型节点的比例合理。推荐使用分层采样(hierarchical sampling)或类型感知的邻域采样。
11.3 评估与验证
- 链接预测的评估指标:常用 MRR(Mean Reciprocal Rank)、Hit@k@10/3/1 来评估链接预测效果。需要注意训练集和测试集之间不存在知识泄露。
- 实体分类的评估:对于节点分类任务,需要注意测试集中各节点类型的分布是否与训练集一致,避免因类型不均衡导致的虚高准确率。
12. 总结
知识图谱和异构图的核心价值在于将离散的结构化关系转化为可计算的连续向量表示。异构图通过区分节点和边的类型,能够表达比同质图丰富得多的语义信息;知识图谱通过预定义的实体-关系-三元组结构,将人类知识组织为可推理的计算图。
图学习技术(尤其是 GNN 和 KGE)在这一领域的关键作用体现在三个层面:表示层——将图中的拓扑结构和语义关系编码为低维向量;推理层——通过消息传递和打分函数实现多跳关系推理;应用层——通过嵌入向量为推荐、检索、问答等下游任务提供结构化知识的语义增强。
在实际工业场景中,异构图和知识图谱的建模需要充分考虑计算效率、数据稀疏性和长尾分布等工程约束,这要求算法设计者在模型表达力和系统可扩展性之间找到合适的平衡点。