GNN 1.intro

0. 图的基本概念

0.1 常见类型

有向图/无向图

根据边是否具有方向,可分为无向图(undirected graph)和有向图(directed graph),如图 9‑2 所示。

  • 在无向图中,边表示两顶点之间的“双向”连接关系,例如微信或 QQ 中的“好友关系”。
  • 在有向图中,边具有方向性,即 𝐴 → 𝐵 和 𝐴 ← 𝐵 两个方向的边是相互独立的,例如微博或抖音上 的“关注”与“被关注”关系。
    ![[Pasted image 20240804113246.png]]
连通图/非连通图

(1)基础连通图
根据所有顶点是否连通,可分为连通图(connected graph)和非连通图(disconnected graph),如图 9‑3 所 示。

  • 对于连通图,从某个顶点出发,可以到达其余任意顶点。
  • 对于非连通图,从某个顶点出发,至少有一个顶点无法到达。
    ![[Pasted image 20240804113309.png]]
    (2)强连通和弱连通图 (Strongly and Weakly Connected Graphs)
  1. 强连通图 (Strongly Connected Graphs)

    • 定义:在有向图中,如果每对节点之间存在双向路径,则该图是强连通的。
    • 示例:图中的每个节点都可以通过路径到达其他所有节点,并且可以返回到原节点。
  2. 弱连通图 (Weakly Connected Graphs)

    • 定义:在有向图中,如果忽略边的方向后,图是连通的,则该图是弱连通的。
    • 示例:图中的节点在忽略方向后仍然可以相互连接,但在考虑方向时可能不连通。
      (3)强连通分量 (Strongly Connected Components, SCCs)
  • 定义:强连通分量是指在有向图中,每个节点之间都有双向路径的一部分图。
  • 示例:图中的某些节点可以形成强连通分量。
  • 特点:并非所有节点都属于非平凡的强连通分量。
  • 图示:通过图示展示如何识别强连通分量。
    • 节点A、B、C、D、E、F、G分别属于不同的强连通分量。
权重/无权重

我们还可以为边添加“权重”变量,从而得到如图 9‑4 所示的有权图(weighted graph)。例如在《王者荣耀》 等手游中,系统会根据共同游戏时间来计算玩家之间的“亲密度”,这种亲密度网络就可以用有权图来表示。
![[Pasted image 20240804113324.png]]
![[Pasted image 20240804120316.png]]

自环和多重图 (Self-loops and Multigraphs)
  1. 自环 (Self-loops)
    • 定义:自环是指一个节点通过一条边连接到自身的情况。
    • 示例:如节点3有一个自环。
    • 邻接矩阵表示
      A = [ 1 1 1 0 1 0 1 1 1 1 0 0 0 1 0 1 ] A = \begin{bmatrix} 1 & 1 & 1 & 0 \\ 1 & 0 & 1 & 1 \\ 1 & 1 & 0 & 0 \\ 0 & 1 & 0 & 1 \\ \end{bmatrix} A= 1110101111000101
  2. 多重图 (Multigraphs)
    • 定义:多重图是指两个节点之间可以有多条边的情况。
    • 示例:如节点2和节点4之间有多条边。
    • 邻接矩阵表示

$$

 A = \begin{bmatrix}
 0 & 2 & 1 & 0 \\
 2 & 0 & 1 & 3 \\
 1 & 1 & 0 & 0 \\
 0 & 3 & 0 & 0 \\
 \end{bmatrix}

$$

块对角形式的邻接矩阵 (Block-diagonal Form of Adjacency Matrix)
  • 定义:对于具有多个连通分量的网络,其邻接矩阵可以写成块对角形式,其中非零元素限制在对角块内,其他元素为零。
  • 示例
    • 邻接矩阵的块对角形式如下:
      A = [ A 1 0 0 A 2 ] A = \begin{bmatrix} A_1 & 0 \\ 0 & A_2 \\ \end{bmatrix} A=[A100A2]
    • 其中,( A_1 ) 和 ( A_2 ) 分别表示两个连通分量的邻接矩阵。

0.2 常用术语

图数据结构包含以下常用术语。

  • 邻接(adjacency):当两顶点之间存在边相连时,称这两顶点“邻接”。在图 9‑4 中,顶点 1 的邻接顶点 为顶点 2、3、5。
  • 路径(path):从顶点 A 到顶点 B 经过的边构成的序列被称为从 A 到 B 的“路径”。在图 9‑4 中,边序 列 1‑5‑2‑4 是顶点 1 到顶点 4 的一条路径。
  • 度(degree):一个顶点拥有的边数。对于有向图,入度(in‑degree)表示有多少条边指向该顶点,出度 (out‑degree)表示有多少条边从该顶点指出。
    ![[Pasted image 20240804115608.png]]

0.3 表示方法

(1)邻接矩阵
设图的顶点数量为 𝑛 ,邻接矩阵(adjacency matrix)使用一个 𝑛 × 𝑛 大小的矩阵来表示图,每一行(列)代 表一个顶点,矩阵元素代表边,用 1 或 0 表示两个顶点之间是否存在边。 如图 9‑5 所示,设邻接矩阵为 𝑀、顶点列表为 𝑉 ,那么矩阵元素 𝑀[𝑖, 𝑗] = 1 表示顶点 𝑉 [𝑖] 到顶点 𝑉 [𝑗] 之间存在边,反之 𝑀[𝑖, 𝑗] = 0 表示两顶点之间无边。
![[Pasted image 20240804113618.png]]
邻接矩阵具有以下特性。

  • 顶点不能与自身相连,因此邻接矩阵主对角线元素没有意义。
  • 对于无向图,两个方向的边等价,此时邻接矩阵关于主对角线对称。
  • 将邻接矩阵的元素从 1 和 0 替换为权重,则可表示有权图。
    使用邻接矩阵表示图时,我们可以直接访问矩阵元素以获取边,因此增删查改操作的效率很高,时间复杂度 均为 𝑂(1) 。然而,矩阵的空间复杂度为 𝑂(𝑛2 ) ,内存占用较多。

![[Pasted image 20240804115934.png]]
(2)邻接表
邻接表(adjacency list)使用 𝑛 个链表来表示图,链表节点表示顶点。第 𝑖 个链表对应顶点 𝑖 ,其中存储了该 顶点的所有邻接顶点(与该顶点相连的顶点)。图 9‑6 展示了一个使用邻接表存储的图的示例。
![[Pasted image 20240804113657.png]]
邻接表仅存储实际存在的边,而边的总数通常远小于 𝑛 2 ,因此它更加节省空间。然而,在邻接表中需要通 过遍历链表来查找边,因此其时间效率不如邻接矩阵。

1. 简介GNN

1.1 图表示学习 (Representation Learning)

  • 目标:将图中的节点映射到d维嵌入空间,使得相似的节点在嵌入空间中彼此接近。
  • 函数表示:f:u→Rd,将节点u映射到d维向量空间。
    f : u → R d , f: u \rightarrow \mathbb{R}^d, f:uRd
    ![[Pasted image 20240804114546.png]]
    ![[Pasted image 20240804114610.png]]

1.2 机器学习的生命周期 (Machine Learning Lifecycle)

  • 数据准备 (Data Preparation)
    • 原始数据 (Raw Data):收集并整理数据。
    • 图数据 (Graph Data):将数据转换为图的形式。
  • 特征工程 (Feature Engineering):为机器学习模型手工设计特征。
  • 表示学习 (Representation Learning):自动学习特征。
  • 学习算法 (Learning Algorithm):选择并应用合适的学习算法。
  • 模型训练 (Model Training):训练模型以进行预测。
  • 下游预测任务 (Downstream Prediction Task):模型应用于实际预测任务。
    ![[Pasted image 20240804114556.png]]

1.3 不同级别的图任务

![[Pasted image 20240804115255.png]]
![[Pasted image 20240804115522.png]]

1.4 课程覆盖的主题 (Course Topics)

  1. 传统方法 (Traditional Methods)

    • Graphlets:小规模子图模式,用于分析图结构。
    • 图核 (Graph Kernels):用于测量图之间相似性的函数。
  2. 节点嵌入方法 (Methods for Node Embeddings)

    • DeepWalk:通过随机游走生成节点序列,并应用word2vec方法进行节点嵌入。
    • Node2Vec:结合DFS和BFS的随机游走策略,生成节点序列并进行嵌入。
  3. 图神经网络 (Graph Neural Networks)

    • GCN (Graph Convolutional Networks):图卷积网络,通过聚合邻居节点信息进行节点表示学习。
    • GraphSAGE:通过采样和聚合邻居节点信息进行节点嵌入。
    • GAT (Graph Attention Networks):图注意力网络,通过注意力机制聚合邻居节点信息。
    • 图神经网络的理论 (Theory of GNNs):研究图神经网络的理论基础和性质。
  4. 知识图谱和推理 (Knowledge Graphs and Reasoning)

    • TransE:一种用于知识图谱嵌入的模型,通过向量变换表示实体和关系。
    • BetaE:用于知识图谱推理的模型。
  5. 图的深度生成模型 (Deep Generative Models for Graphs)

    • 深度生成模型,用于生成新的图结构。
  6. 应用领域 (Applications)

    • 生物医学 (Biomedicine):图模型在生物医学数据分析中的应用。
    • 科学 (Science):图模型在科学研究中的应用。
    • 工业 (Industry):图模型在工业应用中的应用。

1.5 图机器学习任务 (Graph Machine Learning Tasks)

  • 节点级任务(Node level)
    • 节点分类:预测节点属性
      • 例子:在线用户/项目分类
  • 边级任务(Edge level)
    • 链接预测:预测节点之间是否存在缺失链接
      • 例子:知识图谱补全
  • 图级任务(Graph level)
    • 图分类:对不同图进行分类
      • 例子:分子属性预测
    • 聚类:检测节点是否形成社区
      • 例子:社交圈检测
    • 其他任务
      • 图生成:药物发现
      • 图演化:物理模拟

1.6 二分图

1.6.1 二分图 (Bipartite Graphs)
  • 定义:二分图是一种特殊的图,其中节点可以分为两个不相交的集合U和V,使得每条边都连接U中的一个节点和V中的一个节点;也就是说,U和V是独立的集合。

  • 示例

    • Authors-to-Papers:作者与他们撰写的论文之间的关系。
    • Actors-to-Movies:演员与他们出演的电影之间的关系。
    • Users-to-Movies:用户与他们评分的电影之间的关系。
    • Recipes-to-Ingredients:食谱与其包含的成分之间的关系。
      ![[Pasted image 20240804115823.png]]
1.6.2 二分图的折叠网络 (Folded Networks)
  • 定义:二分图的折叠网络是通过将一个集合中的节点合并,形成新的网络。
    • Author collaboration networks:通过合并论文节点,形成作者合作网络。
    • Movie co-rating networks:通过合并用户节点,形成电影共同评分网络。
      ![[Pasted image 20240804115817.png]]
1.6.3 二分图的投影 (Projection of Bipartite Graphs)
  • U到U的投影
    • 通过将V中的节点合并,形成U中的节点之间的直接连接。
  • V到V的投影
    • 通过将U中的节点合并,形成V中的节点之间的直接连接。

1.7图的稀疏性

1.7.1 图的稀疏性 (Sparsity of Graphs)
  • 稀疏图 (Sparse Graphs)

    • 定义:大多数实际网络都是稀疏的,即它们的边数远小于节点数的平方(即 ( E \ll E_{max} ) 或 ( k \ll N-1 ))。
    • 后果:稀疏图的邻接矩阵中充满了零。
  • 稀疏矩阵的密度 (Density of Sparse Matrices)

    • 密度计算公式:矩阵的密度是边数与节点数平方的比值,即 ( \frac{E}{N^2} )。
    • 示例
      • 万维网 (WWW):密度为 ( 1.51 \times 10^{-5} )。
      • MSN即时通讯 (MSN IM):密度为 ( 2.27 \times 10^{-8} )。
        ![[Pasted image 20240804120143.png]]

1.8 边的属性

在图中,边不仅仅表示节点之间的连接,它们还可以携带额外的信息,这些信息可以进一步丰富图的表示和分析。以下是一些常见的边属性:

  1. 权重 (Weight)

    • 描述边的重要性或强度。
    • 例如,社交网络中的通信频率、交易网络中的交易金额。
  2. 排名 (Ranking)

    • 描述边的优先级或顺序。
    • 例如,好友关系中的最佳好友、次佳好友等。
  3. 类型 (Type)

    • 描述边的性质或类别。
    • 例如,社交网络中的朋友、亲戚、同事关系。
  4. 符号 (Sign)

    • 描述边的正负性质。
    • 例如,信任关系中的信任或不信任、社交网络中的好友或敌人。
  5. 结构依赖属性 (Structure-dependent Properties)

    • 描述边在图结构中的特性。
    • 例如,共同好友的数量,连接强度等。
1.8.1 边属性的示例 (Examples of Edge Attributes)
  • 无权重的无向图 (Unweighted Undirected Graph)

    • 边没有权重,表示节点之间的对称连接。
    • 例如,朋友关系、超链接。
  • 有权重的无向图 (Weighted Undirected Graph)

    • 边具有权重,表示节点之间连接的强度或频率。
    • 例如,合作关系、互联网连接、道路网络。
  • 无权重的有向图 (Unweighted Directed Graph)

    • 边没有权重,方向性表示节点之间的单向连接。
    • 例如,电话呼叫、社交媒体的关注关系。
  • 有权重的有向图 (Weighted Directed Graph)

    • 边具有权重,表示节点之间的有向连接的强度或频率。
    • 例如,电子邮件通信、金融交易。
  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值