图深度学习 2021年电子工业出版社出版的图书 https://baike.baidu.com/item/%E5%9B%BE%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0 有些数据以图的形式展示更好
其他数据可以转为图形式
像素为节点,相邻像素为边 顺序数据转图数据会有损失,但这种损失可以忽略不计 |
|
节点之间关系预测
节点分类
上面 - 每个节点是一个事物,事物之间的关系是图 下面 - 每个数据就是一个图,比如分子结构,分子本身就是图 - 图的生成,匹配...
|
比如,抖音 粉丝 数量,有人几个,有人几万个
因为,深度学习与图的结合,需要依据特定的业务场景进行分析,
下面就列举几个场景
推荐系统
用户,商品为节点
用户的信息可以表示为节点的属性
推荐系统的核心是 学习用户与商品之间的关系
交通预测
Traffic prediction with advanced Graph Neural Networks
https://deepmind.google/discover/blog/traffic-prediction-with-advanced-graph-neural-networks/
路段作为节点
路段之间的关系为边
将道路分段,每个段是一个节点,段与段之间的关系为边
每个节点上有流量数据
预测未来几小时的流量
药物发现
药物的成本低,研发成本高,
GNN可以降低研发的成本
- 分子结构 -- 功能 ... 学习中
- 需要的功能 -- 分子的结构 预测
|
E:\tpf\doc2web\lgl\study1\150-alg\GNN G:\wks\kejian\peixun\shenlan\gnn\01-图深度学习\code /opt/wks/fanxq/01-AML专家指导/ibm-aml
------------------------------------------------------------------------------
|
从图上提取特征,得到行列二维表,就可以转机器学习了 - 提取节点特征,边的特征,合并到一行 特征工程 - 手工提取节点信息 - 度 - 中心性 缺陷 - 手工麻烦 - 特征固定后,后续固定继承,无法最优 |
|
特征学习 改手工提取 为 自动学习 针对下游任务 从100个结构/节点特征选择10个,降维,灵活 表示学习 特征学习是选择,不改变 表示学习是从原特征中 学习出一组特征
|
第1代 最开始1970-2000通过聚类的方式...降维 2006通过矩阵因子分解的形式降维 - SVD 奇异值分解 第2代
实际上也是矩阵分解 第3代:引入深度学习
|
|
|
|
|
v:节点
e:边,无向,权重,有边为1,无边为0
先整理不重不漏的 节点集合V与边的集合E,并此演生矩阵
矩阵n*n ,A为邻接矩阵
- v1与v2有边为1,无边为0
- 有5个节点,为5*5矩阵
- 第1行/列为第1个节点到各个节点的边
- 第2行/列为第2个节点到各个节点的边
关于主对角线对称,即A与其转置矩阵一样
|
一个节点的度是该节点与其他节点之间边的个数
邻域:相邻节点的集合
|
|
途径(walk): 两个节点之间的路径
交替排列
算法中并不严格区分 途径与路 |
- 如果存在两个节点之间没有边,那么这个图称不是连通的 - 路的长度就是边的个数
两个节点之间 最长的最短路径 |
将节点转化为了一个数字,用数字的大小来代表重要性 n个节点转化为n维向量,一张图转化为一个向量, 一个节点对应向量中的一个元素,其值越大越重要 V是节点信息,有n个节点,一个节点转化为一个数值,n个节点转化为n个数值 度中心性:一行中边的个数 中心性就是重要性,越重要的事物越重,引力越高,有成为中心趋势 - 重要的表示方法是多样的,多角度的 - 自身的信息 - 边的个数 - 相邻节点的重要性
c 中心
d 节点的度
cd 节点度所表示的中心性
考虑两个因素
- 度:节点关联的边越多就表示重要性越高
- 自身:自身的信息
Ax = ax
a为特征值,x为特征向量,现在有关联矩阵A,就可以求出特征值a,以及对应的特征向量x
β实际为βi
节点关联的节点多
所关联的节点重要
自己重要 -- Katz中心性
|
|
核心思想 如果一个节点(或边)位于许多其他节点对的最短路径上, 那么它的介数中心性较高,说明它在网络中具有更强的中介或枢纽作用。 介数中心性(Betweenness Centrality)是图算法中衡量节点或边在网络中重要性的指标之一, 用于量化一个节点或边作为“桥梁”对其他节点之间最短路径的影响程度。
直观解释 高介数中心性的节点通常是连接不同社区(或群组)的关键节点。例如: 社交网络中,连接多个群体的“中介人”。 交通网络中,必经的枢纽站点。 互联网中,流量高度集中的路由器。 低介数中心性的节点则可能处于网络边缘,或不参与其他节点之间的连接。 应用场景 关键节点识别:找出网络中潜在的单点故障(如电力网、通信网)。 社区发现:通过删除高介数边(如Girvan-Newman算法)分裂社区。 流行病控制:干预传播网络中的中介节点以阻断扩散。 计算优化
示例
A —— B —— C
\ /
D
那些绕不过去的环节 |
|
|
|
|
|
|
图的结构:一个图由节点(或顶点)和边构成。
路径:
一条路径是从一个节点出发,沿着边序列到达另一个节点,
且中间不重复经过同一个节点(简单路径通常要求不重复,但最短路计算中会自动满足这一点)。
权重:边可以有一个数值,称为“权重”或“成本”。它可以代表实际距离、时间、费用、难度等。
如果所有边的权重都是1,那么最短路就是经过边数最少的路径。
如果边的权重不同,最短路就是各边权重之和最小的路径。
总权重:一条路径的总权重是其经过的所有边的权重之和。
举个例子:
想象一个城市交通图,节点是各个路口,边是道路。
边的权重可以是道路的长度或驾车通过所需的时间。
那么从A点到B点的“最短路”,可能就是总长度最短或总耗时最少的路线。
从家到公司可能有两条不同的路线,它们的总长度或总通行时间完全一样。
对称结构 ``` A --1-- X | | 1 2 | | Y --2-- B ``` 路径1: A->X->B, 总权重 = 1 + 2 = 3 路径2: A->Y->B, 总权重 = 1 + 2 = 3 权重组合不同,但总和相同
```
B
/ \
2 2
/ \
A D
\ /
3 1
\ /
C
```
路径1: A -> B -> D, 总权重 = 2 + 2 = 4
路径2: A -> C -> D, 总权重 = 3 + 1 = 4
现在,这两条路径的总权重都是4,因此它们都是最短路。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
一个节点代表一个信号
RN是实数上的n维度向量,一个节点一个数值,n个节点形成一个n维向量
- n维列向量,一个节点映射到一个数值,
- n个节点映射到n个数值,形成n维列向量
一个信号可以有多维,一维一个通道,图上表示的是4通道 - 如果是在机器学习中,说法就会换成一个对象的多个属性,只是叫法不一样 - 这里f(1)有4个数值
|
度矩阵为对角阵,用一个行/列向量表示节点的度,
- 第i个节点只在向量的第i个元素上有值,该值为该节点的度
- 其他位置上的元素皆为0
f,h为 列向量
vj 是vi的相邻节点
hi 是 第i个节点 与 其相邻节点 信息差的和
- 两个节点的信息值想减后有正有负,再相加后会 中和
- 因此对差做平方
如果两个节点之间有连接的话
- 二次型可以衡量两个节点信息值的差异
- 如果节点之间相近,则过渡平滑...
|
|
半正交矩阵可以进行特征分解
邻接矩阵的对角线为为0
- 可能因为这个的原因,它会有一个为0的特征值
- 从而导致它为半正定矩阵
u是特征向量,应该还是一个单位向量,其模为1,这样最后才能剩下一下特征值
将该特征值作为信号的频率,由小到大排列,就是频率由低频到高频排列
|
|
|
|
向量与线性组合 任何一个图信号都可以表示为一组特征(或者叫特征向量)与一组特征向量的线性组合 特征值1*特征向量1 + 特征值2*特征向量2 ... 特征值n*特征向量n
特征向量与特征值
Axi = λi·xi λi是特征值,xi是特征向量 SVD 奇异值分解(Singular Value Decomposition, SVD)是线性代数中的一种分解方法, 它可以将一个矩阵分解为三个特殊矩阵的乘积。 SVD 在信号处理、统计学、机器学习等多个领域有着广泛的应用, 尤其是在数据压缩、去噪和特征提取等方面。
然而,在实际编程中,尤其是在使用 NumPy 库进行 SVD 分解时, 返回的 Σ 矩阵通常以向量形式给出,而不是完整的对角矩阵。 因此,如果你使用 U, S, V = np.linalg.svd(A) 进行 SVD 分解,得到的各部分含义如下:
使用这种方式,你可以通过 np.diag(S) 将 S 转换为一个对角矩阵,然后手动构造出原始的 SVD 形式:
注意,这里的“≈”表示当 A 不是方阵或者其秩小于其行数和列数的最小值时, SVD 分解后的重构可能只是原矩阵的一个近似。 如果 A 是方阵且满秩,那么这种分解是精确的。
|
U,S,V = np.linalg.svd(A) U与V皆是正交矩阵 方阵中对称阵比较特殊,以对称阵举例说明SVD import numpy as np A = np.array([[3, 5, 7], [5, 1, 0],[7,0,3]]) U,S,V = np.linalg.svd(A) U.shape,S.shape,V.shape ((3, 3), (3,), (3, 3))
当A为对称阵时,U的转置就是V,由于U是正交矩阵,U的转置就是U的逆,于是此时的SVD就是 V的逆矩阵,S,V = np.linalg.avd(A)
当A不为对称阵时,U与V不再满足这种关系,但它们依然是正交矩阵, 其特征值都是1,其结构依然是比较相似的 V[:,1]@V[:,2] -2.7755575615628914e-16 V[:,1]@V[:,0] 8.326672684688674e-17 V[:,2]@V[:,0] -5.551115123125783e-17
|
傅立叶变换
通过傅立叶级别将图信号从空间域变换到谱域
反傅立叶变换
U是正交矩阵,空间域到谱域的公式两个同时乘以U的转置矩阵后,就得到了谱域到空间域的变换公式
|
|
|
|
|
|
|
|
简单图:只有一种节点类型,边也只有一种边
|
用户是一类节点
用户喜欢的事物是一类节点
用户与事物之间有边,用户与用户之间,事物与事物之间是没有边的
|
两个节点之间可以有多个边,每个边代表着一种关系 每一种关系相当于看节点的一个维度,即从不同的维度看节点 |
将边分类,比如 好友是一类,拉黑是另外一类 ,前者为正,后者为负 符号专指 +-正负符号,特指一个事物中正负两种关系 |
三篇文章的作者是一个 Author 1 就是一个超边,链接了三篇文章 - 前面图中的一个边,只链接了两个节点 |
社交图 - 不同的时刻,用户节点数不同,用户有来有走 将节点映射到一个时间函数上 - 用户是什么时间加入进来的 - 边是什么时间建立的 这样的图是变化的,也叫流图 - 时间是离散的,1月份,2月份,... - 由月份到月份之间的数据是变化的,但也是离散的 |
|
邻接矩阵用向量表示节点
- n维向量表示n个节点的图,如果图上节点个数多,则向量维度较高
- 度:社交,大部分人只有几个,几十个 好友
用一个函数将节点信息映射到低维空间 f: V--R
- 保留重要信息的前提下,表示用的维度尽量低
|
词·嵌入: - 词变向量,就是编码,维度变换,线性变换或者encode编码器都可以 - 嵌入: - 一句话由多个单词按一定顺序排列而成,关键是 排列方式,也就是序列 - A单词在第1个位置,B单词在第2个位置... - 把一个单词放在一个序列中,就像是把一个单词嵌入到一个序列中一样 词嵌入就是word2vec,就是词转向量,只是这个词带有上下文含义, - 这个词带有以该词为中心左边单词与右边单词的信息 - 这是嵌入的第二重含义
文章,段落,句子,单词
将单词从类似one hot这种高维空间映射到低维空间
- 映射的过程中,尽量保留原有的语义信息
- 这里的语义,更多的指上下文信息,即前一个词是什么,后一个词是什么
- 共同出现的信息,叫共现信息
中心词
- 以某个词为中心,以step=1为窗口,就是提取中心词前一个单词与后一个单词
- 这就是词嵌入方法的基本思想
- 通过这种方法,保留单词的基本信息
|
一句话 单词 中心词 左右单词 一张图 节点 中心节点 邻域(相邻节点组成的分布)
1. 将信息从 图域 映射 到 向量特征空间/嵌入域 2. 保留重要信息: 共现信息(上下文信息),结构角色,社区信息,节点状态 |
|
|
|
邻域,共现信息,相邻的信息,对应word2vec中的上下文信息
deepwalk的映射函数
- ei为单位矩阵E中第i列
ei从W中提取第i个节点的向量特征,W是要学习的特征
|
类似于自然语言处理中的 词嵌入,就是单词编码 自然语言是一个序列,图不是,需要通过一种方法转化为一个序列
deepwalk通过随机游走的方法,产生一个序列,该序列对应着一个句子
N表示均匀分布
从当前节点到下一个节点
- 按度处理,节点之间的概率相同,等比
有了序列之后,就可以提取共现信息
每个随机游走W就是一条途径,节点的共现信息为IW
从每个节点出发进行随机游走得到多条途径R={W}, 每个途径都对应一个共现信息IW,
- 这些共现信息并起来称为I
- I就是通过随机游走,在图中提取出来的节点,及节点的共现信息
|
重构器:提取节点信息转换为节点出现的概率
- 共现信息IW是基于随机游走的,是随机的序列
- 一个随机游走的途径,转化为前后成对出现的节点对的集合
- 共现信息是集合
- 右边嵌入域融入概率信息
- 概率是基于统计
- 上下文序列上的概率,成对出现的概率
中心节点只有一个节点
上下文节点有多个节点,这就是上下文节点
在deepwalk中,这两类节点,每类都对应一个初始化参数矩阵W
通过向量内积计算中心节点与上下文节点之间的相似性,
- 余弦相似度,越相似的两个单位向量,其内积越接近1
- 所有节点与其上下文节点的相似度的和为分母
目标函数:初始化是随机组合,训练的目的在于让模型输出的节点的概率逼近真实节点出现的概率
共现信息中直接从图中提取出来的
通过初始化参数矩阵W及概率对构成的嵌入域并不与共现信息对等
如果让嵌入域中的节点向量接近共现信息中节点的真实含义?
- 嵌入域尽可能正确地预测共现信息
- 希望嵌入域中这个包含概率的计算公式的最大化 就是 真实的共现信息/ 接近共现信息
- 对应统计学中的最大似然估计
- 使用log转化,将连乘改为求和,并转化为最小化问题
W是随机游走的路径,R是多个路径W的集合
IW是 单条路径W中 由(中心词,邻接词)构成的组合,代表中该路径中的信息
I 代表多条路径W中信息
有了邻接词可以推断中心词,有了中心词也可以推断邻接词
核心目的还是 将图中相邻节点的概率 转化为 节点对之间的概率
|
在大规模中节点多,相邻节点内积运算计算量大
- 同维度对比,比如都是softmax,有没有速度更快的softmax - 其他维度:负采样 - 字典的维度可以看作节点的个数 - p(vcon|vcen)可以看作平级处理,计算机不知道vcen的上下文节点是什么, - 于是它会遍历所有的上下文节点vcon,来统计计算p(vcon|vcen)
- hierchical:层级结构 - 将搜索转化为二叉树 - 不再是全遍历 ,而是从根节点往下二分查找 - p(left|b0,v8) = sigmoid(fb(b0)的转置f(b8)) - 只是利用这个公式,这种算法,这种设计来定义一个小模型 - 用于完成p(left|b0,v8)的计算 - 至于效果要结合数据训练完后才知道 - 以上为个人猜测
负采样
- 分子:使用log + sigmoid ,最大化出现在共现信息中的概率 - 分母:除了使用log + sigmoid ,还加入了负采样 , - 取没有出现在中心节点fcen中的节点对 - 最小化没有出现在共现信息中的概率 - 有很多负样本,没有出现在共现信息中,抽取K个 - 最小化负样本的概率 ,最小化没有出现在共现信息中的节点对 其他保留共现信息的方法
LINE:仅使用边
二阶:除了考虑当前节点,还会考虑上个节点的信息
p:当前节点的度 q>1: 倾向于游走到 接近 当前节点离上个节点的距离 的一个节点上 q<1: 倾向于游走到 远离 当前节点离上个节点的距离 的一个节点上 |
- 节点u与节点v的距离较远,通过邻接节点所表示的共现信息,相似度较低 - u与v的结构类似,从角色的角度看,它们很类似
- 从结构信息中 提取 角色 出来,构建一个新图 - 结构的相似性 由度表示 ,然后两个节点之间的距离dist(du,dv)是多少 - su1,1阶邻接节点按度的大小排序, - dist(su1,sv1),两个排序之间的距离 - 第k阶的相似性,是第k-1,k-2,...,1之和
- 每一阶都构造一个图 - 边的权限与度的相似性相关 - 一阶的相似性 = 一阶,0阶的求和 - 同阶可以游走,不同阶之间也可以游走
|
- 节点状态信息提取,重构,优化 - 重在节点,不考虑边了 - 所以将节点按固定顺序排成一列即可
- 用中心度的算法来计算节点的状态 - 个人猜测是 拉普拉斯矩阵 - 保留的是相对大小,做了归一化处理 - 固定的节点顺序 - i在j的前面 - 如果使用softmax,就像之前的那样,p(vi,vj)与p(vj,vi)一样 - 为了突显i在j前,对fvi-fvj做一次线性变换,再加一个sigmoid函数 来作为p(vi,vj)的概率 - 这里只是利用了sigmoid可以将数据变换到(0,1)之间的特性,类似于概念,但不是概率,却有工程意义 - -减号的不对称性,就区分出前后的差异了
|
- 比如在社交网络中,有些节点分布相对集中;社区与社区之间密度较低 - 社区发现 - 通讯网络中要以发现犯罪团伙
通过最大化模块度来发现社区/团伙
- Aij 邻接矩阵的(i,j)元
- 0或1
- 1表示有边
- 0表示无边
- 在有两个社区的情况下,1属于社区1,-1属于社区-1
- 在模型度公式中,是不知道hi是1还是-1的,需要学习后才发现
- 如果di与dj是随机提取的两个节点,
- 那么这两个节点之间出现边的概率为 dvi*dvj/vol(G)
- dvi*dvj/vol(G)
- 在保留图原有节点边的情况下,两个节点之间出现边的期望,
- 或者说就以这个公式作为两个节点之间边出现边的概率计算公式
- Aij - dvi*dvj/vol(G)
- Aij表示节点i与节点j之间 实际上 是否有边
- dvi*dvj/vol(G)表示i与j之间有边的期望
- 相差若大
- 若大,接近1,表示实际有边的概率很大;同时要求hi*hj的结果为正,即1*1=1或(-1)*(-1)=1,即hi与hj在同一社区
- 若小,
- 表示实际无边的概率很大,那么最好hi与hj为不同的值一个为1一个为-1
- 越大在同一社区的概率越大,越小在同一社区的概率越小
|
|
|
一句话 单词 中心词 左右单词 一张图 节点 中心节点 邻域(相邻节点组成的分布)
取中心节点与相邻节点的 相邻概率 关系
- 图不像句子中的单词,天然是个序列
- 图通过 随机游走 的方式先转换为序列,再取前后依赖的概率
|
边构成了结构
提取结构信息,就是观察边的构成,就是邻接矩阵
|
- 节点状态:使用重要性来代表状态,并进行排序
- 越重要的节点就会越集中于一端
大模型给出的方法
在图神经网络(GNN)和图算法中,**保留节点状态、节点信息**是一个非常核心的问题。
图结构的复杂性决定了我们需要设计合适的机制来传递、更新并保留节点的信息。
下面我将从几个角度系统地解释如何在 GNN 和图算法中实现这一目标:
## 一、图神经网络(GNN)中的节点状态保留机制
### 1. **消息传递机制(Message Passing)**
GNN 的基本操作是通过**邻居聚合**来更新节点表示,其过程如下:
- 每个节点收集其邻居节点的信息(message);
- 将这些信息聚合(如求和、均值、最大值等);
- 结合当前节点的原有信息进行更新(通常通过一个神经网络);
这个过程中,**旧的节点信息会被保留并通过某种方式融合进新的表示中**,从而避免完全丢失历史状态。
#### 示例:GraphSAGE
```python
h_v^{(l+1)} = σ(W ⋅ mean({h_u^{(l)} | u ∈ N(v) ∪ {v}}))
```
其中包含了当前节点 `v` 自身的信息。
h(l)是在 以l节点为中心及邻域节点的环境中 加权 激活 -- h(l+1)
### 2. **残差连接(Residual Connections)**
为了防止信息在多层传播中丢失,可以在 GNN 层之间加入残差连接:
```python
h_v^{(l+1)} = σ(W ⋅ AGG(...) + h_v^{(l)})
```
这使得每一层都能“记住”上一层的信息,从而保留节点的历史状态。
### 3. **门控机制(如 GRU、LSTM)**
有些 GNN(如 DCRNN、GRU-based GNN)使用**门控机制**来控制信息流动,决定哪些信息保留、哪些更新。
例如,在 GRU 中:
```python
h_v^{(l+1)} = (1 - z) * h_v^{(l)} + z * \tilde{h}
```
其中 `z` 是更新门,决定保留多少旧信息。
### 4. **注意力机制(如 GAT)**
在 GAT(Graph Attention Network)中,每个节点对邻居赋予不同的权重,这样可以更灵活地保留重要的信息。
```python
h_v^{(l+1)} = σ(Σ α_{vu} W h_u^{(l)})
```
这里的注意力系数 `α` 决定了哪些邻居信息更重要,有助于保留关键节点信息。
## 二、图算法中的节点信息保留方法 在传统的图算法中,虽然不使用神经网络,但也有多种方式来保留节点的状态或信息: ### 1. **标签传播(Label Propagation)** - 每个节点保留自己的标签; - 在迭代过程中,用邻居标签加权平均来更新自己; - 初始标签在整个过程中都有影响。 ### 2. **PageRank** - 每个节点有初始的 PageRank 值; - 每次迭代根据邻居节点的 PR 值重新计算; - 初始值会在多次迭代后逐渐衰减,但仍起作用。 ### 3. **随机游走(Random Walk)** - 某些图嵌入方法(如 DeepWalk、Node2Vec)基于随机游走生成序列; - 游走路径会保留节点访问顺序和频率信息; - 最终通过语言模型学习节点表示。 --- ## 三、综合策略:如何更好地保留节点信息? | 方法 | 是否保留节点信息 | 说明 | |------|------------------|------| | 消息传递(默认) | ✅ | 融合了邻居与自身信息 | | 残差连接 | ✅✅ | 显式保留历史状态 | | GRU / LSTM | ✅✅ | 控制信息保留程度 | | 注意力机制 | ✅✅ | 动态选择重要信息 | | 多跳聚合 | ❌⚠️ | 过度聚合会导致信息稀释(Over-smoothing) | --- ## 四、注意事项:信息丢失问题(Over-smoothing) 在深层 GNN 中,随着层数增加,所有节点的表示趋于相似,这种现象称为 **Over-smoothing**。为了解决这个问题,可以采用以下策略: - 使用残差连接; - 控制网络深度; - 使用跳跃连接(Jumping Knowledge Networks); - 使用个性化 PageRank(PPR)作为传播机制。 --- ## 五、总结 > **保留节点信息的关键在于:在每次信息更新时,合理融合当前节点的历史状态和新传来的邻居信息。** 你可以根据任务需求选择合适的方法: - 如果你希望保留更多原始节点信息 → 使用残差连接或跳跃连接; - 如果你想动态控制信息保留程度 → 使用 GRU 或注意力机制; - 如果你在处理浅层图结构 → 简单的消息传递即可; - 如果你在处理深层图结构 → 需要特别注意 Over-smoothing 问题。 --- 如果你有具体的场景(比如社交网络、知识图谱、蛋白质相互作用等),我可以结合具体任务给出更详细的建议。欢迎继续提问! |
|
|
|
|
根据质质图的特点,设置游走(为了使用类似word2vec的方式提取信息)的方法
不同的语义形成不同的链路
- mata-path元路径
- 如何发现链路,需要专业的知识进行定义,或者一些知识挖掘路径的方法等
确定随机游走的方法之后,剩下与简单图就一致了
|
两个用户指向同一个商品时,生成的子图v1中两个用户之间有链接,
如果是两个用户共同指向多个商品,则子图中两个用户之间的链接,是求和的结果
提取边的信息 e = (v1,v2)
计算两个节点之间边的概率p(e|v1,v2),并最大化实际两个节点之间有边的概率p
- 单条边计算方式:通过计算两个节点之间的相似性,来表征两个节点存在边的概率
|
异质图有不同的边,不同的节点,但任何两个节点之间,最多一个边 多维图,强调用是两个节点之间有多种关系 一个像素有三色,就可以认为是多维图 - 不同的是,多维图中的关系与RGB像素那样每个节点都是三色, - 多维图中两个节点之间的关系,是 边种类集合 的一个子集
如果只是节点分类,可能只需要通用映射就可以了 ,不需要再做维度特征映射 在涉及到特征维度时,再做相关的特征 |
符号图:两个用户之间之间只存在一种关系,正 或 负 - 两个事物之间一种关系的两个面:比如引力与斥力,喜欢与喜欢,正与反,是与非
s: 相似度函数 f(vi),f(vj)的相似度 - f(vi),f(vj)的相似度 > 阈值 - 尽可以让喜欢 与 不喜欢的 限界大一些,变得容易区分 - 最大化正与负之间的差异
|
之前图,侧重研究两个节点之间的关系, - 一个节点最多连接两个节点,并且分析问题的时候,是两个两个进行分析 超图,一个节点可以对应多个节点,是一种多对多的关系,要更加复杂
超边的信息:代表多个节点的信息 节点:一个节点出现在多个超边中,如何提取其共现信息 - 每个节点和其他节点共同出现的频率 f(vi) = MLP(Ai)
二分图 - 二组不同的节点 之间的关系 超图 - p(e|v1,v2,v3) v1,v2,v3 三个节点同时出现在一个超边中的概率
|
时序随机游走 除了邻域信息,更重要的是考虑节点发生的时间顺序 - v3->v5在t6, v5的邻域有v2,v6,v4 ,但t6的下一时刻只能是t7,因此仅有v5->v6 - 体现在概率上,就是让v5->v6的概率,高于v5->v2,v4的概率
|
|
|
|
|
|
|
|
|
|
|
- 图中的任务有两类 - 针对节点,比如节点分类 - 针对图,比如分子结构预测,一个图属于什么类别
图滤波输入:邻接矩阵,节点表示 图滤波输出:邻接矩阵,新的节点表示 图滤波不改变图的拓扑结构 图滤波重点在于改变节点的表示
图池化改变图的结构
|
- h = Lf - f 指图中的节点信号 - h(i) - 第i项h为第i个节点与其邻域所有节点差的和 - 差之和有正有负,并不能很好地表示差异的大小 - 通常使用二次型,平米,其结果为正, - 如此就可以衡量节点之间过渡的平滑程序 - 拉普拉斯矩阵可以看作节点与其领域的差分计算 - 如果相邻节点变化不大,就过渡平滑,低频 - 如果相信节点变化较大,就起伏明显,高频
- 半正定矩阵 - U:列向量 - 有一个特征值为0 - 特征向量i = ui的转置 L ui
- 特征向量从0到大的过程,就是频率由低到高的过程 - λi为特征值 - ui为特征向量 - 下图右上方的公式感觉写错了,应该是 fi = f·ui的转置
以特征向量ui为基 的一个线性组成 ,这也是傅立叶级数
|
- 图神经网络的输入是 - 节点的属性 - 图的拓扑结构,节点的邻域 - 图滤波/图卷积不改变图的网络结构,只是改变了节点的表达 - 图像领域,卷积不改变特征图的shape,改变了特征的维度,由m维转为n维 - 特征图的shape由池化组件改变
GFT:图FT,将图结构转换为节点向量,空间域--谱域 - U为拉普拉斯矩阵的行向量 - UT为其列向量 IGFT:反FT - 谱域 -- 空间域 f:图中的节点信息
g(λi)表示对特征频率进行过滤,比如, - 只保留低频信号 - 只保留高频信号 - 只保留某个范围内的信号 对频率特征处理后,再通过IGFT,将信息从谱域还原到空间域 空间信息 -- 谱域 -- 在谱域上对信息信息进行处理 -- 反傅立叶变换 -- 谱域到空间域
Ug(Λ)UT 写成 g(L) 会出现良好的特征 整个过程可以简化为 f -- g(L)f,相当于了过滤了一部分信号 - 新的信号少了大量的噪声
如果提前不知道信号的频率范围,就不知道是该保留高频,还是低频,还是特定频率的信号 - 从数据中学习 - 输入的数据是d1维,先变换到d2维,通常是先升维
|
|
|
|
|
神经网络】神经元ReLU、Leaky ReLU、PReLU和RReLU的比较