其他分享
首页 > 其他分享> > 自监督-Self-supervised Learning on Graphs:Deep Insights and New Directions

自监督-Self-supervised Learning on Graphs:Deep Insights and New Directions

作者:互联网

动机

贡献

前置知识

问题说明

一个图表示: \(\mathcal{G} = (\mathcal{V}, \mathcal{E}, X)\), \(\mathcal{V} = \{v_1,v_2,...,v_N\}\) 表示 \(N\) 个节点的集合, \(\mathcal{E}\) 表示边集, \(X = [x_1, x_2, ... , x_N]\) 是特征矩阵, 其中节点 \(v_i\) 的特征为 \(x_i\) , 图结构信息用一个邻接矩阵表示: \(A \in [0,1]^{N\times N}\), 其中 \(1\) 表示存在边, \(0\) 表示不存在边. 在半监督的节点分类任务中, 有标签的节点集合 \(\mathcal{V}_{L}\) 所关联对应的标签 \(\mathcal{Y}_{L}\). 定义标签数据 \(\mathcal{D}_{L} = (\mathcal{V}_{L},\mathcal{Y}_{L})\), 没有标签的数据 \(\mathcal{D}_{U}\), 让 \(f_{\theta}: \mathcal{V}_{L} \rightarrow \mathcal{Y}_{L}\), 半监督节点分类任务可以形式化为最小化损失 \(\mathcal{L}_{task}\):

\[min_{\theta} ~~\mathcal{L}_{task} (\theta, A,X,\mathcal{D}_{L}) = \sum _{v_i, y_i \in \mathcal{D}_{L}} \ell(f_{\theta}(\mathcal{G})_{v_i}, y_i) \]

其中 \(\theta\) 是用于 \(f_{\theta}\) 的参数, \(f_{\theta}(\mathcal{G})_{v_i}\) 预测节点 \(v_i\) 的标签, \(\ell(\cdot,\cdot)\) 定义为损失函数用于测量真实标签和预测标签的度量.

问题1

给定图的数据集,该数据集表示为带有成对标记数据 \(\mathcal{D}_{L} =(\mathcal{V}_{L},\mathcal{Y}_{L})\) 的图 \(G= (A,X)\), 目标是构建一个具有相应损失函数 \(\mathcal{L}_{self}\) 的自监督代理任务, 该任务可以与特定于任务的 \(\mathcal{L}_{task}\) 集成, 以学习一个能够更好地推广未标记数据的图神经网络 \(f_θ\)

Basic Pretext Tasks on Graphs(基本代理任务)

Structure Information(结构信息)

在图中提取自监督信息的第一自然选择是数据背后的固有结构. 这是因为与图像和文本不同. 在图中, 我们的数据实例是相关的(即节点链接在一起). 因此, 一个主要方向是基于未标记节点的局部结构信息, 或者它们如何与图的其余部分相关联, 为它们构建自我监督信息. 换句话说, 用于建立自监督借口任务的结构信息可以被分类为局部或全局结构信息

局部结构信息
全局结构信息

Attribute Information(属性信息)

\[\mathcal{L}_{self}({\theta'},A,X,\mathcal{D}_{U}) = \frac{1}{|\mathcal{M}_{a}|} \sum_{v_i \in \mathcal{M}_{a}}\|f_{\theta'}(\mathcal{G})_{v_i} - x_{i}\|^2 \]

​ 然而,大多数真实数据集的特征通常是高维和稀疏的。因此,在实践中,我们首先使用主成分分析(PCA)在应用属性屏蔽之前获得减少的密集特征

\[\mathcal{T}_s = \{(v_i,v_j)|s_{i,j}~~in~~top-K~~of~~\{s_{ik}\}_{k = 1}^{N} \setminus \{s_{ii}\}, \forall v_i \in \mathcal{V}_{U}\} \\ \mathcal{T}_d = \{(v_i,v_j)|s_{i,j}~~in~~bottom-K~~of~~\{s_{ik}\}_{k = 1}^{N} \setminus \{s_{ii}\}, \forall v_i \in \mathcal{V}_{U}\} \]

​ 其中 \(s_{ij}\) 测量 \(v_i、v_j\)(根据余弦相似性)节点特征相似性和 \(K\) 是为每个节点选择的顶部/底部对的数量. 现在,我们可以将回归问题如下

\[\mathcal{L}_{self}(\theta',A,X,\mathcal{D}_{U}) =\frac{1}{\mathcal{T}}\sum_{(v_i,v_j \in \mathcal{T})}\|f_w(|f_{\theta'}(\mathcal{G})_{v_i} - f_{\theta'}(\mathcal{G})_{v_j}) - s_{ij}\|^2 \]

​ 其中 \(\mathcal{T} = \mathcal{T}_s \cup \mathcal{T}_d\) 并且 \(f_w\) 线性映射到一维.

训练方式

Joint Training(联合训练)

联合训练的目标是同时优化自监督损失 \(\mathcal{L}_{self}\) 和监督损失 \(\mathcal{L}_{task}\), 联合训练如下图所示; 其本质上可以分为两个阶段: 特征提取过程和自监督的代理任务以及下游任务, 对于特征提取层我们使用的是相同的参数 \(\theta_z\), 其特征提取便可以表示为 \(f_{\theta} \rightarrow Z\) , 而相应的节点嵌入 \(z_i = f_{\theta_z}(\mathcal{G}_{v_i})\) ,而对于各自向的任务则用相应的参数, 使用 $f_{\theta_y}(z_i) \rightarrow \hat{y_i} $ 表示适配器/分类器通过 \(f_{\theta}\) 将节点 \(v_i\) 的embeding\(z_i\) 映射到预测的类, 此外,自监督代理任务可以被公式化以利用相同的特征提取器 \(f_{\theta_z}\) 和额外的适配器 \(f_{\theta_s}\), 因此, 总体目标可定义如下:

\[\min_{\theta,\theta'} = \mathcal{L}_{task}(\theta,A,X,\mathcal{D}_{L}) + \lambda\mathcal{L}_{self}(\theta',A,X,\mathcal{D}_{U}) \]

Two-stage Training(两次训练)

两次训练的目的就是预训练 (pretrain) 和微调 (Fine-tuning)

不同策略的训练效果比较

思想

SelfTask: Distance2Labeled

首先研究修改性能最好的全局结构借口任务之一 Distance2Cluster, 以考虑来自标记节点的信息. 为了将标签信息与图结构信息相结合, 提出预测每个节点到标签节点 (\(\mathcal{V}_L\)) 的距离向量作为 SSL 任务. 对于类 \(c_j \in \{1,...,K\}\) 和未标记节点 \(v_i\in \mathcal{V}_U\), 我们计算了从 \(v_i\) 到类 \(c_i\) 中所有标记节点的平均、最小和最大最短路径长度. 因此, 节点 \(v_i\) 的向量距离可以表示为 \(d_i\in \mathbb{R}^{3K}\). 在形式上, SSL目标可以表述为如下的多元回归问题:

\[\mathcal{L}_{self}({\theta'},A,X,\mathcal{D}_{U}) = \frac{1}{|\mathcal{D}_{U}|} \sum_{v_i \in \mathcal{D}_{U}}\|f_{\theta'}(\mathcal{G})_{v_i} - d_{i}\|^2 \]

这个公式可以看作是加强全局结构代理的一种方式,但主要集中在利用标记节点的任务特定信息上

SelfTask: ContextLabel

利用结构、属性和当前标记的节点为每个节点构建邻居标记分布上下文向量, 如下所示:

\[f_s(A,X,\mathcal{D}_{L},\mathcal{V}_{U}) \rightarrow \{\bar{y}_i|v_i \in \mathcal{V}_{U}\} \]

更具体地说,定义节点的上下文通过其 \(k\) 跳邻居中的所有节点, 其中标签分布向量的第 $c $ 个元素可以定义为:

\[\bar{y}_{ic} = \frac{|\mathcal{N}_{\mathcal{V}_L}(v_i, c)| + |\mathcal{N}_{\mathcal{V}_U}(v_i, c)|}{|\mathcal{N}_{\mathcal{V}_L}(v_i)| + |\mathcal{N}_{\mathcal{V}_U}(v_i)|} ~~~ c = 1,...,K \]

其中 \(\mathcal{N}_{\mathcal{V}_{U}}(v_i)\) 定义为邻居集合从 \(\mathcal{V}_U\) 中的节点 \(v_i\), \(\mathcal{N}_{\mathcal{V}_U}(v_i, c)\) , 表示邻域集中已经被赋值了类c(对于 \(V_L\) 邻域集有类似的定义), 而 \(\mathcal{D}_U = (\mathcal{V}_U, \{ y_i|v_i\in \mathcal{V}_U\})\)). 此外, 基于常规任务等价概念的代理任务的目标函数可以被表述为:

\[\mathcal{L}_{self}(\theta',A,X,\mathcal{D}_U) = \frac{1}{|\mathcal{D}_U|} \sum_{v_i \in \mathcal{D}_U}\|f_{\theta'}(\mathcal{G})_{v_i} - \bar{y}_i\|^2 \]

可以选择几种方法将标签信息扩展到所有未标记的节点. 一种方法是使用基于结构等价的方法, 在这种方法中, 选择使用标签传播(\(LP\)), 因为它只使用 \(A\)(尽管其他方法, 如最短路径, 可以在这里扩展, 如在Distance2Lable 中使用的). 另一种方法是同时使用结构等价和属性等价, 其中我们使用利用两者的迭代分类算法(\(ICA\)). 邻居标签分布上下文向量 \(\{ \bar{y}_i | v_i \in \mathcal{V}_U\}\) 可能有噪声,因为包含了由 \(f_s\) 产生的弱标签(例如,当使用 \(LP\) 或 \(ICA\) 时). 接下来我们介绍两种改进 ContextLabel的方法

SelfTask: EnsembleLabel

有各种方法来定义基于相似性的函数,如线性规划和独立分量分析。因此,一种改进ContextLabelis的可能方法是集成各种函数。如果在fs内部使用LP和ICA时,我们让一个nodevito的类概率分别为σLP(vi)和σICA(vi),那么我们可以将它们组合起来选择yias,

\[\bar{y}_i= \arg\max_c σ_{LP}(v_i) + σ_{ICA}(v_i),~~~~~c = 1...K \]

我们可以使用集合的YF来构造上下文标签分布, 如公式 \((12)\) 并遵循等式中定义的代理目标 \((13)\).

SelfTask: CorrectedLabel

我们设计了修正标签作为替代接口任务, 通过迭代改进上下文向量来增强上下文标签. 更具体地说, 我们采用迭代训练 GNN 和校正标签的方法, 类似于[20]中使用训练和校正阶段的迭代训练. 在训练阶段, 我们使用校正后的标签为未标记的节点构建校正后的上下文标签分布向量, 类似于等式 \((12)\) 除了用于 SSL任务的 \(\mathcal{D}_U= (\mathcal{V}_U,\{ \hat{y}_i|v_i \in \mathcal{V}_U\})\) 之外,我们还使用\(\mathcal{D}_U= (\mathcal{V}_U,\{ \bar{y}_i|v_i \in \mathcal{V}_U\})\) 来表示具有其校正的上下文标签分布的未标记数据样本. 然后, 在原始(例如 \(y_i\) )和校正(例如 \(y_i\) )上下文分布上训练 GNN \(f_θ\),其中损失可以表述:

\[\mathcal{L}_{self}(\theta',A,X,\mathcal{D}_U, \hat{\mathcal{D}_U}) = \frac{1}{|\mathcal{D}_U|} \sum_{v_i \in \mathcal{D}_U}\|f_{\theta'}(\mathcal{G})_{v_i} - \bar{y}_i\|^2 + \alpha(\frac{1}{|\mathcal{D}_U|} \sum_{v_i \in \mathcal{D}_U}\|f_{\theta'}(\mathcal{G})_{v_i} - \hat{y}_i\|^2) \]

其中第一和第二项分别适合原始和校正的上下文分布, \(α\) 控制来自校正的上下文分布的贡献. 在标签校正阶段, 我们使用经过训练的 GCN 来选择类别原型 \(Z_c= \{z_{c1},...,z_{cp}\}\)(表示为深层要素), 用于生成校正后的标签. 更具体地说, 首先随机采样同一个类中的节点来计算它们的成对相似性矩阵, 其中基于它们的嵌入来计算两个节点之间的余弦相似性. 然后我们将每个节点的密度 \(ρ_i\) 定义为:

\[\rho_i = \sum_{j = 1}^{M} sign(S_{i,j} - S_{c}) \]

其中 \(S_c\) 是一个常数值(我们选择它作为[20]中建议的前 \(40\%\)中的值)和 \(sign(x) = 1,0 ~~~~if~~~~~x >0,= 0 ~~~or~~~ <0\)。 根据公式,较小的 \(ρ\) 表示该节点与同一类中的其他节点不太相似. 标签不一致的节点通常彼此隔离,而标签正确的节点应该彼此靠近. 因此, 我们选择具有顶级目标 \(ρ\) 值的节点作为类原型. 然后我们计算修正后的标签 \(\hat{y}_i \in \{ 1,...,K \}\) 对于节点 \(v_i \in \hat{\mathcal{V}_U}\)

\[y_i = \arg \max_c \frac{1}{p}\sum_{i =1}^{p} \cos(f_0(\mathcal{G})_{v_i},z_{cl}),c= 1...K \]

其中 \(cos(\cdot,\cdot)\) 用于表示两个样本之间的余弦相似性. 换句话说, 我们用\(v_i\) 和 \(p\) 之间的平均相似度来表示 \(v_i\) 和相应类之间的相似度, 然后将相似度最大的类分配给 \(c\). 通过迭代这两个阶段, GNN 可以逐渐学习校正后的标签(例如,\(\hat{y}i\)).

实验

结论

仔细研究了用于节点分类任务的 GNNs 中的 SSL. 首先为图介绍了各种基本的 SSL 代理任务, 并给出了详细的实证研究, 以了解 SSL何时以及为什么适用于 GNNs, 以及哪种策略可以更好地适用于 GNNs. 接下来, 基于我们的见解, 我们提出了一个新的方向自我监督任务来构建高级代理任务, 进一步利用特定任务的自我监督信息. 在真实数据集上的大量实验表明, 我们的先进方法获得了最先进的性能. 未来的工作可以在探索新的借口任务和在预训练图神经网络中应用所提出的SSL策略上进行.

标签:SSL,标签,Self,Deep,Graphs,任务,mathcal,theta,节点
来源: https://www.cnblogs.com/owoRuch/p/15721284.html