gcn在图像上的应用_GCN总结 - nxf_rabbit75 - 博客园

一、GCN简介

bcdbe860de29dfbb4325ff8a9aea45ad.png

GNN模型主要研究图节点的表示(Graph Embedding),图边结构预测任务和图的分类问题,后两个任务也是基于Graph Embedding展开的。目前论文重点研究网络的可扩展性、动态性、加深网络。

c9b87fce18a33545d27b5a92abecb278.png

cd730d674ebef6d6e32cc985ff8b47a7.png

谱卷积有理论支持,但有时候会受到拉普拉斯算子的限制;而空间域卷积更加灵活,主要困难在于选择定量邻域上,没有统一理论。

未来方向:

加深网络: 研究表明随着网络层数增加,模型性能急剧下降

感受野:节点的感受野是指一组节点,包括中心节点和其近邻节点,有些节点可能只有一个近邻,而有些节点却有数千个近邻

可扩展性:大部分图神经网络并不能很好地扩展到大型图上。

动态性和异质性:大多数当前的图神经网络都处理静态同质图。一方面,假设图架构是固定的。另一方面,假设图的节点和边来自同一个来源。

GCN模型具备深度学习的三种性质:

层级结构(特征一层一层抽取,一层比一层更抽象,更高级)

非线性变换 (增加模型的表达能力)

端对端训练(不需要再去定义任何规则,只需要给图的节点一个标记,让模型自己学习,融合特征信息和结构信息。)

GCN的四个特征:

GCN 是对卷积神经网络在 graph domain 上的自然推广

它能同时对节点特征信息与结构信息进行端对端学习,是目前对图数据学习任务的最佳选择。

图卷积适用性极广,适用于任意拓扑结构的节点与图。

在节点分类与边预测等任务上,在公开数据集上效果要远远优于其他方法。

通过谱图卷积的局部一阶近似,来确定卷积网络结构,通过图结构数据中部分有标签的节点数据对卷积神经网络结构模型训练,使网络模型对其余无标签的数据进行进一步分类。

二、spectral  domain

1.离散卷积是什么,在CNN中发挥什么作用?

离散卷积本质:加权求和

CNN中的卷积本质上就是利用一个共享参数的过滤器(kernel),**通过计算中心像素点以及相邻像素点的加权和来构成feature map实现空间特征的提取**,当然加权系数就是卷积核的权重系数。

那么卷积核的系数如何确定的呢?是随机化初值,然后根据误差函数通过反向传播梯度下降进行迭代优化。这是一个关键点,**卷积核的参数通过优化求出才能实现特征提取的作用,GCN的理论很大一部分工作就是为了引入可以优化的卷积参数。**

c0b95b9bdd35f3cd404eb6a101c76c9a.png

2.GCN中的Graph是指什么?为什么要研究GCN?

CNN是Computer Vision里的法宝,效果为什么好呢?原因在上面已经分析过了,可以很有效地提取空间特征。但是有一点需要注意:**CNN处理的图像或者视频数据中像素点(pixel)是排列成成很整齐的矩阵**(如图2所示,也就是很多论文中所提到的Euclidean Structure)。

7b3335efe8bd32400dfcc4eff43438fe.png

与之相对应,科学研究中还有很多Non Euclidean Structure的数据,如图3所示。社交网络、信息网络中有很多类似的结构。

5f4b5a45d0e291791472474183c54e79.png

实际上,这样的网络结构(Non Euclidean Structure)就是图论中抽象意义上的拓扑图。

所以,**Graph Convolutional Network中的Graph是指数学(图论)中的用顶点和边建立相应关系的拓扑图。**

那么为什么要研究GCN?原因有二:

(1)因为CNN无法处理非欧几里得结构的数据,学术上的表述是传统的离散卷积在非欧几里得结构的数据上无法保持平移不变性。通俗来说就是在拓扑图中每个顶点的相邻顶点数目都可能不同,那就没办法用一个同样尺寸的卷积核来进行卷积操作;

(2)广义来讲任何数据在赋范空间内都可以建立拓扑关联,谱聚类就是应用了这样的思想,所以说拓扑连接是一种广义的数据结构,GCN有很大的应用空间。

综上,GCN是要为除CV、NLP之外的任务提供一种处理、研究的模型。

3.提供拓扑图空间特征的两种方式

(1)vertex domain(spatial domain)

提取拓扑图上的空间特征,就是把每个顶点的相邻neighbors找出来

a.按照什么条件去找中心vertex的neighbors,如何确定receptive filed?

b.确定了receptive field之后,按照什么方式处理包含不同数目neighbors的特征?

5dfee7ede747f20393056463c5fc1dea.png

这种方法主要的缺点如下:

c.每个顶点提取出来的neighbors不同,使得计算处理必须针对每个顶点

d.提取特征的效果可能没有卷积好

(2)spectral domain

借助图谱的理论来实现拓扑图上的卷积操作。从研究的时间进程来看:首先研究GSP(graph signal processing)的学者定义了graph上的傅里叶变换,进而定义了graph上的卷积,最后与深度学习结合提出了Graph convolutional network.

Q1 什么是Spectral graph theory?

简单的概括就是**借助于图的拉普拉斯矩阵的特征值和特征向量来研究图的性质**

Q2 GCN为什么要利用Spectral graph theory?

这应该是看论文过程中读不懂的核心问题了,要理解这个问题需要大量的数学定义及推导,短期内难以驾驭,有时间再补

4.什么是拉普拉斯矩阵?为什么GCN要用拉普拉斯矩阵?

Graph Fourier Transformation及Graph Convolution定义都用到图的拉普拉斯矩阵,那么首先来介绍一下拉普拉斯矩阵。

对于图$G=(V,E)$其Laplacian 矩阵的定义为 $L=D-A$,其中$L$是Laplacian 矩阵,$D$ 是顶点的度矩阵(对角矩阵),对角线上元素依次为各个顶点的度,$A$是图的邻接矩阵。

50f9721b4b8058445acc9cc1e66c33a0.png

常用的拉普拉斯矩阵实际用三种:

NO.1:Combinatorial Laplacian:$L=D-A$

NO.2:Symmetric normalized Laplacian:$L^{sys}=D^{-1/2}LD^{-1/2}$

NO.3:Random walk normalized Laplacian:$L^{rw}=D^{-1}L$

为什么GCN要用拉普拉斯矩阵?

(1)拉普拉斯矩阵是对称矩阵,可以进行特征分解(谱分解),这就和GCN的spectral domain对应上了

(2)拉普拉斯矩阵只在中心顶点和一阶相连的顶点上(1-hop neighbor)有非0元素,其余之处均为0

(3)通过拉普拉斯算子与拉普拉斯矩阵进类比(详见第6节)

5.拉普拉斯矩阵的谱分解(特征分解)

矩阵的谱分解,特征分解,对角化都是同一个概念

不是所有的矩阵都可以特征分解**,其充要条件为n阶方阵存在n个线性无关的特征向量。

但是拉普拉斯矩阵是半正定对称矩阵**(半正定矩阵本身就是对称矩阵)有如下三个性质:

对称矩阵一定n个线性无关的特征向量

半正定矩阵的特征值一定非负

对阵矩阵的特征向量相互正交,即所有特征向量构成的矩阵为正交矩阵。

由上可以知道拉普拉斯矩阵一定可以谱分解,且分解后有特殊的形式。

对于拉普拉斯矩阵其谱分解为:

$$

L=U\begin{pmatrix}

\lambda_1& & \\

& ...& \\

& & \lambda_n

\end{pmatrix}U^{-1}

$$

其中,$U=(\overrightarrow{u_1},\overrightarrow{u_2},...,\overrightarrow{u_n})$,是列向量为单位特征向量的矩阵,$\begin{pmatrix}

\lambda_1& & \\

& ...& \\

& & \lambda_n

\end{pmatrix}$是n个特征值构成的对角阵。

由于$U$是正交矩阵,即$UU^T=E$

所以特征分解又可以写成:

$$L=U\begin{pmatrix}

\lambda_1& & \\

& ...& \\

& & \lambda_n

\end{pmatrix}U^{T}$$

6.如何从传统的傅里叶变换、卷积类比到Graph上的傅里叶变换及卷积?

把传统的傅里叶变换以及卷积迁移到Graph上来,核心工作其实就是把拉普拉斯算子的特征函数$e^{-iwt}$变为Graph对应的拉普拉斯矩阵的特征向量。

(1)推广傅里叶变换

(a)Graph上的傅里叶变换

传统的傅里叶变换定义为

$$F(W)=F[(t)]=\int f(t)e^{-iwt}dt$$

信号$f(t)$与基函数$e^{-iwt}$ 的积分,那么为什么要找$e^{-iwt}$作为基函数呢?从数学上看,

$e^{-iwt}$是拉普拉斯算子的特征函数,$w$就和特征值有关。

$LV=\lambda V$ $L$是拉普拉斯矩阵,$V$是其特征向量

离散积分就是一种内积形式,仿上定义Graph上的傅里叶变换

$$F(\lambda _l)=\hat f(\lambda _l)=\sum _{i=1}^Nf(i)u_l^{*}(i)$$

$\lambda_l$是拉普拉斯矩阵的第$l$个特征向量

$f$是Graph上的$N$维向量,$f(i)$与Graph的顶点一一对应,$u_l(i)$表示第$l$个特征向量的第$i$个分量,那么特征值(频率)$\lambda _l$下的,$f$的Graph傅里叶变换就是与$\lambda_l$对应的特征向量$u_l$进行内积运算。

傅里叶变换就是时域信号与拉普拉斯算子特征函数在时间上的积分

**利用矩阵乘法将Graph上的傅里叶变换推广到矩阵形式:**

$$\begin{pmatrix}

\hat f(\lambda_1) \\

\hat f(\lambda_2) \\ ... \\

\hat f(\lambda_N)

\end{pmatrix}=\begin{pmatrix}

u_1(1)& u_1(2)& u_1(N)\\

u_2(1)& u_2(2)& u_2(N)\\...& ...& ...\\

u_N(1)& u_N(2)& u_N(N)\\

\end{pmatrix}\begin{pmatrix}

f(1)\\

f(2) \\

...\\ f(N) \\

\end{pmatrix}$$

即$f$在Graph上傅里叶变换的矩阵形式为:$\hat f=U^Tf$

(b)Graph上的傅里叶逆变换

$$F^{-1}(F(w))=\frac{1}{2 \pi}\int F(w)e^{iwt}dw$$

迁移到Graph上变为对特征值$\lambda_l$求和

$$f(i)=\sum _{i=1}^N\hat f(\lambda_i)u_l(i)$$

**利用矩阵乘法将Graph上的傅里叶逆变换推广到矩阵形式:**

$$\begin{pmatrix}

f(1) \\

f(2) \\ ... \\

f(N)

\end{pmatrix}=\begin{pmatrix}

u_1(1)& u_2(1)& u_N(1)\\

u_1(2)& u_2(2)& u_N(2)\\...& ...& ...\\

u_1(N)& u_2(N)& u_N(N)\\

\end{pmatrix}\begin{pmatrix}

\hat f(\lambda_1)\\

\hat f(\lambda_2) \\

...\\ \hat f(\lambda_N) \\

\end{pmatrix}$$

即$f$在Graph上傅里叶逆变换的矩阵形式为:$f=U\hat f$

(2)推广卷积

卷积定理:函数卷积的傅里叶变换是函数傅立叶变换的乘积,即对于函数$f(t)$与$h(t)$两者的卷积是其函数傅立叶变换乘积的逆变换:

$f*h=F^{-1}[\hat f(w) \hat h(w)]=\frac {1}{2\pi} \int \hat f(w) \hat h(w) e^{iwt}dw $

类比到Graph上并把傅里叶变换的定义带入,$f$与卷积核$h$在Graph上的卷积可按下列步骤求出:

$f$的傅里叶变换为$\hat f=U^Tf$

卷积核$h$的傅里叶变换写成对角矩阵的形式即为:

$$\begin{pmatrix}

\hat h( \lambda_1)& & \\

& ...& \\

& & \hat h( \lambda_n)

\end{pmatrix}$$

$\hat h(\lambda_l)=\sum ^N _{i=1}h(i)u_l^*(i)$是根据需要设计的卷积核$h$在Graph上的傅里叶变换

卷积为:$(f*h)_G=U\begin{pmatrix}

\hat h( \lambda_1)& & \\

& ...& \\

& & \hat h( \lambda_n)

\end{pmatrix}U^Tf$

7.为什么拉普拉斯矩阵的特征向量可以作为傅里叶变换的基?特征值表示频率?

(1)为什么拉普拉斯矩阵的特征向量可以作为傅里叶变换的基?

傅里叶变换一个本质理解就是:**把任意一个函数表示成了若干个正交函数(由sin,cos 构成)的线性组合。

graph傅里叶变换也把graph上定义的任意向量 ![[公式]](https://www.zhihu.com/equation?tex=f) ,表示成了拉普拉斯矩阵特征向量的线性组合,即:

$f=\hat f(\lambda_1)u_1+\hat f(\lambda_2)u_2+...+\hat f(\lambda _n)u_n$

那么:为什么graph上任意的向量$f$都可以表示成这样的线性组合?

原因在于$(\overrightarrow{u_1},\overrightarrow{u_2},...,\overrightarrow{u_n})$是graph上n维空间中的n个线性无关的正交向量

(2)怎么理解拉普拉斯矩阵的特征值表示频率?

在graph空间上无法可视化频率的概念,信息论告诉我们,特征值越大,对应的信息越多,小的特征值就是低频分量,信息较少,是可以忽略的。

在压缩图像的过程中,也是把低频成分变为0,高频(边缘)会被保留,它带给我们更多的信息。

8.深度学习中的图卷积

(1)第一代GCN

来自论文:[Spectral Networks and Locally Connected Networks on Graphs](https://arxiv.org/abs/1312.6203)

把$diag(\hat h(\lambda _l))$变成了卷积核$diag(\theta _l)$

$y_{output} = \sigma(Ug_{\theta}(\Lambda)U^Tx)$

(为避免混淆,下面称$g_{\theta}(\Lambda )$是卷积核,$Ug_{\theta}(\Lambda)U$的运算结果为卷积运算矩阵)

$g_{\theta}(\Lambda)=\begin{pmatrix}

\theta_1& & \\

& ...& \\

& & \theta_n

\end{pmatrix}$

$\Theta=(\theta_1,\theta_2,...,\theta_n$就跟三层神经网络中的weight一样是任意的参数,通过初始化赋值然后利用误差反向传播进行调整,$x$就是graph上对应于每个顶点的feature vector(由数据集提取特征构成的向量)

第一代GCN的弊端:

每一次前向传播,都要计算$U、g_{\theta}(\Lambda)、U^T$三者的矩阵乘积,特别是对于大规模的graph,计算的代价较高,复杂度为$O(n^2)$

卷积核不具有spatial localization

卷积核需要n个参数

(2)第二代GCN

将$\hat{h}\left(\lambda_{l}\right)$巧妙地设计成了$\sum_{j=0}^{K} \alpha_{j} \lambda_{l}^{j}$,也就是$y_{\text {output}}=\sigma\left(U g_{\theta}(\Lambda) U^{T} x\right)$,

$g_{\theta}(\Lambda)=\left(\begin{array}{cccc}{\sum_{j=0}^{K} \alpha_{j} \lambda_{1}^{j}} & {} & {} & {} \\ {} & {\ddots} & {} & {} \\ {} & {} & {} & {\sum_{j=0}^{K} \alpha_{j} \lambda_{n}^{j}}\end{array}\right)$

下面利用矩阵乘法进行变换

$\left(\begin{array}{cccc}{\sum_{j=0}^{K} \alpha_{j} \lambda_{1}^{j}} & {} & {} \\ {} & {\ddots} & {} \\ {} & {} & {\sum_{j=0}^{K} \alpha_{j} \lambda_{n}^{j}}\end{array}\right)=\sum_{j=0}^{K} \alpha_{j} \Lambda^{j}$

进而可以导出:

$U \sum_{j=0}^{K} \alpha_{j} \Lambda^{j} U^{T}=\sum_{j=0}^{K} \alpha_{j} U \Lambda^{j} U^{T}=\sum_{j=0}^{K} \alpha_{j} L^{j}$

上式成立是因为 $L^{2}=U \Lambda U^{T} U \Lambda U^{T}=U \Lambda^{2} U^{T} \mathbb{E} U^{T} U=E$

$y_{output}$就变成了$y_{\text {output}}=\sigma\left(\sum_{j=0}^{K} \alpha_{j} L^{j} x\right)$

其中$\left(\alpha_{1}, \alpha_{2}, \cdots, \alpha_{K}\right)$是任意的参数,通过初始化赋值然后利用误差反向传播进行调整。

所设计的卷积核其优点在于:

a.卷积核只有K个参数,一般K远小于n,参数的复杂度被大大降低了;

b.矩阵变换后,不需要做特征分解了,直接用拉普拉斯矩阵L进行变换,然而由于要计算$L^j$,计算复杂度还是$O(n^2)$

c.卷积核具有很好的spatial localization,特别的,K就是卷积核的receptive field,也就是说每次卷积会将中心节点K-hop neighbor上的feature进行加权求和,权系数就是$\alpha_k$

更直观地看,$K=1$就是对每个顶点上一阶neighbor的feature进行加权求和,如下图所示:

bfe09b4e0572e8c466d12f2804119ba1.png

同理,K=2的情形如下图所示:

a4c3e40998da2df3c77424fbb012759f.png

注:上图只是以一个顶点作为实例,GCN每一次卷积对所有的顶点都完成了图示的操作。

第二代GCN的弊端:

参数太少了,只有$K$个,使得模型无法很好地实现在同阶的邻域上分配不同的权重给不同的邻居(也就是GAT论文里说的 enable specifying different weights to different nodes in a neighborhood)

(3)第三代GCN---降低计算复杂度

在第二代GCN中,$L$是n*n的矩阵,所以$L^j$的计算还是$O(n^2)$的,《Wavelets on graphs via spectral graph theory》提出了利用Chebyshev多项式拟合卷积核的方法,来逼近计算复杂度。卷积核$g_{\theta}(\Lambda)$可以用截断的(truncated)的shifted Chebyshev多项式来逼近。

$g_{\theta}(\Lambda)=\sum_{k=0}^{K-1} \beta_{k} T_{k}(\tilde{\Lambda})$

$\beta_k$是Chebyshev多项式的系数

$T_{k}(\tilde{\Lambda})$是取$\tilde{\Lambda}=2 \Lambda / \lambda_{\max }-I$的Chebyshev多项式,进行这个shift变换的原因是Chebyshev多项式的输入要在[-1,1]之间。由Chebyshev多项式的性质,可以得到如下的递推公式:

$T_{k}(\tilde{\Lambda}) x=2 \tilde{\Lambda} T_{k-1}(\tilde{\Lambda}) x-T_{k-2}(\tilde{\Lambda}) x$

$T_{0}(\tilde{\Lambda})=I, T_{1}(\tilde{\Lambda})=\tilde{\Lambda}$

[$T_0(x)=1,T_1(x)=x,T_k(x)=2xT_{k-1}(x)-T_{k-2}(x)$]

其中,$x$的定义同上,是n维的由每个顶点的特征构成的向量(当然,也可以是$n*m$的特征矩阵,这时每个顶点都有$m$个特征,但是$m$通常远小于$n$)

不难发现:上式的运算不再有矩阵乘积了,只需要计算矩阵与向量的乘积即可。计算一次$T_{k}(\tilde{\Lambda}) x$的复杂度是$O(|E|)$,$E$是图中边的几何,整个运算的复杂度是$O(K|E|)$,当graph是稀疏图的时候,计算加速尤为明显,这个时候复杂度远低于$O(n^2)$

(4)第四代GCN

通过使用Chebyshev多项式近似,我们已经成功得降低了卷积核计算的复杂度。这篇文章中进一步对卷积核的计算做了近似,产生了我们所熟知的GCN逐层传播公式。

在GCN模型中,作者首先做了额外的两个假设:$\lambda_{\max}\approx 2, K=1$, 这两个假设可以大大简化模型。而作者希望假设造成的误差可以通过神经网络参数训练过程来自动适应。在这两个假设的条件下:

$$

y_{out} = \sigma(Ug_\theta(\Lambda)U^\top x) \\

Ug_\theta(\Lambda)U^\top x \approx \sum^1_{k=0}\theta_kT_k(\tilde{\Lambda})x =\theta_{0} x+\theta_1\left(L-I\right) x=\theta_0 x-\theta_1 D^{-\frac{1}{2}} A D^{-\frac{1}{2}} x

$$

上式有两个参数$\theta_0$和$\theta_1$。这两个参数可以在整个图所有节点的计算中共享。在实践中,进一步限制参数的个数能够一定程度上避免过拟合的问题,并且减少计算量。因此作者又引入了另一个假设:$\theta=\theta_0=-\theta_1$做进一步的近似:

$$

Ug_\theta(\Lambda)U^\top x \approx \theta\left(I+D^{-\frac{1}{2}} A D^{-\frac{1}{2}}\right) x

$$

注意$I+D^{-\frac{1}{2}} A D^{-\frac{1}{2}}$的特征值被限制在了[0,2]中。由于这一步生成的$y_{out}$可能作为下一层的输入$x$, 会再次与$I+D^{-\frac{1}{2}} A D^{-\frac{1}{2}}$相乘重复这样的操作将会导致数值不稳定、梯度弥散/爆炸等问题。为了缓解这样的问题,作者引入了这样的再正则化(renormalization)技巧:$I_{N}+D^{-\frac{1}{2}} A D^{-\frac{1}{2}} \rightarrow \tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}}$,其中$\tilde{A}=A+I_{N}, \tilde{D}_{i i}=\sum_{j} \tilde{A}_{i j}$

最后得到了大家耳熟能详的GCN逐层更新公式:输入节点矩阵$X\in \mathbb{R}^{N\times C}$, 每个输入节点有C个通道(channels, 即每个图节点有C维特征),卷积操作包含F个滤波器(filters)或特征映射(feature maps), 如下:

$$

Y=\sigma\left(\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} X \Theta\right)

$$

其中$\Theta\in \mathbb{R}^{C\times F}$ 是filters的参数矩阵, $Y\in \mathbb{R}^{N\times F}$ 是卷积之后的节点矩阵。

9.关于有向图问题

前面的理论推导都是关于无向图,如果是有向图问题,最大的区别就是邻接矩阵会变成非对称矩阵,这个时候不能直接定义拉普拉斯矩阵及其谱分解,有两条思路解决问题“

(1)要想保持理论上的完美,就需要重新定义图的邻接关系,保持对称性

比如《MotifNet: a motif-based Graph Convolutional Network for directed graphs》提出利用Graph Motifs定义图的邻接关系。

(2)如果只是为了应用,有其他形式的GCN或者GAT可以处理有向图

三、经典算法

(一)Spectral domain

1.半监督学习节点分类---两层GCN

论文:“SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS“,2017 ICLR

作者:阿姆斯特丹大学Thomas N. Kipf, Max Welling

611e6f23b97585e387f69f60f2425b33.png

1b8eea0af7a5530ec41fa32b384c3c1f.png

3a244ab34b517214f797d23fafbe4bd0.png

07a0bb336e3cd8b861c0cca6076fd467.png

e25a5bcd70d2afed7144d037f1e51711.png

总结:如果数据可以构成图,可以考虑下图卷积GCN,将卷积网络用于图数据上能对网络中的节点或者整个图进行分类,能利用节点的属性和节点的label进行训练,但这个算法不适应与规模大的图结构,因为GCN需要输入整个邻接矩阵A和特征矩阵X,这是非常耗内存的。

2.基于多图卷积网络的自行车流量预测

论文:“Bike Flow Prediction with Multi-Graph Convolutional Networks“, 2018 ACM空间地理信息系统

作者:香港科技大学 Di Chai, Leye Wang, Qiang Yang

问题描述:利用t时刻以前的进站流和出站流预测t时刻的进站流和出站流

三个模块:

构建和融合多图:定义站点间不同关系并融合得到Graph。

GCN+encoder-decoder模型:生成包含时间、空间、流量等信息的embeddingMLP:

结合embedding和节假日、天气等其他特征去预测站点流量。

d81fda017ad766fef08733aa6a76b86c.png

83cc3c9e293a8472f715b930558c924d.png

27d16e6c9fda7e63bb222341fd028e97.png

52003df93dbb5ca56621f62fbef2d9fd.png

本文构建了多张空间关系,通过多张图得到预测效果。encoder-decoder的结构存在局限性,输入输出的维度是固定的。当预测短期的流量时,本文的模型更适用。

(二)Spatial domain

1.DeepWalk( Random walk + Word2vec)

论文:“DeepWalk: Online Learning of Social Representations”,2014 KDD

作者:纽约州立大学Bryan Perozzi, Rami Al-Rfou, Steven Skiena

Transductive Learning

Corpus : Graph作为”语料库”;随机游走(采样)构建”句子”

可并行进行多个随机游走

应用:阿里提出了EGES(在DeepWalk的基础上引入物品信息),用于生成物品的embeddings

e85132e9c973fb02f36d54d4b3a80919.png

DeepWalk的主要问题是它缺乏泛化能力。 每当有新节点加入到图中时,它必须重新训练模型以正确表示该节点( 直推式学习 )。 因此,这种GNN不适用于图中节点不断变化的动态图。

2.GraphSAGE( Graph SAmple and aggreGatE)

论文:”Inductive Representation Learning on Large Graphs”,2017 NIPS

作者:斯坦福大学William L. Hamilton, Rex Ying, Jure Leskovec

Inductive Learning

Deepwalk,LINE, node2vec, SDNE等模型能够高效地得到每个节点的embedding。然而,这些方法无法有效适应动态图中新增节点的特性, 往往需要从头训练或至少局部重训练。

通过对节点的本地邻域中的特征进行采样和聚合(平均/LSTM/pooling聚合)来生成嵌入,而不是为每个节点训练单个嵌入。

聚合器参数和权重变量的学习:有监督情况下,可以使用每个节点的预测label和真实label的交叉熵作为损失函数;无监督情况下,可以假设相邻节点的输出embedding应当尽可能相近,保证相邻节点的embedding的相似度尽量大的情况下,保证不相邻节点的embedding的期望相似度尽可能小。

79a3546d6b8f7a9e93011100d0b936c6.png

cbd2334fe5db149ee41c7ebddeb31382.png

d215e426fb8c7983137982f0c10c5386.png

3.GAT

基本的图神经网络算法GCN, 使用采样和聚合构建的inductive learning框架GraphSAGE, 然而图结构数据常常含有噪声,意味着节点与节点之间的边有时不是那么可靠,邻居的相对重要性也有差异,解决这个问题的方式是在图算法中引入“注意力”机制(attention mechanism), 通过计算当前节点与邻居的“注意力系数”(attention coefficient), 在聚合邻居embedding的时候进行加权,使得图神经网络能够更加关注重要的节点,以减少边噪声带来的影响。

三种注意力机制算法,都可以用来生成邻居的相对重要性:

学习注意力权重(Learn attention weights)

相似性注意力(Similarity-based attention)

注意力引导的随机游走(Attention-guided walk)

首先我们对“图注意力机制”做一个数学上的定义:

定义(图注意力机制):

给定一个图中节点$v_0$ 和$v_0$的邻居节点$\left\{v_{1}, \cdots, v_{\vert\Gamma_{v_{0}}\vert}\right\} \in \Gamma_{v_{0}}$(这里的 $\Gamma_{v_{0}}$ 和GraphSAGE博文中的 $\mathcal{N}(v_0)$ 表示一个意思)。注意力机制被定义为将$\Gamma_{v_{0}}$中每个节点映射到相关性得分(relevance score)的函数$f^{\prime} :\left\{v_{0}\right\} \times \Gamma_{v_{0}} \rightarrow[0,1]$,相关性得分表示该邻居节点的相对重要性。满足:$\sum_{i=1}^{\vert\Gamma_{v_{0}}\vert} f^{\prime}\left(v_{0}, v_{i}\right)=1$

四、举例

f00a7a5dba75c9dabbc6c304c20b2d65.png

从图数据中节点间的关系以及特征,我们可以进行反欺诈以及商品推荐的操作。

节点分类—反欺诈:因为图中每个节点都拥有自己的特征信息。通过该特征信息,我们可以构建一个风控系统,如果交易节点所关联的用户 IP 和收货地址与用户注册 IP 和注册地址不匹配,那么系统将有可能认为该用户存在欺诈风险。

边结构预测—商品推荐:图中每个节点都具有结构信息。如果用户频繁购买某种类别商品或对某种类别商品评分较高,那么系统就可以认定该用户对该类商品比较感兴趣,所以就可以向该用户推荐更多该类别的商品。

参考文献:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527957.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql源码_MySql轻松入门系列——第一站 从源码角度轻松认识mysql整体框架图

一:背景1. 讲故事最近看各大技术社区,不管是知乎,掘金,博客园,csdn基本上看不到有小伙伴分享sqlserver类的文章,看来在国内大环境下是不怎么流行了,看样子我再写sqlserver是不可能再写了&#x…

测试图片色域软件,显示器色域检测

色域是颜色的一种编码,也是某一个规定的色彩空间或者输出装置呈现出来的一个颜色范围,展示给用户看到的颜色,使用显示器色域检测工具,可以检测到电脑显示器的色域情况,并且提供具体的参数,这款软件对于需要…

计算机专业研究生应该如何规划,【图片】2020考研,老学长教你如何规划!【计算机考研吧】_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼二、关键一步——院校选择我把各位同学的院校选择阶段分为以上几个阶段,因为考研这一年中,很多人的目标院校并不是固定不变的,而是随着不同阶段而改变的。学长我在大三下学期这一时间段内也多次更…

哈尔滨大学计算机和金融,山东153所大学最新排名,46所公办本科,看看有你喜欢的吗...

作为人口大省的山东,也是我国有名的教育大省,不但经济发达,地理位置优越,教育资源也是比较丰富的,山东省有153所大学,在大学数量上还是比较多的。但是山东省在高端教育上一直被吐槽,全国知名大学…

dubbo protocol port 消费者端_企业级 SpringBoot 与 Dubbo 的并用

点击上方“匠心零度”,选择“设为星标”做积极的人,而不是积极废人作者:SimpleWucnblogs.com/SimpleWu/p/10833555.htmlSpringBoot 和 Dubbo 又能碰撞出什么火花呢?我们来看看企业级 SpringBoot 与 Dubbo 的并用。版本:Springboot…

心理学博士vs计算机博士,零基础跨专业考心理学博士,可以给我一些建议吗?...

5星优质答主关注有用62020-12-19回答了:关于跨专业考心理学博士的问题,我曾经也有探索过,说一些我的经历,希望能给你带来一些些帮助。我知道的跨专业考心理学博士最知名的例子就是岳晓东教授,他的经历你可以参考一下&a…

在react项目中编写css,更好的在react项目中写css代码--emotion

简介:emotion是一个JavaScript库,使用emotion可以用写js的方式写css代码。在react中安装emotion后,可以很方便进行css的封装,复用。使用emotion后,浏览器渲染出来的标签是会加上一个css开头的标识。如下:截…

mysql 5.7 差异备份_MySQL 5.7 新备份工具mysqlpump 使用说明 - 运维小结

之前详细介绍了Mysqldump备份工具使用,下面说下MySQL5.7之后新添加的备份工具mysqlpump。mysqlpump是mysqldump的一个衍生,mysqldump备份功能这里就不多说了,现在看看mysqlpump到底有了哪些提升,详细可以查看官网文档。mysqlpump和…

腾达路由器dns服务器未响应,腾达路由器的设置方法

腾达路由器的设置方法许多刚买了tenda路由器的新手朋友们,还不知道腾达tenda路由器的设置方法,下面将通过图文并茂的方式,为你详细的介绍tenda路由器的具体设置步骤,希望能够帮助到你!步骤一:连接好线路电话线入户的用…

mysql8审计_审计对存储在MySQL 8.0中的分类数据的更改

作者:Mike Frank 译:徐轶韬面临的挑战使用敏感信息时您需要拥有审计日志。通常,此类数据将包含一个分类级别作为行的一部分,定义如何处理、审计等策略。在之前的博客中,我讨论了如何审计分类数据查询。本篇将介绍如何…

mysql订单详情的设计_订单功能模块设计与实现

在商城项目中,之前我们介绍了购物车功能模块的实现,商品加入到购物车之后,就是到购物车结算,然后显示购物车的商品列表,点击去结算,然后到了未提交前的订单列表,点击提交订单后,生成…

mysql乱码问题_mysql乱码问题

mysql乱码问题出现乱码的原因:因为当前的CMD客户端窗口与数据库本身及库,表的编码格式不一致导致的。所以当出现乱码的时候,请排查:* sql文件的编码格式* 当前CMD客户端窗口的编码格式* 数据库服务本身的编码格式* 数据库的编码格…

mysql的纵向扩展方案_SQL Server横向扩展方案-SODA

SQL Server横向扩展方案-SODA每次在提到SQL Server扩展性问题的时候,似乎很多的SQL Server DBA或者使用微软技术开发的朋友心里总是一整痛:SQL Server只能纵向的扩展(Scaling-Up),无法横向的扩展(Scaling-Out)。每次有人提到Oracle和SQL Serv…

mysql8.0.11启动不了_8.0.11版本Mysql遇到MySQL 服务无法启动的解决方法

转:https://blog.csdn.net/iyayaqiqi/article/details/80536110系统环境:win10(1803),64位MySQL版本:8.0.11免安装版MySQL下载地址:https://dev.mysql.com/downloads/mysql,在下载页面往下拉,选择自己的操作…

python爬虫数据可视化软件_python爬虫及数据可视化分析

1.前言本篇文章主要介绍python爬虫及对爬取的数据进行可视化分析,本次介绍所用的网站是(https://www.duanwenxue.com/jingdian/zheli/)2.数据爬取2.1定位到爬取数据打开我们要爬取的网页,右键选择检查,在窗口中单击左上角箭头,即可…

java趣事_【趣事】Java程序员最年轻,C++程序员最年老

原标题:【趣事】Java程序员最年轻,C程序员最年老说起我们对编程世界现有的刻板印象,你一定听说过类似于没有人喜欢用Java编码或者使用C 都是老人家,等等这样的话。为了分析这些刻板印象背后的真相,Trestle Technology的…

koa2 mysql 中间件_Koa2 和 Express 中间件对比

koa2 中间件koa2的中间件是通过 async await 实现的,中间件执行顺序是“洋葱圈”模型。中间件之间通过next函数联系,当一个中间件调用 next() 后,会将控制权交给下一个中间件, 直到下一个中间件不再执行 next() 后, 将会沿路折返,将控制权依次交换给前一…

qt 飞扬青云_Qt编写带频谱的音乐播放器

之前有个项目需要将音频文件的频谱显示出来,想了很多办法,后面发现fmod这个好东西,还是跨平台的,就一个头文件一个库文件就行,简单小巧功能强大,人家做的真牛逼。为了不卡住界面,采用了多线程处…

java什么是工作流程_springmvc工作流程是什么

springmvc工作流程是什么:1、springmvc工作原理图2、springmvc工作流程1、 用户向服务端发送一次请求,这个请求会先到前端控制器DispatcherServlet(也叫中央控制器)。2、DispatcherServlet接收到请求后会调用HandlerMapping处理器映射器。由此得知&#…

java se入门_java SE 入门之运算符(第三篇)

在 java 中主要有以上运算符,分为 赋值运算符 ,算术运算符、关系运算符(比较运算符),逻辑运算符和三目运算符(三元运算符).我们一起来学习下吧!一、赋值运算符赋值运算符主要有五个、分别是 (赋值)、(加上一个在赋值)、-(减去一个在赋值)、*…