本文主要是介绍【论文笔记】CNN2GNN: How to Bridge CNN with GNN,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Abstract
CNN在视觉任务上表现优异,通常堆叠大量卷积核来提高训练表现;
GNN成功用几个图神经层探索了图数据之间的潜在拓扑关系。
由于缺乏图结构,在非图数据上无法使用GNN,在大规模场景下推理延迟较高。
提出问题:如何桥接这两个异构网络?
本文提出了一个新颖的CNN2GNN框架,通过蒸馏将CNN和GNN统一在一起。
- 设计可微稀疏图学习模块(differentiable sparse graph learning module)作为网络的头部,动态学习图以进行归纳学习。
- 引入基于响应的蒸馏(response-based distillation),将知识从CNN转移到GNN,并桥接这两个异构网络。
1 Introduction
CNN通常会堆叠大量的卷积神经层来提高表示能力。但是庞大的网络需要大量的资源用于存储和优化。这些线性投影可能会限制提取多类型表示的能力,例如,CNN通常专注于学习样本内部表示,但忽略了提取实例集之间的潜在拓扑关系。
尽管知识蒸馏、迁移学习、网络剪枝可以压缩大型CNN,但压缩后仍然是基于线性投影,性能会下降。
图神经网络(GNN, graph neural network)在引文网络、社交网络、生物分子网络结构数据集等图场景上取得了优异的性能。
GNN是双线性模型,采取两个线性因子,投影矩阵 W \mathbf{W} W和图相关矩阵 P \mathbf{P} P,将数据投影到深层子空间并聚合来自邻居的信息。它可以在几个图神经层内提取图节点之间的潜在拓扑关系,并比CNN占据更少的计算资源。这两个线性投影因子让有限层的GNN能从数据中学习多种类型的信息,如在图像相关任务中同时提取样本内部表示和潜在的拓扑关系。
图1:CNN和GNN的优点。
1(a):CNN可以提取图像中动物的躯干和轮廓等样本内的表示。
1(b):GNN学习探索社交图数据中结点之间的关系。
线性因子使CNN需要堆叠大量神经元层,从而制造很大的开销。
图依赖性和高推理延迟等障碍限制了GNN直接扩展非图数据。
提出问题:*如何桥接这两个异构网络?
本文发现基于响应的异构蒸馏可以将知识从CNN蒸馏到GNN并回答这个问题。
为了消除CNN和GNN之间的障碍,设计了一个可微稀疏图学习模块作为GNN的头部。由于可微性,可以通过梯度下降进行训练并学习稀疏图以进行归纳学习。
随后,借助该头和异构蒸馏,蒸馏后的“增强型”GNN可以同时归纳学习单个实例的样本内表示,以及实例集之间的拓扑关系。
值得注意的是,Mini-ImageNet上经过蒸馏的“增强型”两层GNN的性能远高于包含数十层的CNN(如ResNet152)。
本文核心贡献:
- 为了消除CNN和GNN之间的障碍,设计了一个图头(graph head)。它可以在非图数据上通过梯度下降归纳学习可微稀疏图。
- 根据基于响应的蒸馏,提出了一个全新的CNN2GNN框架,从而从大型CNN到小型GNN进行蒸馏,并桥接两个异构网络。
- 蒸馏后的“增强型”GNN可以同时归纳提取单个实例的样本内表示以及实例之间的拓扑关系。
3 Method
为了桥接CNN和GNN,本文提出了全新的CNN2GNN异构蒸馏架构。
它设计了一个深度图学习头部,根据下游任务可微地学习具有可操纵稀疏性的图,并消除了CNN和GNN之间的障碍。通过响应式蒸馏,蒸馏后的“增强”GNN将归纳地同时提取单个实例的样本内部表示和实例之间的拓扑关系。
架构图如图2所示。
图2:CNN2GNN模型的架构图。
2(a):训练过程。CNN教师和GNN学生分别用于学习样本内部表示和潜在的拓扑关系。 L student \mathcal{L}_\text{student} Lstudent可以连接这两个异构网络,并将知识从CNN传递到GNN。
2(b)和2©分别是采用机制1和机制2的归纳推断。
2(b):将一个测试实例与一个训练批次级联以进行预测。
2©:选择训练集中最相似的样本,为评估测试样本批次级别学习一个近似的图结构。
3.1 Motivation
在全连接层和卷积算子的辅助下,卷积神经网络(rCNNs)可以将图像实例投影到深度子空间中,以学习样本内部表示,并在图像相关任务中取得了出色的性能。其中,全连接层可以被公式化为线性模型,如下所示:
Linear ( x ) = w T x (1) \text{Linear}(x)=w^Tx\tag{1} Linear(x)=wTx(1)
其中 w w w是可学习的参数。同时,卷积算子在通道之间共享权重,因此它也可以被重新表述为类似于im2col的线性变换。因此,CNN通常堆叠数十个这些操作,并包含大量参数用于优化以提高性能,这可能需要大量的资源进行优化和存储。此外,正是线性投影限制了CNN探索不同信息,比如样本之间的关系(相似性或差异)。
最近,图神经网络(GNNs)由于图依赖性已经展现出优秀的表征能力,能够学习实例之间的潜在信息。
给定一个图 A A A,一个GNN层为:
Z = f g ( A , X , W ) = ϕ ( P X W ) (2) Z=f_g(A,X,W)=\phi(PXW)\tag{2} Z=fg(A,X,W)=ϕ(PXW)(2)
其中 W W W为投影参数, P = ϕ ( A ) P=\phi(A) P=ϕ(A)是 A A A的函数, ϕ ( A ) = D − 1 2 A D − 1 2 \phi(A)=D^{-\frac{1}{2}}AD^{-\frac{1}{2}} ϕ(A)=D−21AD−21, D D D是 A A A的度矩阵(degree matrix)。
需要注意的是,如果激活函数 ϕ ( ⋅ ) \phi(\cdot) ϕ(⋅)是ReLU,从Eq.2生成的深层特征可以线性地受到多个因素的影响,包括图因子 P P P和投影因子 W W W。其中, W W W的作用类似于CNN中的 w w w,用于学习单个实例的深层信息,而 P = ϕ ( A ) P = \phi(A) P=ϕ(A)将从邻居中聚合信息,提取样本之间的潜在结构信息。这表明,与CNN中的线性变换(如全连接和im2col)相比,GNN作为双线性模型可以用较少的神经层表示更多信息。
受到GNN引入更多线性因子并在特征空间中表示更多信息的双线性特性的启发,本文重新思考了CNN和GNN之间的实质差异。总的来说,本文提出的核心问题是如何连接CNN和GNN这两个异构网络?
不幸的是,处理这个问题有两个关键问题:
- 图无法被访问
- 图的不可依赖性
具体来说,图因子不是非图数据的先验信息,因此GNN可能无法直接应用于图像相关的任务。
由于图依赖性的限制,GNN通常采用传递学习(transductive learning)进行训练,并且具有较高的推理延迟,如 O ( R l ) O(R^l) O(Rl),其中 R R R是图度, I I I是层数,在 R R R很大的大场景下扩展是不切实际的。
本文3.2节首先处理这两个核心问题,在3.3节中详细阐述核心问题。
3.2 Differentiable Sparse Graph Head
为了连接这两个异构网络,一个自然的想法是用GNN模型替代CNN,并通过引入单个神经层中的两个线性因子来提高表征能力。不幸的是,由于图结构对于非图数据集(如图像)不是直接可访问的,因此GNN不能直接扩展到图像数据上。
此外,由于递归地从样本邻居中聚合信息,GNN需要使用传递学习进行训练,并且推断延迟随着图的度数呈指数增长,例如 O ( R l ) O(R^l) O(Rl),其中 R R R是图的度数, l l l是层数。在现实场景中,当 R R R很大时,传递学习策略会变得不切实际。因此,首先设计了一个可微的稀疏图头部,从非图数据中归纳地学习图。
3.2.1 Sparse Graph Learning
给定一个非图数据集 X \mathcal{X} X,具有 n n n个样本,单个样本 x x x被视为图中的一个节点 v v v。此外,将单个样本 v i v_i vi的底层图结构视为条件概率 p ( v ∣ v i ) p(v|v_i) p(v∣vi),将边视为该分布 p ( v ∣ v i ) p(v|v_i) p(v∣vi)的结果。
图的生成等价于计算 p ( v ∣ v i ) p(v|v_i) p(v∣vi):
p i j = ( ⟨ v i , v s + 1 ⟩ − ⟨ v i , v j ⟩ ∑ j = 1 s ⟨ v i , v s + 1 ⟩ − ⟨ v i , v j ⟩ ) + (3) p_{ij}=(\frac{\langle v_i,v^{s+1}\rangle-\langle v_i,v_j\rangle}{\sum_{j=1}^s\langle v_i,v^{s+1}\rangle-\langle v_i,v_j\rangle})_+\tag{3} pij=(∑j=1s⟨vi,vs+1⟩−⟨vi,vj⟩⟨vi,vs+1⟩−⟨vi,vj⟩)+(3)
其中 s s s是稀疏度, ( ⋅ ) + (\cdot)_+ (⋅)+代表 max ( ⋅ , 0 ) \max(\cdot, 0) max(⋅,0), p ( ⋅ ∣ v i ) p(\cdot|v_i) p(⋅∣vi)简写为 p i p_i pi。Eq.3中, ⟨ v i , v j ⟩ \langle v_i,v_j\rangle ⟨vi,vj⟩是 v j v_j vj到 v i v_i vi的距离, ⟨ v i , v ⋅ ⟩ \langle v_i,v^\cdot\rangle ⟨vi,v⋅⟩表示到 v i v_i vi的第 ⋅ \cdot ⋅短距离。
无向稀疏图构造为 A i j = ( p ( v j ∣ v i ) + p ( v i ∣ v j ) ) / 2 A_{ij}=(p(v_j|v_i)+p(v_i|v_j))/2 Aij=(p(vj∣vi)+p(vi∣vj))/2。
Eq.3可以显式地控制学习图的稀疏性并节省调节成本。
定理1
给定一个样本集 V = { v i ∣ n = 1 , ⋯ , n } \mathcal{V}=\{v_i|n=1,\cdots,n\} V={vi∣n=1,⋯,n},条件概率 p ( v ∣ v i ) p(v|v_i) p(v∣vi)可以公式化写作:
min p i T 1 n = 1. p i ≥ 0 ∑ i = 1 n E v j ∼ p ( ⋅ ∣ v i ) ⟨ v i , v j ⟩ + γ i dist ( p i , π ) (5) \min_{p_i^T1_n=1.p_i\geq 0}\sum_{i=1}^n\mathbb{E}_{v_j\sim p(\cdot|v_i)}\langle v_i,v_j\rangle +\gamma_i\text{dist}(p_i,\pi)\tag{5} piT1n=1.pi≥0mini=1∑nEvj∼p(⋅∣vi)⟨vi,vj⟩+γidist(pi,π)(5)
其中 π \pi π是通用扰动, dist ( ⋅ , ⋅ ) \text{dist}(\cdot,\cdot) dist(⋅,⋅)代表 l 2 l_2 l2范式距离, γ i \gamma_i γi表示权衡参数,Eq.3在该问题中与上式等价。
定理1表明,Eq.3是 p ( v ∣ v i ) p(v|v_i) p(v∣vi)的稀疏闭式解。
值得注意的是,Eq.5采用 l 2 l2 l2范数作为正则化项。与非凸约束的 l 0 l0 l0范数和 l 1 l1 l1范数的正则化相比,它不仅防止了平凡解,如当 i ≠ j i\neq j i=j时, p ( v i ∣ v i ) = 1 p(v_i|v_i)=1 p(vi∣vi)=1和 p ( v i ∣ v j ) = 0 p(v_i|v_j)=0 p(vi∣vj)=0,而且保证了可操作的稀疏性。
此外,考虑到理想的图可以在优化过程中动态地、可微地学习,以包含更多下游任务信息,利用一个深度神经网络作为图生成头部 f ⋆ g ( ⋅ ) f^g_\star(⋅) f⋆g(⋅)来拟合 ⟨ v i , v j ⟩ ⟨v_i, v_j⟩ ⟨vi,vj⟩并将与GNN一起进行联合优化。
决策层有 n n n个神经元,每个神经元表示与 X \mathcal{X} X中相应样本的差异,其中 n n n是样本总数。基于这一点,距离通过 ⟨ v i , X ⟩ = f ⋆ g ( x i ) \langle v_i,\mathcal{X}\rangle=f^g_\star(x_i) ⟨vi,X⟩=f⋆g(xi)进行拟合,并通过Eq.3计算稀疏图。同时,正如图3所示,Eq.3可以准确地学习STL-10中的关系。
图3:可微稀疏图头部在STL-10数据集上学习到的拓扑关系可视化。稀疏度 s s s为3。第一行和第二行显示图头部能够准确地学习同一类别实例之间的关系。底部行表明不同类别的实例将被分配一个小的相似度,甚至为0。
3.2.2 Inductive Learning
GNN可以通过归纳学习进行训练,动态获得图结构。将数据集 X \mathcal{X} X拆分成具有 n train n_\text{train} ntrain个实例的训练指标集 I train \mathcal{I}_\text{train} Itrain和 n test n_\text{test} ntest个实例的测试指标集 I test \mathcal{I}_\text{test} Itest。为稀疏图生成函数 f ⋆ g ( x i ) f_\star^g(x_i) f⋆g(xi)配了 n train n_\text{train} ntrain个神经元。
3.2.2.1 Training Stage
对于一个训练批量 B ⊆ I train \mathcal{B}\subseteq\mathcal{I}_\text{train} B⊆Itrain, s s s-稀疏相似度分布可以写为:
p i j = ( ⟨ v i , v s + 1 ⟩ − ⟨ v i , v j ⟩ ∑ j = 1 s ⟨ v i , v s + 1 − ⟨ v i , v j ⟩ ) + , i ∈ B , j ∈ I train (4) p_{ij}=(\frac{\langle v_i,v^{s+1}\rangle-\langle v_i,v_j\rangle}{\sum_{j=1}^s\langle v_i,v^{s+1}-\langle v_i,v_j\rangle})_+,i\in\mathcal{B},j\in\mathcal{I}_\text{train}\tag{4} pij=(∑j=1s⟨vi,vs+1−⟨vi,vj⟩⟨vi,vs+1⟩−⟨vi,vj⟩)+,i∈B,j∈Itrain(4)
其中 ⟨ v i , v ⟩ \langle v_i,v\rangle ⟨vi,v⟩由 f ⋆ g ( v i ) f_\star^g(v_i) f⋆g(vi)拟合。于是可以通过 A i j = ( p i j + p j i ) / 2 A_{ij}=(p_{ij}+p_{ji})/2 Aij=(pij+pji)/2得到图的结构,并通过Eq.2计算 B \mathcal{B} B。注意的是,由于所有的操作都是可微的,它们可以用梯度下降法进行优化。
3.2.2.2 Testing Stage
因为当 i , j ∈ I test i,j\in\mathcal{I}_\text{test} i,j∈Itest时, f ⋆ g ( ⋅ ) f_\star^g(\cdot) f⋆g(⋅)不能度量 v i , v j v_i,v_j vi,vj之间的距离,因此引入训练批量 B train \mathcal{B}_\text{train} Btrain并设计两个机制对测试相似度分布进行归纳和学习。
其中,第一种级联一个具有训练批次的测试实例,并学习图来评估测试集的性能,如机制1所示。然而,它在每次迭代中只测试一个实例,这在大型数据集上是低效的。-
因此,为了提高效率,机制2选择训练集中最相似的样本来学习一个近似的图结构,用于逐批评估测试样本。
机制1
给定测试样本 v i v_i vi, i ∈ I test i\in\mathcal{I}_\text{test} i∈Itest,首先将其与一组训练样本级联,形成批量 B \mathcal{B} B。然后根据Eq.3计算 p i j p_{ij} pij,通过 A i j = ( p i j + p j i ) / 2 A_{ij}=(p_{ij}+p_{ji})/2 Aij=(pij+pji)/2学习稀疏图。由此,GNN可以推理出 v i v_i vi的表示。
机制2
给定一个测试批次 B ⊆ I test \mathcal{B}\subseteq\mathcal{I}_\text{test} B⊆Itest,测试批次 B test \mathcal{B}_\text{test} Btest和训练批次 B train \mathcal{B}_\text{train} Btrain之间的条件分布 P P P可以通过Eq.3计算得到。然后从 P P P中选择最高概率形成近似批量 B sim \mathcal{B}_\text{sim} Bsim。最后,近似稀疏图被学习为 A i j apr = ( p i j apr + p j i apr ) A_{ij}^\text{apr}=(p_{ij}^\text{apr}+p_{ji}^\text{apr}) Aijapr=(pijapr+pjiapr),其中 p i j apr p_{ij}^\text{apr} pijapr由Eq.3计算得到。 A i j apr A_{ij}^\text{apr} Aijapr辅助GNN生成测试批次的表示。
总之,机制1可以直接得到测试样本 v i v_i vi的图结构,但是当 n test n_\text{test} ntest较大时,推理效率较低。虽然机制2可以提高测试集的效率,其估计方法可能牺牲了准确性。4.4节将详细讨论其优点和局限性。所提出的图学习偷的整个过程在算法1中给出。
算法1 Differentiable Sparse Graph Head for Inductive Learning
输入:非图数据 X \mathcal{X} X,稀疏度 s s s,目标函数 L \mathcal{L} L和GNN f ⋆ ( ⋅ ) f_\star(\cdot) f⋆(⋅)。
将数据集 X \mathcal{X} X分为训练集 I train \mathcal{I}_\text{train} Itrain和测试集 I test \mathcal{I}_\text{test} Itest。
随机初始化GNN f ⋆ ( ⋅ ) f_\star(\cdot) f⋆(⋅)和图头 f ⋆ g ( ⋅ ) f_\star^g(\cdot) f⋆g(⋅)。
while 不收敛 do在批量 B ⊆ I train \mathcal{B}\subseteq\mathcal{I}_\text{train} B⊆Itrain上通过Eq.3获得图 A A A
生成图表示 f ⋆ ( v i ; A ) , i ∈ B f_\star(v_i;A),i\in\mathcal{B} f⋆(vi;A),i∈B
通过梯度下降优化 L L L。
end while
通过机制1或机制2对测试集 I test \mathcal{I}_\text{test} Itest进行推断。
3.3 CNN2GNN: Heterogeneous Distillation
通过所提出的图头消除CNN和GNN之间的障碍后,引入了基于响应的异构蒸馏来传递知识并桥接这两个异构神经网络。
具体地,将CNN f ∗ ( ⋅ ) f_*(\cdot) f∗(⋅)和GNN f ⋆ ( ⋅ ) f_\star(\cdot) f⋆(⋅)分别作为蒸馏的教师模型和学生模型,其中 f ∗ ( ⋅ ) f_*(\cdot) f∗(⋅)是像ResNet-152那样具有大量层的大型网络,而 f ⋆ ( ⋅ ) f_\star(\cdot) f⋆(⋅)只有两层。一个实例 x x x被看作图中的一个结点 v v v。CNN教师通过交叉熵损失训练从而提取样本 x x x的深层表示 f ∗ ( x ) f_*(x) f∗(x)。对于训练批量 B ⊆ I train \mathcal{B}\subseteq\mathcal{I}_\text{train} B⊆Itrain,可微稀疏图头为GNN学生模型提供了图 A A A去学习实例集合的关系表示 f ⋆ ( v ; A ) f_\star(v;A) f⋆(v;A)。目标函数被定义为:
L student = 1 ∣ B ∣ ∑ i ∈ B L cross ( f ⋆ ( v i ; A ) , y i ) + α L kd ( f ⋆ ( v i ; A ) , f ∗ ( x i ) , τ ) , B ⊆ I train (6) \mathcal{L}_\text{student}=\frac{1}{|\mathcal{B}|}\sum_{i\in\mathcal{B}}\mathcal{L}_\text{cross}(f_\star(v_i;A),y_i)+\alpha\mathcal{L}_\text{kd}(f_\star(v_i;A),f_*(x_i),\tau),\mathcal{B}\subseteq\mathcal{I}_\text{train}\tag{6} Lstudent=∣B∣1i∈B∑Lcross(f⋆(vi;A),yi)+αLkd(f⋆(vi;A),f∗(xi),τ),B⊆Itrain(6)
其中 y i y_i yi是标签, α \alpha α是权重参数, τ \tau τ是温度, L cross ( ⋅ ) \mathcal{L}_\text{cross}(\cdot) Lcross(⋅)是交叉熵损失,主要引导GNN探索潜在关系信息,生成可靠的图表示。 L kd \mathcal{L}_\text{kd} Lkd是响应基础的蒸馏:
L kd = KL ( q ( f ∗ ( v i ) , τ ) ∣ ∣ q ( f ⋆ ( v i ; A ) , τ ) ) \mathcal{L}_\text{kd}=\text{KL}(q(f_*(v_i),\tau)||q(f_\star(v_i;A),\tau)) Lkd=KL(q(f∗(vi),τ)∣∣q(f⋆(vi;A),τ))
其中 q ( ⋅ v , τ ) = exp ( ⋅ v / τ ) ∑ j exp ( ⋅ j / τ ) q(\cdot_v,\tau)=\frac{\exp(\cdot_v/\tau)}{\sum_j\exp(\cdot_j/\tau)} q(⋅v,τ)=∑jexp(⋅j/τ)exp(⋅v/τ), f ⋆ ( x v ) = h v l f_\star(x_v)=h_v^l f⋆(xv)=hvl, KL ( ⋅ ∣ ∣ ⋅ ) \text{KL}(\cdot||\cdot) KL(⋅∣∣⋅)是KL散度。
通过引入 f ∗ ( v i ) f_*(v_i) f∗(vi)作为软标签,GNN可以通过蒸馏学习深层样本表示,通过温度 τ \tau τ将两个异构神经网络桥接起来。训练后,借助机制1或机制2,蒸馏增强的GNN可以同时归纳提取单个实例的局部表示和实例集之间的拓扑关系。整个CNN2GNN的优化过程见算法2。
算法2
输入:非图数据 X \mathcal{X} X,基准值(groundtruth),稀疏度 s s s,惩罚参数 α \alpha α,温度 τ \tau τ,CNN f ∗ ( ⋅ ) f_*(\cdot) f∗(⋅)和GNN f ⋆ ( ⋅ ) f_\star(\cdot) f⋆(⋅)。
将数据集 X \mathcal{X} X划分为训练集 I train \mathcal{I}_\text{train} Itrain和测试集 I test \mathcal{I}_\text{test} Itest
随机初始化 f ∗ ( ⋅ ) f_*(\cdot) f∗(⋅)、 f ⋆ ( ⋅ ) f_\star(\cdot) f⋆(⋅)、图头 f ⋆ g ( ⋅ ) f_\star^g(\cdot) f⋆g(⋅)
通过梯度下降法预训练CNN教师模型 f ∗ ( ⋅ ) f_*(\cdot) f∗(⋅)
while 未收敛 do在批量 B ⊆ I train \mathcal{B}\subseteq\mathcal{I}_\text{train} B⊆Itrain上通过Eq.3获得图 A A A
GNN学生生成图表示 f ⋆ ( v i ; A ) , i ∈ B f_\star(v_i;A),i\in\mathcal{B} f⋆(vi;A),i∈B
CNN教师生成深度样本表示 f ∗ ( x i ) , i ∈ B f_*(x_i),i\in\mathcal{B} f∗(xi),i∈B
使用梯度下降优化 L student \mathcal{L}_\text{student} Lstudent
end while
通过机制1或机制2蒸馏增强的GNN对 I test \mathcal{I}_\text{test} Itest的归纳推理。
提出的模型的优点
受到两个主流神经网络优势互补的启发,将大的CNN蒸馏成一个小的GNN,并将这两个异构网络桥接起来。 首先,设计一个图头,可微且可归纳地学习一个稀疏图结构,该结构可以扩展非图数据上的GNN,并消除两个网络之间的障碍。然后通过基于响应的异构蒸馏,具有少量神经层的蒸馏增强GNN可以同时归纳提取单个实例的深度样本内表示和实例集之间的拓扑关系。
这篇关于【论文笔记】CNN2GNN: How to Bridge CNN with GNN的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!