学习geometric deep learning笔记系列

转载 2020-01-12 22:29  阅读 44 次 评论 0 条

总的来说,数据类型可以分为两大类,分别是:欧几里德结构数据(Euclidean Structure Data) 以及 非欧几里德结构数据(Non-Euclidean Structure Data),接下来谈自己对这两类数据的认识。

欧几里德结构样本

在我们日常生活中,最常见到的媒体介质莫过于是图片(image)视频(video)以及语音(voice)了,这些数据有一个特点就是:“排列整齐”。什么叫做排列整齐呢?举例子来说,图片可以用矩阵来表达其像素,就如同下图所示[2]:
image

对于某个节点,我们很容易可以找出其邻居节点。而且,图片数据天然的,节点和邻居节点有着统计上的相关性,因此能够找出邻居节点意味着可以很容易地定义出卷积这个操作出来,而我们在深度学习的过程中知道,卷积这个操作是提取局部特征以及层次全局特征的利器,因此图片可以很容易定义出卷积操作出来,并且在深度网络中进行进一步操作。

而且,因为这类型的数据排列整齐,不同样本之间可以容易的定义出“距离”这个概念出来。我们且思考,假设现在有两个图片样本,尽管其图片大小可能不一致,但是总是可以通过空间下采样的方式将其统一到同一个尺寸的,然后直接逐个像素点进行相减后取得平方和,求得两个样本之间的欧几里德距离是完全可以进行的。如下式所见:

\(d(\mathbf{s_i}, \mathbf{s_j}) = \dfrac{1}{2}||\mathbf{s_i}-\mathbf{s_j}||^2
\tag{1}\)

因此,不妨把图片样本的不同像素点看成是高维欧几里德空间中的某个维度,因此一张\(m * n\)的图片可以看成是\(m * n\)维的欧几里德样本空间中的一个点,而不同样本之间的距离就体现在了样本点之间的距离了。

这就是为什么称之为欧几里德结构数据的原因了。

同样的,视频可以在时间轴上进行采样做到统一的目的,而音频也是一样的。因此它们都是符合欧几里德距离定义的类型的样本。

非欧几里德结构样本

非欧几里德结构的样本总得来说有两大类型[1],分别是图(Graph)数据[3]和流形数据[4],如下图所示:

Graph
Fig 1: Graph数据
manifold
Fig 2: Manifold数据

这两类数据有个特点就是,排列不整齐,比较的随意。具体体现在:对于数据中的某个点,难以定义出其邻居节点出来,或者是不同节点的邻居节点的数量是不同的[5],这个其实是一个特别麻烦的问题,因为这样就意味着难以在这类型的数据上定义出和图像等数据上相同的卷积操作出来,而且因为每个样本的节点排列可能都不同,比如在生物医学中的分子筛选中,显然这个是一个Graph数据的应用,但是我们都明白,不同的分子结构的原子连接数量,方式可能都是不同的,因此难以定义出其欧几里德距离出来,这个是和我们的欧几里德结构数据明显不同的。因此这类型的数据不能看成是在欧几里德样本空间中的一个样本点了,而是要想办法将其嵌入(embed)到合适的欧几里德空间后再进行度量。而我们现在流行的Graph Neural Network便可以进行这类型的操作。这就是我们的后话了。

另外,欧几里德结构数据所谓的“排列整齐”也可以视为是一种特殊的非欧几里德结构数据,比如说是一种特殊的Graph数据,如下图所示[5]:
在这里插入图片描述

因此,用Graph Neural Network的方法同样可以应用在欧几里德结构数据上,比如文献[6]中report的结果来看,的确这样是可行的。事实上,只要是赋范空间中的数据,都可以建立数据节点与数据节点之间的某种关联,都可以尝试用非欧几里德结构数据的深度方法进行实验。[7]

那么什么叫做赋范空间中的数据呢?赋范空间,指的就是定义了范数的向量空间,我认为,指的是数据中的每个样本的单元的特征维度都是一致的,比如,一张图片的像素一般都是RGB三个维度的,不同像素之间可以进行求范数的操作,再比如,一个Graph上的某个节点和另外一个节点的维度都是相同的,因此也可以定义出范数出来。不过这个是我一家之言,如有其他见解,请在评论区指出。

在这里插入图片描述

非欧几里德数据 嵌入 欧几里德空间

我们提到过欧几里德数据可以很容易嵌入到欧几里德空间中,无论是样本空间还是经过特征提取后的特征空间,这个特性可以方便后续的分类器设计。然后,遗憾的是,非欧几里德数据因为天然地具有不固定的领域元素数量或者连接数量等,不能直观地嵌入欧几里德空间,并且也很难在Spatial上定义出卷积操作出来,而这个卷积操作,在欧几里德数据上是很直观可以定义出来的,如:

\((f \star \gamma)(x) = \int_{\Omega} f(x-x^{\prime})\gamma(x^{\prime}) \mathrm{d}x^{\prime}
\tag{1.1}
\)

因此我们后续要想办法在非欧几里德数据,比如常见的Graph数据上定义出卷积操作。在进一步探讨之前,我们不妨先探讨下什么叫做 嵌入到欧几里德空间以及为什么要这样做。

一般来说,欧几里德数据因为其排列整齐,天然可以嵌入到欧几里德空间内,并且进行欧几里德空间下定义的算子的度量,比如欧式距离等,然后可以进一步的进行样本之间的距离计算以及分类聚类等更为高级的操作。然而,非欧数据不能直接嵌入到其中,需要用特定的方法才能嵌入到欧几里德空间中,在Geometric Deep Learning中,这个特定方法就是指的是深度学习方法,整个框图如:
proj

Fig 1. The Projection to the Euclidean Space
graphgcn

Fig 2. Using the GCN to project the non-Euclidean data to Euclidean Space.

有了这个操作,即便是对于元素排列不整齐的Graph或者Manifold,也可在欧几里德空间进行样本之间的距离度量了,而且,这个过程还往往伴随着降维,减少计算量,方便可视化等优点。这个将会方便后续的分类器,聚类器等设计。

Graph Deep Learning

因为Graph数据是最为常见的非欧几里德数据,我们这里以图深度学习为例子。图深度学习的任务目标可以分为几种:

  1. 将有着不同拓扑结构,不同特征的图分类为几类。在这种情况是对整个Graph进行分类,每个Graph有一个标签。
  2. 对一个Graph的所有节点node进行分类。这种情况相当于是文献引用网络中对文献类型分类,社交网络对用户属性分类,每个节点有一个标签。
  3. 生成一个新的Graph。这个相当于是药物分子的生成等。
    在这里插入图片描述

Fig 3. Using GNN to discover the new medicines.

其中,最为常见的是第一类型,我们对此进行详细的任务定义如:

我们用\(\mathcal{G}=\{A, F\}\)表示一个图,其中\(A \in \{0,1\}^{n \times n}\)是对于图的邻接矩阵[2],而\(F \in \mathbb{R}^{n \times d}\)是节点的特征矩阵,其中\(n\)表示有n个节点,d表示每个节点有d个特征。给定一个有标签的graph样本集: \(\mathcal{D} = \{(G_1, y_1), \cdots, (G_n, y_n)\}\),其中\(y_i \in \mathcal{Y}\)是标签有限集合,并且对应于\(G_i \in \mathcal{G}\),那么我们的学习目标就是学习到一个映射\(f\)使得:

\(f: \mathcal{G} \rightarrow \mathcal{Y}\)

在频域定义卷积

我们之前谈到在spatial域上难以直接定义graph的卷积操作,那么我们自然就想到如果能在频域定义出来卷积,那也是不错的,因此我们接下来想要探讨怎么在频域定义卷积。在此之前,我们需要了解下热传播模型的一点东西,因为图中节点的信息传递,一般来说是通过邻居节点进行传递的,这一点和物体将热量从高到低的传递非常相似,可以对此建立和热传递相似的模型。

在[3]的这篇答案中,作者对热传播和图节点信息传递进行了非常精彩的阐述,并且引出了 拉普拉斯矩阵(Laplacian Matrix) 对于节点之间关系的描述作用,值得各位读者参考。

总的来说,就是对拉普拉斯矩阵进行特征值分解,其每个特征向量可以看成是频域中正交的正交基底,其对应的特征值可以看成是频率,对拉普拉斯矩阵进行特征值分解的公式如下:

\(\Delta \mathbf{\Phi}_{k} = \mathbf{\Phi}_{k} \mathbf{\Lambda}_{k}
\tag{2.1}\)

其中\(\Delta\)是拉普拉斯矩阵,而\(\mathbf{\Phi}_{k}\)是前k个拉普拉斯特征向量组成的矩阵,而\(\mathbf{\Lambda}_k\)是由对应特征值组成的对角矩阵。我们接下来先暂时忘记这个(2.1)公式,我们要对整个图的拓扑结构进行表示,那么通过邻接矩阵A就可以很容易的表示出来,其中,无向图的邻接矩阵是对称矩阵,而有向图的邻接矩阵则不一定,让我们举一个例子方便接下来的讨论,如Fig 4所示,这是个无向图的例子。其中我们之前谈到的拉普拉斯矩阵可以用公式(2.2)

\(L = D-A\tag{2.2}\)

确定,其中\(D\)为邻接矩阵,整个过程如Fig 4.所示。
在这里插入图片描述

Fig 4. A sample of a graph.

总的来说,用拉普拉斯矩阵可以在某种程度上表示一个Graph的拓扑结构,这点和邻接矩阵相似。

注意到我们有对拉普拉斯矩阵\(L\)的特征值分解:
\(
LU = U\Lambda
\tag{2.3}\)

其中\(U = [u_0, \cdots,u_{n-1}] \in \mathbb{R}^{n \times n}\)为正交矩阵,其每一列都是特征向量,而\(\Lambda = \mathrm{diag}([\lambda_0, \cdots, \lambda_{n-1}]) \in \mathbb{R}^{n \times n }\)是一个对角矩阵,其每个对角元素都是对应特征向量的特征值。对式子(2.3)进行变换,注意到正交矩阵的转置等于其逆,我们有:
\(
\begin{aligned}
L &= U \Lambda U^{-1} \\
&= U \Lambda U^T
\end{aligned}
\tag{2.4}
\)

因此,对于一个给定信号\(x \in \mathbb{R}^n\)来说,其傅立叶变换可以定义为 \(\hat{x} = U^{T}x \in \mathbb{R}^n\),其反傅立叶变换为 \(x = U\hat{x}\),我们用符号 \(*_{\mathcal{G}}\)表示图傅立叶变换。那么对于信号\(x\),我们有:\(
x *_{\mathcal{G}} y = U((U^{T}x) \odot (U^{T}y))
\tag{2.5}
\)

其中\(\odot\)表示逐个元素的相乘。

那么对于一个卷积核\(g_{\theta}(\cdot)\),我们有:\(
\begin{aligned}
y &= g_{\theta}(L)(x) = g_{\theta}(U\Lambda U^{T})x = U g_{\theta}(\Lambda)U^{T}x \\
&\mathrm{where} \ \ g_{\theta}(\Lambda) = \mathrm{diag}(\theta) = \begin{bmatrix}
\theta_1 & \cdots & 0 \\
\vdots & \ddots & \vdots \\
0 & \cdots & \theta_{n-1}
\end{bmatrix}
\end{aligned}
\tag{2.6}
\)

其中我们需要学习的参数就在\(\mathrm{diag}(\theta)\)中,一共有\(n\)个。

类似于一般欧几里德结构数据的傅立叶变换,在图傅立叶变换中,其每个基底(也就是特征向量)也可以可视化出来,如Fig 5所示:
vis

Fig 5. 图傅立叶变换的基底可视化,每个红色区域的都是卷积核中心,可以类比为热传递中的热量中心。

vis2

Fig 6. manifold傅立叶变换的基底可视化,每个红色区域的都是卷积核中心,可以类比为热传递中的热量中心,对于Manifold来说也有类似的性质。

ChebNet, 切比雪夫网络

上面介绍的网络有两个很大的问题:

  1. 它们不是在空间上具有局部性的,比如二维图像的卷积网络就具有局部性,也称之为局部连接,某个输出神经元只是和局部的输入神经元直接相连接。这个操作有利于减少计算量,参数量和提高泛化能力。
  2. 计算复杂度为\(\mathcal{O}(n)\),和节点的数量成比例,不利于应用在大规模Graph上。

为了解决第一个问题,我们把\(g_{\theta}(\Lambda)\)写成:\(
g_{\theta}(\Lambda) = \sum_{k=0}^K \theta_k \Lambda^{k}, \theta \in \mathbb{R}^K是一个多项式系数
\tag{3.1}
\)

我们在图论中知道有个结论:

若节点 \(i\)和节点 \(j\)的最短路径\(d_{\mathcal{G}}(i,j) > K\),那么有 \((L^{K})_{i,j} = 0\),其中 \(L\)为拉普拉斯矩阵。

因此有:
\(
(g_{\theta}(L)\delta_i)_j = (g_{\theta}(L))_{i,j} = \sum_{k} = \theta_{k}(L^{k})_{i,j}
\tag{3.2}
\)

不难看出当\(k > K\)为预设的核大小 时, \((L^k)_{i,j} = 0\),因此式子(3.2)其实只有前\(K\)项不为0,因此是具有K-局部性的,这样我们就定义出了局部性,那么计算复杂度变成了\(\mathcal{O}(K)\)。

注意到,在式子\(y=Ug_{\theta}(\Lambda)U^{T}x\)中,因为\(U \in \mathbb{R}^{n \times n}\),因此存在\(U, U^T\)的矩阵相乘,其计算复杂度为\(\mathcal{O}(n^2)\),而且每次计算都要计算这个乘积,这个显然不是我们想看到的。

一种解决方法就是把\(g_{\theta}(L)\)参数化为一个可以从\(L\)递归地计算出来的多项式,用人话说就是可以\(k\)时刻的\(g_{\theta}(L)\)可以由\(k-1\)时刻的\(g_{\theta}(L)\)简单地通过多项式组合计算出来。在文章[5]中,使用了切比雪夫多项式展开作为这个近似的估计。该式子可表示为:
\(
T_k(x) = 2xT_{k-1}(x)-T_{k-2}(x), \ \ \ \mathrm{where} \ \ T_0 = 1, T_1 = x
\tag{3.3}
\)

因此我们最后有:
\(
g_{\theta}(\Lambda) = \sum_{k=0}^K \theta_kT_{k}(\tilde{\Lambda})
\tag{3.4}
\)

式子(3.4)仍然是和\(\Lambda\)有关的值,我们希望直接和\(L\)相关,以便于计算,因此继续推导,有:\(
\begin{aligned}
g_{\theta}(\Lambda) &= \sum_{k=0}^K \theta_k \Lambda^k \\
U g_{\theta}(\Lambda) U^T &= \sum_{k=0}^K \theta_k U \Lambda^k U^T
\end{aligned}
\tag{3.5}
\)

注意到\(U\)是幂等矩阵,也就是有\(U^k = U\),因此继续推导(3.5)有:
\(
\begin{aligned}
& U \Lambda^k U^T = (U \Lambda U^T)^k = L^k \\
&\Rightarrow U g_{\theta}(\Lambda) U^T = \sum_{k=0}^K \theta_k L^k
\end{aligned}
\tag{3.6}
\)

同样的,采用切比雪夫多项式展开,有:
\(
g_{\theta}(\Lambda) \approx \sum_{k=0}^K \theta_k T_{k}(\tilde{L})
\tag{3.7}
\)

因此,最后对于第\(j\)个输出的特征图而言,我们有:
\(
y_{s,j} = \sum_{i=1}^{F_{in}} g_{\theta_{i,j}}(L)x_{s,i} \in \mathbb{R}^{n}
\tag{3.8}
\)

其中\(x_{s,i}\)是输入的特征图,\(s\)个样本。因此我们一共有\(F_{in} \times F_{out}\)个向量,每个向量中有\(K\)K个参数,因为\(\theta_{i,j} \in \mathbb{R}^{K}\),最后一共有\(F_{in} \times F_{out} \times K\)个可训练参数。其中的\(g_{\theta_{i,j}}(L)\)是采用了切比雪夫多项式展开,因此可以递归运算,以减少运算复杂度。

ChebNet一阶近似

根据我们之前的讨论,K阶的ChebNet可以表示为:
\(
y = U g_{\theta}(\Lambda) U^T x = \sum_{k=0}^{K} \theta_k U \Lambda^k U^T x
\tag{4.1}
\)

我们从VGG网络的设计中知道,3*3的卷积核在足够多的的层数的叠加后,有足够的层次信息可以提供足够大的感知野[6]。因此,也许对于ChebNet的一阶近似就足够了,因此我们将\(K=1\),有:
\(
\begin{aligned}
y_{K=1} &= \theta_0 x + \theta_1 Lx = \theta(D^{-\frac{1}{2}} A D^{-\frac{1}{2}})x
\end{aligned}
\tag{4.2}
\)

在式子(4.2)中,我们假设了\(\theta_0 = -\theta_1\)以进一步减少参数量,而且对拉普拉斯矩阵进行了归一化,这个归一化操作我们接下来会继续讨论,这里暂且给出归一化的公式为:
\(
L = I_n - D^{-\frac{1}{2}} A D^{-\frac{1}{2}}
\tag{4.3}
\)

其中,\(D\)是度数矩阵,\(D_{i,i} = \sum_{j} A_{i,j}\)

另外,为了增加节点自身的连接(这个我们以后继续讲解),我们通常会对邻接矩阵\(A\)进行变化,有:
\(
\begin{aligned}
\tilde{A} &= A+I_n \\
\tilde{D}_{i,i} &= \sum_{j} \tilde{A}_{i,j}
\end{aligned}
\tag{4.4}
\)

因此最终有ChebNet的一阶近似结果为:
\(
g_{\theta} \ *_{\mathcal{G}} x = \theta(\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}})x
\tag{4.5}
\)

对(4.5)进行矩阵表达并且加入激活函数\(\sigma(\cdot)\),有 Graph Convolution Network(GCN) 的表达[7],如:
\(
H^{(l+1)} = \sigma(\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} H^{(l)} W^{(l)})
\tag{4.6}
\)

其中的\(H^{(l)}\)是\(l\)层的特征图,\(W^{(l)}\)层的可学习参数。其中激活函数一般选择ReLU,即是\(\sigma(x) = \max(0,x)\)。
GCN

本篇文章就此结束,我们在下一篇文章将会继续介绍GCN在空间域上的理解,即是基于消息传递(Message Passing)中的解释,并且会举出一些例子来方便理解。

Message Passing与GCN

消息传递(Message Passing) 正如其名,指的是目的节点\(\mathcal{N}(S1)\),这些邻居节点根据一定的规则将信息,也就是特征,汇总到红色节点上,就是所谓的信息传递了。

让我们举个信息汇聚的最简单的例子,那就是逐个元素相加。假设我们的每个节点的特征为\(H^{(l)} \in \mathbb{R}^{d}\),那么有:

\(
\sum_{u \in \mathcal{N}(v)} H^{(l)}(u) \in \mathbb{R}^{d_i}
\tag{1.1}
\)

其中,\(\mathcal{N}(v)\)的邻居节点。

message passing

Fig 1. 关于消息传递的一个例子其中蓝色节点是红色节点的一阶直接邻居。

通常来说,我们会加入一个线性变换矩阵\(W^{(l)} \in \mathbb{R}^{d_i \times d_o}\),以作为汇聚节点特征的特征维度转换(或者说是映射)。有:

\(
(\sum_{u \in \mathcal{N}(v)} H^{(l)}(u)) W^{(l)} \in \mathbb{R}^{d_o}
\tag{1.2}
\)

加入激活函数后有:\(
\sigma((\sum_{u \in \mathcal{N}(v)} H^{(l)}(u)) W^{(l)})
\tag{1.3}
\)

其实式子(1.3)可以用更为紧致的矩阵形式表达,为:
\(
f(H^{(l)}, A) = \sigma(AH^{(l)}W^{(l)})
\tag{1.4}
\)

其中\(A\)为邻接矩阵,接下来我们以Fig 2的拓扑结构举个例子进行理解。

topology

Fig 2. 一个图的拓扑结构例子,其中D是度数矩阵,A是邻接矩阵,L是拉普拉斯矩阵。

此时假设我们的输入特征为10维,输出特征为20维,那么我们有:

\(
f_{in} \in \mathbb{R}^{10}, f_{out} \in \mathbb{R}^{20}, H^{(l)} \in \mathbb{R}^{6 \times 10}, W^{(l)} \in \mathbb{R}^{10 \times 20}, A \in \mathbb{R}^{6 \times 6}
\)

那么进行运算的过程如:

cal1

cal2

 

我们不难发现,其实\(HW\)的目的其实在于选在邻居节点,其实本质就是在于邻居节点的信息传递。因此信息传递的公式可以用更为紧致的式子(1.4)进行描述。但是我们注意到,如Fig 3的绿色框所示的,每一行的节点总数不同,将会导致每个目的节点汇聚的信息尺度不同,容易造成数值尺度不统一的问题,因此实际计算中常常需要用标准化进行处理,这正是[1]中提到的对拉普拉斯矩阵\(L\)进行标准化的原因。

Fig 3. 注意绿色框,其每一行的节点总数不同会导致数值不统一尺度的问题。

除了标准化的问题之外,式子(1.4)还存在一些需要改进的地方,比如没有引入节点自身的信息,一般来说,比如二维卷积,像素中心往往能提供一定的信息量,没有理由不考虑中心节点自身的信息量,因此一般我们会用自连接将节点自身连接起来,如Fig 4所示。

selfnode

Fig 4. 引入节点自身的信息。

因此,邻接矩阵就应该更新为:

\(
\tilde{A} = A+I_n
\tag{1.5}
\)

而度数矩阵更新为:
\(
\tilde{D}_{i,i} = \sum_{j} \tilde{A}_{i,j}
\tag{1.6}
\)

为了标准化邻接矩阵\(A\)使得每行之和为1,我们可以令:

\(
A = D^{-1}A
\tag{1.7}
\)

也就是邻居节点的特征取平均,这里对这个过程同样制作了个详细解释的图。

我们可以看到,通过式子(1.7),我们对邻接矩阵进行了标准化,这个标准化称之为random walk normalization。然而,在实际中,动态特性更为重要,因此经常使用的是symmetric normalization [2,3],其不仅仅是对邻居节点的特征进行平均了,公式如:
\(
A = D^{-\frac{1}{2}} A D^{-\frac{1}{2}}
\tag{1.8}
\)

同样,这里我制作了一个运算过程图来解释。

对拉普拉斯矩阵进行对称标准化,有:
\(
L^{sym} := D^{-\frac{1}{2}} L D^{-\frac{1}{2}} =D^{-\frac{1}{2}} (D-A) D^{-\frac{1}{2}} =I_n - D^{-\frac{1}{2}} A D^{-\frac{1}{2}}
\tag{1.9}
\)

这就是为什么在[1]中提到的拉普拉斯矩阵要这样标准化的原因了。

所以,经过了对称标准化之后,我们的式子(1.4)可以写成:
\(
H^{(l+1)} = \sigma(\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} H^{(l)} W^{(l)})
\tag{1.10}
\)

其中\(\tilde{A} = A+I_n, \tilde{D}_{i,i} = \sum_{j} \tilde{A}_{i,j}\)

熟悉吧,这个正是根据频域上ChebNet一阶近似得到的结果来的GCN表达式,因此GCN在空间域上的解释就是Message Passing。

Reference:

  • Bronstein M M, Bruna J, LeCun Y, et al. Geometric deep learning: going beyond euclidean data[J]. IEEE Signal Processing Magazine, 2017, 34(4): 18-42.
  • https://www.zhihu.com/question/54504471
  • https://en.wikipedia.org/wiki/Graph
  • https://en.wikipedia.org/wiki/Manifold Niepert M, Ahmed M, Kutzkov K. Learning convolutional neural networks for graphs[C]//International conference on machine learning. 2016: 2014-2023.
  • Defferrard M, Bresson X, Vandergheynst P. Convolutional neural networks on graphs with fast localized spectral filtering[C]//Advances in neural information processing systems. 2016: 3844-3852.
  • https://www.zhihu.com/question/54504471
  • https://blog.csdn.net/LoseInVain/article/details/88373506
  • https://en.wikipedia.org/wiki/Adjacency_matrix
  • https://www.zhihu.com/question/54504471/answer/630639025
  • https://blog.csdn.net/wang15061955806/article/details/50902351
  • Defferrard M, Bresson X, Vandergheynst P. Convolutional neural networks on graphs with fast localized spectral filtering[C]//Advances in neural information processing systems. 2016: 3844-3852.
  • Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[J]. arXiv preprint arXiv:1409.1556, 2014.
  • https://blog.csdn.net/LoseInVain/article/details/90171863
  • https://people.orie.cornell.edu/dpw/orie6334/lecture7.pdf
  • https://math.stackexchange.com/questions/1113467/why-laplacian-matrix-need-normalization-and-how-come-the-sqrt-of-degree-matrix
本文地址:http://51blog.com/?p=8434
关注我们:请关注一下我们的微信公众号:扫描二维码广东高校数据家园_51博客的公众号,公众号:数博联盟
温馨提示:文章内容系作者个人观点,不代表广东高校数据家园_51博客对观点赞同或支持。
版权声明:本文为转载文章,来源于 FesianXu ,版权归原作者所有,欢迎分享本文,转载请保留出处!

发表评论


表情