图神经网络基础入门学习路线(上)

写在前面的话:填坑了,之前一直想梳理自己的图神经网络的体系。这次梳理的是仅涉及从静态同质图网络到静态的异质图神经网络的节点表征学习,并且只是提取其空间结构信息,图中节点是不包含属性特征的。有属性的静态图神经网络准备到基础入门(下)中去梳理。本次梳理涵盖的模型有1.word2vec 2.deepwalk 3.node2vec 4. LINE 5.SDNE 6.metapath2vec 7.Trans系列(TransE、TransH、TransR、TransD)

动机: 作为一个小白入门图神经网络,走过不少坑之后如今回过头去整理之前学过的东西,捣鼓出来一个打怪升级一般的学习路线,也可以用来自查自己的知识体系是否完备。设计思路是模型进行串联,从简单到复杂,并尽可能的体现出技术和算法的传承和发展的感觉。 在每个模型后面列出来了我认为掌握的一些有启发的思想或者是关键技术,我尽可能的用简短的话来说明不同模型之间的联系以及对于每个模型中的关键技术要理解到什么程度这样才能推得动后续模型的学习 ,不会卡壳存在不理解的地方。在自学的过程中我也看过了很多资料和学习笔记,我经过整理和筛选放上了我认为最好的学习参考资料供大家学习,因此我不会着重自己再去把技术和原理再说一遍。

此外,语言文字无法完全每个模型具体的计算流程。 Talk is cheap,Show me the code。 以上模型在github上都能找到论文作者提供的源代码,在学习过程中我对所有的模型都进行了复现,并对代码写了易读的中文注释。建议大家都去读一下源码,特别是要去把数学公式与代码块对应起来,知道模型的数据集是怎么构建的,数据流是怎么流的。推荐利用deepseek等大模型对代码不理解的地方去提问和学习,这比我之前学代码的时候效率提高太多了。感谢这个时代!


1 word2vec

NLP领域的词向量技术为图嵌入奠定基础。 通过文本序列来学习单词的向量表示,经典必读文章,里面的用到的技术和训练框架启发了node2vec图节点的表征。要了解词向量的生成,比如分布式表示和One-Hot的区别,词向量的意义。

学习资料:

[1] v_JULY_v: 如何通俗理解Word2Vec (23年修订版)
[2] 深度之眼: 深度之眼5小时精讲 word2vec

1.1 skip-gram和CBOW

Skip-Gram通过中心词预测上下文(适合稀疏数据),而CBOW通过上下文预测中心词(适合高频词)。需理解两者的数学表达(如Softmax概率分布)及适用场景

1.1.1 Skip-Gram :

关键思想:用中心词预测周围词,通过窗口滑动构建词对(“king” → “queen”, “castle”)

数学本质:最大化上下文条件概率 ∏ w ∈ C o r p u s ∏ c ∈ C o n t e x t ( w ) p ( c ∣ w ) \prod_{w \in Corpus} \prod_{c \in Context(w)} p(c|w) wCorpuscContext(w)p(cw)

适用场景:低频词学习(如专业术语)

1.1.2 CBOW :

关键思想:用上下文词预测中心词,适合高频词(如"the", “is”)

数学对比:Softmax计算量相同,但输入为上下文词向量的平均

技术传承:Skip-Gram的窗口预测机制直接启发DeepWalk的节点序列建模

1.2 nagative sampling和层次softmax

1.2.1层次Softmax:

本质:用哈夫曼树编码词频,高频词路径更短)

计算优化:将复杂度从 O ( V ) O(V) O(V)降到 O ( log ⁡ V ) O(\log V) O(logV)

1.2.2 Negative Sampling:

本质:将多分类问题转为二分类(正例+采样负例)

数学表达 log ⁡ σ ( v c ⋅ v w ) + ∑ k = 1 K E n k ∼ P ( w ) [ log ⁡ σ ( − v n k ⋅ v w ) ] \log \sigma(v_c \cdot v_w) + \sum_{k=1}^K \mathbb{E}_{n_k \sim P(w)}[\log \sigma(-v_{n_k} \cdot v_w)] logσ(vcvw)+k=1KEnkP(w)[logσ(vnkvw)]

技术传承:Node2Vec/LINE均沿用此技术解决计算瓶颈

学习资料:
[3] 热血老男孩: 优化技巧:负采样和分层softmax

2 Deepwalk

首次将词向量框架迁移到图结构 ,理解图数据中节点表征的思想是如何从文本启发到图数据的

学习资料:

[4] 总是重复名字我很烦啊: DeepWalk,随机游走实现图向量嵌入,自然语言处理与图的首次融合
[5] 同济子豪兄: 同济子豪兄deepwalk逐句精读

2.1 random walk

核心流程

  1. 从节点A出发,均匀采样邻居B
  2. 从B出发重复N次得到序列[A,B,D,C,…]
  3. 将序列输入Skip-Gram模型 :游走序列模拟文本序列,节点ID视为"单词" ,窗口大小决定节点上下文范围 。但是这样的话就无法区分"结构等价"节点(如两个社区的中心节点)

3 node2vec

通过可控游走策略平衡局部与全局信息 。 基于Word2Vec的Skip-Gram模型,将节点序列视为“句子”,用上下文预测节点。通过调整游走策略生成多样化的节点序列,适应图结构的复杂性。

3.1 alias采样

用空间换时间,将非均匀采样复杂度从 O ( N ) O(N) O(N)降到 O ( 1 ) O(1) O(1)

实现步骤

  1. 计算各边权重(由p/q参数调节)
  2. 构建别名表(Alias Table)和概率表
  3. 生成随机数查表快速采样

学习资料:
[6] BIT_666: 深度学习 - 32.GraphEmbedding Alias 采样图文详解

3.2 biase random walk与random walk对比分析

返回参数p:控制回溯概率(p越小,越倾向探索新区域)

进出参数q:控制BFS/DFS倾向(q>1时类似BFS,捕捉结构相似性;q<1时类似DFS,捕捉同质性)

示例: 当q=0.5时,游走路径可能为[A→B→C→D→E](深度探索) , 当q=2时,路径可能为[A→B→A→C→B](广度徘徊)

学习资料:

[7] 厚德载物丶: 从入门DeepWalk到实践Node2vec

3.3 BFS与DFS以及超参数p和q是如何

同质性:相邻节点向量相似(如社交网络中直接好友),通过q<1的DFS游走增强

结构相似性:相似角色节点向量相似(如不同社群的"核心用户") ,通过q>1的BFS游走捕捉

学习资料:
[8] v_JULY_v: 如何通透理解:BFS和DFS优先搜索算法(23年修订版)

4. 套用Word2Vec训练框架的损失函数构建及训练流程

将图节点的上下文关系映射为Skip-Gram的预测任务,通过负采样优化向量空间分布

损失函数设计
  • 数学形式 L = − ∑ ( u , v ) ∈ D [ log ⁡ σ ( u T v ) + ∑ i = 1 K log ⁡ σ ( − u T n i ) ] \mathcal{L} = -\sum_{(u,v)\in D} \left[ \log \sigma(\mathbf{u}^T \mathbf{v}) + \sum_{i=1}^K \log \sigma(-\mathbf{u}^T \mathbf{n}_i) \right] L=(u,v)D[logσ(uTv)+i=1Klogσ(uTni)] 其中 u \mathbf{u} u: 中心节点向量 v \mathbf{v} v: 正例邻居节点向量 n i \mathbf{n}_i ni: 负采样节点向量(按节点度数幂律分布采样)

  • 优化目标: 最大化正例节点对的相似度( σ ( u T v ) → 1 \sigma(\mathbf{u}^T \mathbf{v}) \to 1 σ(uTv)1) ,最小化负例节点对的相似度( σ ( − u T n i ) → 1 \sigma(-\mathbf{u}^T \mathbf{n}_i) \to 1 σ(uTni)1

训练流程
  1. 游走序列生成:通过有偏随机游走生成节点序列(如[A,B,D,C]
  2. 滑动窗口采样:窗口大小为 w w w时,从序列中提取中心词与上下文词对 。示例:窗口=2时,中心词B的上下文为[A,D,C]
  3. 批量训练: 对每个中心词,采样 K K K个负例(通常 K ∈ [ 5 , 20 ] K \in [5,20] K[5,20]),同步更新中心词、正例和负例的向量

4. LINE (Large-scale Information Network Embedding)

从隐式游走建模转向显式相似度定义,直接捕捉图结构特性。
学习资料:
[9] Thinkgamer: 论文|LINE算法原理、代码实战和应用

4.1 图的1阶相似度与2阶相似度

一阶相似度(局部结构)

定义:直接相连节点的相似性强度 , s i j ( 1 ) = 1 1 + exp ⁡ ( − u i T u j ) s_{ij}^{(1)} = \frac{1}{1+\exp(-\mathbf{u}_i^T \mathbf{u}_j)} sij(1)=1+exp(uiTuj)1 边权重 w i j w_{ij} wij的概率表示(如社交网络中好友关系的紧密度)

二阶相似度(全局结构)

定义:共享邻居的节点间结构相似性 , s i j ( 2 ) = exp ⁡ ( u j ′ ⊤ u i ) ∑ k = 1 ∥ V ∥ exp ⁡ ( u k ′ ⊤ u i ) s_{ij}^{(2)} = \frac{ \exp\left( \mathbf{u}_j^{\prime\top} \mathbf{u}_i \right) }{ \sum_{k=1}^{\Vert V \Vert} \exp\left( \mathbf{u}_k^{\prime\top} \mathbf{u}_i \right) } sij(2)=k=1Vexp(uk′⊤ui)exp(uj′⊤ui)节点作为上下文的条件概率分布(如论文引用网络中共同被引的文献)

4.2 损失函数

一阶损失函数

直接优化相邻节点的共现概率 L 1 = − ∑ ( i , j ) ∈ E w i j log ⁡ s i j ( 1 ) \mathcal{L}_1 = -\sum_{(i,j)\in E} w_{ij} \log s_{ij}^{(1)} L1=(i,j)Ewijlogsij(1)

二阶损失函数

对齐节点的邻居分布 L 2 = − ∑ i ∑ j w i j log ⁡ s i j ( 2 ) s ^ i j \mathcal{L}_2 = -\sum_{i} \sum_{j} w_{ij} \log \frac{s_{ij}^{(2)}}{\hat{s}_{ij}} L2=ijwijlogs^ijsij(2) s ^ i j = w i j ∑ k w i k \hat{s}_{ij} = \frac{w_{ij}}{\sum_{k} w_{ik}} s^ij=kwikwij:归一化的经验分布

4.3 训练流程设计

  1. 分阶段训练阶段一:仅用一阶损失 L 1 \mathcal{L}_1 L1训练,捕获直接关联,阶段二:仅用二阶损失 L 2 \mathcal{L}_2 L2训练,捕获结构相似性 。
  2. 向量融合: 最终节点表示: u i f i n a l = [ u i ( 1 ) ⊕ u i ( 2 ) ] \mathbf{u}_i^{final} = [\mathbf{u}_i^{(1)} \oplus \mathbf{u}_i^{(2)}] uifinal=[ui(1)ui(2)]
  3. 负采样加速: 对二阶损失中的每个正例 ( i , j ) (i,j) (i,j),采样 K K K个负节点 n k n_k nk,近似计算分母

4.4 LINE与Node2Vec的对比分析

Node2Vec通过灵活游走策略解决DeepWalk的均匀采样缺陷,成为图嵌入的里程碑式工作 。LINE通过显式相似度定义开辟了不依赖随机游走的新路径,为后续图神经网络奠定理论基础 。

理论基础对比

维度Node2VecLINE
建模方式基于随机游走的隐式关系建模基于邻接矩阵的显式相似度优化
信息捕捉平衡同质性与结构相似性分离一阶(局部)与二阶(全局)
数据依赖依赖游走序列的多样性直接利用边权重和邻接关系

计算效率对比

阶段Node2VecLINE
预处理需生成大量游走序列(时间成本高)直接加载邻接矩阵(内存消耗高)
训练速度受游走长度和窗口大小影响分阶段训练,可并行优化

应用场景对比

Node2Vec更优场景: 需要捕捉复杂拓扑特征(如社交网络社区发现),数据规模极大且稀疏(如网页链接图)

LINE更优场景: 需要快速获得节点表示(如中小规模知识图谱) ,强调直接关联的权重信息(如加权商品购买图)


5 SDNE (Structural Deep Network Embedding)

通过深度自编码器捕捉图结构中的高度非线性关系,同时显式建模一阶相似性(邻接关系)和二阶相似性(邻居分布相似性)。 重点理解的地方: 1.用深层神经网络编码节点的高阶非线性特征。 2.半监督训练框架中同时优化一阶(监督)和二阶(无监督)相似性。

学习资料:

[10] Cyril_KI: KDD 2016 | SDNE:结构化深层网络嵌入

5.1 自编码器+二阶相似性+无监督训练

自编码器结构

  • 输入:节点邻接向量(稀疏表示)。

  • 编码器:多层非线性变换生成低维嵌入。

  • 解码器:重构邻接向量,最小化重构损失(二阶相似性)。

学习资料: 要先理解什么是编码器-解码器结构,然后理解什么是自编码器
[11] 极光喵: 编码器-解码器模型(Encoder-Decoder)
[12] 越来越胖的GuanRunwei: 浅析自动编码器(自编码器 Autoencoder)

二阶损失函数 L 2 n d = ∑ i = 1 n ∥ ( x i ^ − x i ) ⊙ b i ∥ 2 2 \mathcal{L}_{2nd} = \sum_{i=1}^n \Vert (\hat{\mathbf{x}_i} - \mathbf{x}_i) \odot \mathbf{b}_i \Vert_2^2 L2nd=i=1n(xi^xi)bi22 x i \mathbf{x}_i xi:节点 i i i的邻接向量, x i ^ \hat{\mathbf{x}_i} xi^为重构结果, b i \mathbf{b}_i bi:权重向量(对非零元素加权,缓解稀疏性问题)。

5.2 一阶相似性+有监督训练

一阶损失函数 L 1 s t = ∑ i , j = 1 n s i j ∥ y i − y j ∥ 2 2 \mathcal{L}_{1st} = \sum_{i,j=1}^n s_{ij} \Vert \mathbf{y}_i - \mathbf{y}_j \Vert_2^2 L1st=i,j=1nsijyiyj22 s i j s_{ij} sij:节点 i i i j j j的边权重(邻接矩阵元素), y i , y j \mathbf{y}_i, \mathbf{y}_j yi,yj:节点 i i i j j j的嵌入向量。 有监督体现在强制相邻节点在嵌入空间中靠近,保留局部结构

5.3 联合优化与参数共享

总损失函数 L = L 2 n d + α L 1 s t + ν L r e g \mathcal{L} = \mathcal{L}_{2nd} + \alpha \mathcal{L}_{1st} + \nu \mathcal{L}_{reg} L=L2nd+αL1st+νLreg α \alpha α:一阶损失权重, ν \nu ν:正则化系数(防止过拟合)。

参数共享:编码器权重跨节点共享,增强模型泛化能力。

5.4 与LINE和Node2Vec的对比分析

特性LINENode2VecSDNE
模型类型浅层模型浅层模型深度模型
相似性建模显式一阶+二阶隐式(随机游走)显式一阶+二阶
非线性能力强(深度神经网络)
稀疏数据适应一般一般优秀(邻接向量加权)

LINE → SDNE: 从浅层模型到深度模型,显式建模一阶与二阶相似性的优化框架延续性。 自编码器的引入解决了传统方法对非线性关系建模不足的问题。


6 metapath2vec

通过元路径(metapath)引导的随机游走策略,学习异构图(Heterogeneous Information Network, HIN)中多类型节点的语义感知嵌入,捕捉复杂语义关系。

  • 元路径引导:基于预定义的元路径(如 Author-Paper-Conference)生成上下文,保留异构节点间的语义关联。

  • 异构Skip-Gram:扩展Skip-Gram模型,联合建模节点类型和共现关系,解决异构环境下的嵌入问题。

学习资料:
[13] BinG: #16 知识分享:Metapath2vec的前世今生
[14] Cyril-KI: KDD 2017 | metapath2vec:异质图的可扩展表示学习
[15] Karen_Yu_: 【Intro】metapath2vec

6.1 元路径引导的随机游走

元路径定义:元路径是连接多类型节点的复合关系路径(例如 User ← Item → Tag ← Item),显式定义语义模式。

  • 游走生成: 根据元路径模板生成随机游走序列,确保路径符合语义约束(如 User → Item → Tag 而非 User → User)。

  • 示例: 学术网络中的元路径 Author → Paper → Conference → Paper → Author 可捕捉学者研究领域相似性。

6.2 异构Skip-Gram模型

异构上下文:对每个节点,定义其上下文为异类节点(如论文的上下文学者和会议)。

类型特定嵌入:为每类节点(如 Author, Paper)分配独立嵌入矩阵,解决类型差异问题。

目标函数 max ⁡ Y ∑ v ∈ V ∑ c ∈ C ( v ) log ⁡ exp ⁡ ( y c ⋅ y v ) ∑ u ∈ V exp ⁡ ( y u ⋅ y v ) \max_{\mathbf{Y}} \sum_{v \in V} \sum_{c \in C(v)} \log \frac{\exp(\mathbf{y}_c \cdot \mathbf{y}_v)}{\sum_{u \in V} \exp(\mathbf{y}_u \cdot \mathbf{y}_v)} YmaxvVcC(v)loguVexp(yuyv)exp(ycyv) V V V:所有节点集合, C ( v ) C(v) C(v):节点 v v v的上下文, y v \mathbf{y}_v yv:节点 v v v的嵌入向量,类型由元路径决定。

6.3 与同构嵌入模型的对比分析

特性DeepWalk/Node2Vecmetapath2vec
网络类型同构图(单类型节点/边)异构图(多类型节点/边)
语义保留仅结构相似性结构+语义相似性(元路径约束)
随机游走策略无偏/同构游走元路径引导的异构游走
嵌入空间单一嵌入矩阵类型特定嵌入矩阵

Node2Vec → metapath2vec: 从同构图嵌入到异构图嵌入,通过元路径引入语义约束。 类型特定嵌入解决异构环境中节点表示不一致的问题。

6.4 异构的Skip-Gram公式与元路径转移概率矩阵

  1. 类型约束的Skip-Gram目标函数 log ⁡ exp ⁡ ( y c ⋅ y v ) ∑ u ∈ T ( c ) exp ⁡ ( y u ⋅ y v ) \log \frac{\exp(\mathbf{y}_c \cdot \mathbf{y}_v)}{\sum_{u \in T(c)} \exp(\mathbf{y}_u \cdot \mathbf{y}_v)} loguT(c)exp(yuyv)exp(ycyv) T ( c ) T(c) T(c)表示与上下文节点 c c c同类型的节点集合,限制负采样范围。
  2. 元路径游走概率: 对于节点类型序列 ( t 1 → t 2 → ⋯ → t l ) (t_1 \to t_2 \to \dots \to t_l) (t1t2tl)转移概率为: P ( v i + 1 ∣ v i ) = { 1 ∣ N t i + 1 ( v i ) ∣ , if  v i + 1 ∈ N t i + 1 ( v i ) 0 , otherwise P(v_{i+1} \mid v_i) = \begin{cases} \frac{1}{\vert N_{t_{i+1}}(v_i) \vert}, & \text{if } v_{i+1} \in N_{t_{i+1}}(v_i) \\ 0, & \text{otherwise} \end{cases} P(vi+1vi)={Nti+1(vi)1,0,if vi+1Nti+1(vi)otherwise N t ( v ) N_{t}(v) Nt(v)表示节点 v v v的类型 t t t邻居集合。

7. Trans系列(TransE、TransH、TransR、TransD)

由异质图过渡到知识图谱,节点类型和边的类型更加多种多样。简短梳理知识表示学习Trans系列方法,包含TransE、TransH、TransR、TransD

学习资料:
[16] 大林: 知识表示学习Trans系列梳理(论文+代码)

7.1 TransE

背景与动机

受词向量中“国王 - 男人 + 女人 ≈ 女王”的平移特性启发,将关系视为头实体到尾实体的平移操作,适用于简单的一对一关系建模,但对多对多关系存在局限性。

数学形式化

对三元组 (h, r, t),定义嵌入向量满足: h + r = t \mathbf{h} + \mathbf{r} = \mathbf{t} h+r=t

得分函数 f ( h , r , t ) = ∥ h + r − t ∥ L 1 / L 2 f(h, r, t) = \Vert \mathbf{h} + \mathbf{r} - \mathbf{t} \Vert_{L1/L2} f(h,r,t)=h+rtL1/L2 使用 L1 或 L2 范数衡量三元组的合理性(值越小越合理)。

训练细节

  • 负采样:通过替换头/尾实体生成负样本,例如 (h', r, t)(h, r, t')

  • 损失函数:间隔损失(Margin-based Ranking Loss): L = ∑ ( h , r , t ) ∈ T ∑ ( h ′ , r , t ′ ) ∈ T ′ max ⁡ ( 0 , γ + f ( h , r , t ) − f ( h ′ , r , t ′ ) ) \mathcal{L} = \sum_{(h,r,t) \in \mathcal{T}} \sum_{(h',r,t') \in \mathcal{T}'} \max(0, \gamma + f(h,r,t) - f(h',r,t')) L=(h,r,t)T(h,r,t)Tmax(0,γ+f(h,r,t)f(h,r,t)) 其中 γ > 0 \gamma > 0 γ>0 为超参数,强制正样本得分低于负样本至少 γ \gamma γ

局限性

  • 对称关系问题:无法建模 r(h, t)r(t, h) 同时存在的情况(如“配偶”关系)。

  • 多对多关系失效:例如,若存在 (h1, r, t1)(h2, r, t2),则模型会强制 t 1 − h 1 = t 2 − h 2 = r \mathbf{t1} - \mathbf{h1} = \mathbf{t2} - \mathbf{h2} = \mathbf{r} t1h1=t2h2=r,导致不同实体对嵌入趋同。

学习资料:
[17] 与书与你: 基于pytorch的transE代码详解

7.2 TransH

改进动机: 允许同一实体在不同关系中扮演不同角色,解决 TransE 的对称性和多对多关系问题。

核心思想: 为每个关系 r r r 定义超平面(由法向量 w r \mathbf{w}_r wr 表示),将实体投影到超平面后再进行平移。

投影与平移

  • 实体投影 h ⊥ = h − w r ⊤ h w r , t ⊥ = t − w r ⊤ t w r \mathbf{h}_{\perp} = \mathbf{h} - \mathbf{w}_r^\top \mathbf{h} \mathbf{w}_r , \mathbf{t}_{\perp} = \mathbf{t} - \mathbf{w}_r^\top \mathbf{t} \mathbf{w}_r h=hwrhwrt=twrtwr
    投影操作将实体向量限制在超平面内,消除冗余维度。
  • 得分函数 f ( h , r , t ) = ∥ h ⊥ + r − t ⊥ ∥ L 1 / L 2 f(h, r, t) = \Vert \mathbf{h}_{\perp} + \mathbf{r} - \mathbf{t}_{\perp} \Vert_{L1/L2} f(h,r,t)=h+rtL1/L2

训练优化

  • 参数约束:为避免过拟合,限制 ∥ w r ∥ 2 = 1 \Vert \mathbf{w}_r \Vert_2 = 1 wr2=1 w r ⊥ r \mathbf{w}_r \perp \mathbf{r} wrr
  • 动态关系表示:每个关系的平移向量 r \mathbf{r} r 和超平面法向量 w r \mathbf{w}_r wr 独立学习。

优势与适用场景

  • 可建模 1-N、N-1、N-N 关系(例如“导师”关系:一个导师对应多个学生)。
  • 计算复杂度低(仅增加法向量参数),适合中等规模知识图谱。

学习资料:
[18] StefanQiao: 论文笔记(三):TransH的详解与实现

7.3 TransR

改进动机: 将实体和关系映射到不同的语义空间,解决跨关系语义冲突问题(如“首都”和“地理位置”需不同语义解释)。

核心思想: 每个关系 r r r 对应一个投影矩阵 M r ∈ R k × d \mathbf{M}_r \in \mathbb{R}^{k \times d} MrRk×d,将实体从 d d d 维实体空间映射到 k k k 维关系空间。

映射与平移

  • 实体映射 h r = M r h , t r = M r t \mathbf{h}_r = \mathbf{M}_r \mathbf{h} , \mathbf{t}_r = \mathbf{M}_r \mathbf{t} hr=Mrhtr=Mrt
  • 得分函数 f ( h , r , t ) = ∥ h r + r − t r ∥ L 1 / L 2 f(h, r, t) = \Vert \mathbf{h}_r + \mathbf{r} - \mathbf{t}_r \Vert_{L1/L2} f(h,r,t)=hr+rtrL1/L2

训练细节

  • 参数规模:每个关系需学习 d × k d \times k d×k 的矩阵,参数量为 O ( n r × d k ) O(n_r \times dk) O(nr×dk) n r n_r nr 为关系数量)。
  • 正则化:对投影矩阵施加 Frobenius 范数约束,防止矩阵元素过大。

优势与局限性

  • 优势:可建模复杂关系(如“并发症”需多维度语义组合)。
  • 局限性:参数量随关系数量线性增长,难以扩展至超大规模图谱(如 Wikidata)。

学习资料:
[19] spark plug: 知识图谱论文梳理【TransR:用于知识图完成的学习实体和关系嵌入】

7.4 TransD

改进动机: 通过动态生成投影矩阵,减少 TransR 的参数冗余,提升计算效率。

核心思想

  • 为每个实体和关系分别定义两个向量:
    • 原始嵌入向量 h , t , r \mathbf{h}, \mathbf{t}, \mathbf{r} h,t,r(用于表示语义)。
    • 投影向量 w h , w t , w r \mathbf{w}_h, \mathbf{w}_t, \mathbf{w}_r wh,wt,wr(用于生成投影矩阵)。

动态投影矩阵构造

  • 头实体投影矩阵 M r h = I + w r w h ⊤ \mathbf{M}_{rh} = \mathbf{I} + \mathbf{w}_r \mathbf{w}_h^\top Mrh=I+wrwh
  • 尾实体投影矩阵 M r t = I + w r w t ⊤ \mathbf{M}_{rt} = \mathbf{I} + \mathbf{w}_r \mathbf{w}_t^\top Mrt=I+wrwt I \mathbf{I} I 为单位矩阵, w r w h ⊤ \mathbf{w}_r \mathbf{w}_h^\top wrwh 为低秩矩阵,捕捉实体-关系交互。

得分函数 f ( h , r , t ) = ∥ M r h h + r − M r t t ∥ L 1 / L 2 f(h, r, t) = \Vert \mathbf{M}_{rh} \mathbf{h} + \mathbf{r} - \mathbf{M}_{rt} \mathbf{t} \Vert_{L1/L2} f(h,r,t)=Mrhh+rMrttL1/L2

训练优势

  • 参数共享:投影矩阵由实体和关系的投影向量共同生成,参数量为 O ( n e × d + n r × d ) O(n_e \times d + n_r \times d) O(ne×d+nr×d) n e n_e ne为实体数)。
  • 灵活性:不同关系可自适应调整投影强度(通过 w r \mathbf{w}_r wr 的模长)。

适用场景: 大规模知识图谱(如 FreeBase),且需平衡模型复杂度和表达能力。

学习资料:
[20] WhisperEcho: 论文笔记:TransD-Knowledge Graph Embedding via Dynamic Mapping Matrix-ACL2015

7.5 模型对比与实践选择

性能对比

模型参数量关系建模能力训练速度适用场景
TransE O ( n e d + n r d ) O(n_e d + n_r d) O(ned+nrd)一对一关系简单社交网络、层级分类
TransH O ( n e d + 2 n r d ) O(n_e d + 2n_r d) O(ned+2nrd)一对多、多对一关系中等中等规模百科图谱
TransR O ( n e d + n r d k ) O(n_e d + n_r dk) O(ned+nrdk)多对多、复合语义关系复杂医疗/金融知识库
TransD O ( n e d + n r d ) O(n_e d + n_r d) O(ned+nrd)多对多、动态语义投影中等超大规模图谱(如 Wikidata)

总结

写在后面的话:回顾整个系列,我们从NLP领域的Word2Vec出发,见证了词向量技术如何为图嵌入奠定基础。DeepWalk和Node2Vec将文本中的“上下文”概念迁移到图结构,通过随机游走策略捕捉节点的局部与全局关系,这一思想如同桥梁,连接了离散的符号表示与连续的向量空间。LINE和SDNE则另辟蹊径,通过显式定义一阶、二阶相似性,并引入深度自编码器,让图嵌入从“序列建模”转向“结构优化”,打开了非线性建模的大门。而面对异构图的复杂性,Metapath2vec和Trans系列通过元路径引导和知识表示学习,解决了多类型节点与关系的语义融合问题,让算法能理解学术网络中作者与会议的关联,或知识图谱中药物与疾病的复杂交互。

这一路的技术演进,本质是对图结构信息提取能力的不断突破——从均匀游走到有偏探索,从浅层线性到深度非线性,从同构到异构,每一步都在尝试回答同一个问题:如何让机器更自然地“看见”图背后的结构与语义? 尽管上半部分聚焦于“无属性特征的静态图”,但已为后续内容埋下伏笔:若节点本身携带文本、数值等丰富属性,如何将属性与拓扑联合建模?这正是图神经网络基础入门学习路线(下) 将要去探讨的问题——GCN、GraphSAGE、GAT等模型将登场,它们不再满足于仅用ID表示节点,而是融合属性特征与高阶邻域信息。

未完待续……