文章目录
0. 前言
- 《Introduction to Graph Neural Networks》是清华大学刘知远教授在2020年3月发布的新书。
- 本书简介
- 可通过Sci-Hub免费下载。
- 本文主要内容
- 第一章 - Introduction:介绍了图(Graph)的基本概念以及GCN的来源。
- 第二章 - Basics of Math and Graph:介绍了线性代数、概率论、图论的常用概念。
- 第三章 - Basics of Neural Networks:介绍了神经元、BP、常见神经网络形式。
1. Introduction
1.0. 图的基本概念
- 图(Graph)是一种数据结构,用来对一些物体(Nodes)以及物体间的相互关系(edges)进行建模。
- 图的应用领域很广,包括:社会科学(猜测人际关系就是图结构)、自然科学(比如分子运动?)、蛋白质相互关系、知识图谱等。
- Euclidean Data 与 Non-Euclidean Data 之间的区别:
- 前者表示的是“排列整齐”的数据,比如图片、视频、语音等。
- 后者一般可分为两类,图(Graph)数据与流数据。
1.1. 为什么要设计GCN
- 图神经网络的设计有一部分参考了卷积操作
- CNN能够提取多尺度下的局部空间特征,且特征有很强的表达能力。
- 上面这句话是翻译,有点难懂,建议看源码
- CNNs is capable of extracting and composing multi-scale localized spatial features for features of high representation power
- CNN就是靠这个特点引领了深度学习革命。
- CNN的关键点在于:local connection(局部连接,即获取kernel内的信息), shared weights(参数共享,使用相同的kernel在不同位置执行操作,减少参数量),use of multi-layer(多个CNN叠加得到结果)
- Graph与CNN关键点之间的关系:
- 第一,Graph是典型的 local connection 结构。这里所谓的局部连接,我猜指的就是各种edge。
- 第二,shared weights 也能为Graph相关算法减少计算量与资源。
- 普通卷积对比的对象可能是全连接层,而图这里,对比的对象是 traditional spectral graph theory(不知道是啥,我就当作)。
- 第三:multi layer结构是是处理hierarchical patterns(分层模式)的关键,用来提取各种纬度的特征。
- CNN不能直接用于Graph的原因:CNN是处理Euclidean data的,比如图像、文本。
- CNN能够提取多尺度下的局部空间特征,且特征有很强的表达能力。
- 图神经网络的设计还源自 Network Embedding(graph embedding)
- 所谓 graph embedding,就是学习如何通过低维度向量表示图像中的点、线、子图。
- 传统方法通过手动选择特征,泛化能力差,工作量大。
- 在参考 word embedding 等工作后,有大量 representation learning 方法可以借鉴,如DeepWalk, node2vec, LINE, TADW等。不过这些方法都存在两个缺陷:
- 缺陷一:不同nodes的参数不共享,计算量、资源与node数量成正比。
- 缺陷二:direct embedding 方法的泛化能力差,不能处理动态图或新的图。
1.2. 相关工作
- 列了一堆,看不太懂,也并不太关心……
- 总结了本书的内容
- 详细介绍了所有已知的GNN模型。
- 系统总结了所有应用,并分为 structural scenarios, non-structural scenarios, other scenarios 三类。
2. Basics of Math and Graph
2.1. 线性代数
- 基本概念:
- 标量、向量、范数、线性无关。
- 矩阵、矩阵乘法、行列式、逆序、逆矩阵、转置矩阵、Hadamard product(两个shape相同的矩阵按为乘法)
- 特征分解
- 假设A为nxn的矩阵。
- 特征向量、特征值: A v = λ v Av = \lambda v Av=λv,则v为特征向量, λ \lambda λ为特征值。
- 如果A矩阵有n个特征向量,则该矩阵是线性无关的。
- 特征分解: A = V d i a g ( λ ) V − 1 A = V diag(\lambda) V^{-1} A=Vdiag(λ)V−1,其中V为特征矩阵, d i a g ( λ ) diag(\lambda) diag(λ)记作对角线全是特征值,其他为0。
- 奇异值分解
- 不是所有矩阵都能进行特征分解:特征分解要求较高,大部分矩阵不能进行特征分解。
- 奇异值分解要进行操作的矩阵是 A T A A^TA ATA和 A T A A^TA ATA,对该矩阵进行特征分解,特征分解结果分别组成奇异值分解的结果。
- A = U Σ V T A = U\Sigma V^T A=UΣVT,A为原始矩阵,U为 A A T AA^T AAT特征矩阵组成,V为 A A A^A AA特征分解结果。
2.2. 概率论
- 基本概念与公式
- 随机变量、联合概率、条件概率。
- 加法公式、乘法公式、贝叶斯公式、链式法则
- 数学期望、方差、标准差
- 常见概率分布
- 高斯分布(正态分布)
- 伯努利分布
- 二项分布
- 拉普拉斯分布
2.3. 图论
- 上一次系统看图论,还是本科参加ACM竞赛的时候,好怀念啊……
- 基本概念:顶点、边、端点(节点边的两头)、有向图、无向图、相邻(一条边连接的两个顶点)、度(与某个顶点连接的边的数量)
- 图的代数表示
- 邻接矩阵
- Degree matrix(度矩阵),只有主对角线上有值,其他的均为0,i行i列的取值为节点i的度。
- Laplacian matrix:定义为 D − A D-A D−A,其中D为度矩阵,A为邻接矩阵,是对称矩阵。
- Symmetric normalized Laplacian:正则化的Laplacian matrics
- Random walk normalized Laplacian
- Incidence matrix,关联矩阵
- 对于有向图,如果存在边u->v,则 M u v = 1 , M v u = − 1 M_{uv} =1, M_{vu} = -1 Muv=1,Mvu=−1。
- 对于无向图,如果存在 u->v,则 M u v = M v u = 1 M_{uv} = M_{vu} = 1 Muv=Mvu=1
3. Basics of Neural Networks
3.1. 神经元
- 神经元(Neuron)是神经网络的基本组成部分,由一个累加以及一个激活函数组成。
- 常见的激活函数包括 sigmoid, tanh, relu。
3.2. 反向传播
- 训练神经网络最常用的方法就是反向传播(Back propagation algorithm)。
- 基本原理就是通过梯度下降与链式法则计算每个参数梯度,然后通过学习率来更新参数值。
- 总而言之,BP的过程分为两步,前向计算+反向传播。
3.3. 神经网络
-
介绍常见的神经网络。
-
Feedworward Neural Network:前向神经网络,包括了CNN、多层感知机等形式。
-
Convolution Neural Network:卷积神经网络,FNN的特殊形式,使用CNN替代FC。
-
Recurrent Neural Network:循环神经网络,不仅有外部输入数据,也会将历史数据作为输入。
-
Graph Neural Network:为图结构设计的网络。