数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
三十四、DGI [2018]
目前将神经网络推广到图结构数据上已经取得了长足的进步,但是大多数成功的方法都是使用监督学习,而现实很多场景中图数据是缺乏标签信息的。此外,通常希望从大型的图中挖掘新颖或有趣的结构。因此,无监督的图学习对于很多任务至关重要。
目前图的无监督学习的主要算法依赖于随机游走的目标
random walk-based objective
,有时会进一步简化为重建邻域信息。背后的直觉是:训练编码器网络,使得在输入图中邻近的节点在embedding
空间中也是邻近的。尽管随机游走的方法的能力强大,但是仍然存在一些已知的限制:
- 首先,众所周知,随机游走目标会过分强调邻近信息
aproximity information
,从而忽略图的结构信息structural information
,并且性能高度依赖于超参数的选择。 - 此外,随着基于图卷积的更强大的编码器模型的引入,还不清楚随机游走目标是否实际上提供了任何有用的信号,因为这些图卷积编码器已经施加了
inductive bias
,即相邻的节点具有相似的representation
。
在论文
《Deep graph infomax》
中,作者提出了一个基于互信息mutual information
而不是随机游走的无监督的图学习的目标。作者提出了Deep Graph Infomax:DGI
,这是一种以无监督方式学习图结构化数据的节点representation
的通用方法。DGI
依赖于最大化图的patch representation
(即节点embedding
)和相应的high-level summary
之间的互信息mutual information
,二者均使用已构建的图卷积网络体系结构得到。学到的path representation
总结了目标节点为中心的子图,因此可复用于下游的node-wise
学习任务。和大多数以前的使用
GCN
进行无监督学习的方法相比,DGI
不依赖于随机游走目标,并且很容易应用于transductive learning
和inductive learning
。该方法在各种节点分类benchmark
上表现出有竞争力的性能,有时甚至超越了监督学习的性能。- 首先,众所周知,随机游走目标会过分强调邻近信息
最近
Mutual Information Neural Estimation:MINE
使得互信息的可扩展估计scalable estimation
可行又实用。MINE
认为,利用神经网络的梯度下降法可以实现高维连续随机变量之间互信息的估计。具体而言,给定随机变量 $ X,Z $ ,则它们之间的互信息定义为:其中:
$ H(X) = \sum_x p(x)\log \frac{1}{p(x)} $ 为随机变量 $ X $ 的熵; $ H(X\mid Z)=H(X,Z)-H(Z) $ 为给定随机变量 $ Z $ 的条件下随机变量 $ X $ 的熵。根据定义有
$ I(X;Z) = D_{KL}(p(x,z)||p(x)p(z)) $ ,其中 $ D_{KL} $ 为KL
散度。MINE
利用了KL
散度的对偶表示,并依赖于训练一个统计网络作为样本的分类器,而样本来自于两个随机变量的联合分布(类别一)及其边际概率的乘积(类别二)。继
MINE
之后,Deep InfoMax: DIM
训练编码器模型,从而最大化high-level
全局representation
和局部的部分输入(如图像的patch
)的局部representation
之间的互信息。这鼓励编码器携带在所有位置location
都存在的信息类型(因此是全局相关的),例如图像类别标签。DIM
在图像数据场景中严重依赖于卷积神经网络结构。据我们所知,目前还没有工作将互信息最大化应用于图结构数据。这里我们将DIM
的思想应用到图数据,因而提出了称之为Deep Graph Infomax:DGI
的方法。相关工作:
对比方法
contrastive method
:无监督学习representation
的一种重要方法是训练编码器,使得编码器在捕获感兴趣的representation
和不感兴趣的representation
之间形成对比。例如,可以使得编码器对于real
输入增加评分、对于fake
输入降低评分。评分函数有很多种,但是在图数据相关论文中,常见的是分类的得分。DGI
也使用了对比学习,因为我们的目标是基于真实local-global pair
对、以及负采样的local-global pair
对进行分类。采样策略:对比学习的关键是如何采样正样本和负样本。
- 关于无监督的
graph representation learning
的先前工作依赖于局部对比损失,即强制相邻的节点具有相似的representation
。正样本通常对应于图的short random walk
中共现的pair
对。从语言模型的观点来看,这是将随机游走视为句子、将节点视为word
。 - 最近的工作采用
node-anchored
采样方法,该方法的负样本主要基于随机采样。例如:有一些curriculum-based
负采样方法,它逐渐采样更靠近closer
的负样本。或者,引入对抗方法来选择负样本。
- 关于无监督的
预测编码
predictive coding
:对比预测编码contrastive predictive coding: CPC
是另一种基于互信息最大化的深度学习表示方法。和我们方法不同,CPC
和上述的图方法都是预测性的predictive
:对比目标有效地在输入的结构之间训练了一个predictor
,如相邻节点pair
对或者节点和它的邻域。而我们的方法同时对比了图的global
部分和local
部分,其中global
变量是根据所有local
变量计算而来。
34.1 模型
给定图
$ \mathcal G=(\mathbf X,\mathbf A) $ ,其中:每个节点
$ v_i $ 关联一个特征向量 $ \mathbf{\vec x}_i\in \mathbb R^{d_f} $ ,所有节点的特征向量组成特征矩阵 $ \mathbf X\in \mathbb R^{n\times d_f} $ 。 $ n $ 为节点数量。 $ \mathbf A\in \mathbb R^{n\times n} $ 为邻接矩阵,其中 $ A_{i,j} $ 表示节点 $ v_i,v_j $ 之间的连接权重。当 $ A_{i,j}=0 $ 表示 $ v_i $ 和 $ v_j $ 之间不存在连接。这里我们假设图是无权重的,即
$ A_{i,j}\in \{0,1\} $ 。
我们的目标是学习一个编码器
encoder
$ \mathcal E:\mathbb R^{n\times d_f}\times \mathbb R^{n\times n}\rightarrow \mathbb R^{n\times d} $ ,使得 $ \mathcal E(\mathbf X,\mathbf A) = \mathbf H\in \mathbb R^{n\times d} $ 。其中: $ \mathbf H $ 为所有节点的representation
矩阵,它的第 $ i $ 行 $ \mathbf{\vec h}_i\in \mathbb R^d $ 为节点 $ v_i $ 的representation
向量, $ d $ 为representation
向量的维度。一旦学到
$ \mathbf H $ ,那么representation
向量就可以用于下游的任务,如节点分类任务。这里我们重点介绍图卷积编码器,它是一种灵活的
node embedding
架构,并且通过在局部邻域上反复聚合从而生成节点representation
。一个关键结果是:生成的节点
embedding
$ \mathbf{\vec h}_i $summarize
了节点 $ v_i $ 为中心的patch
的信息,而不仅仅是节点 $ v_i $ 本身。在下文中,我们用 $ \mathbf{\vec h}_i $ 来表示patch representation
来强调这一点。我们学习编码器的方法依赖于最大化局部互信息
local mutual information
,即:我们寻求节点的representation
(局部的),它捕获了整个图的全局信息内容(通过一个summary vector
$ \mathbf{\vec s} $ 来表示)。为了获得
graph-level
的summary vector
$ \mathbf{\vec s} $ ,我们利用了一个readout
函数 $ \mathcal R:\mathbb R^{n\times d}\rightarrow \mathbb R^d $ ,并通过该函数将获得的patch representation
总结为graph-level representation
: $ \mathbf{\vec s}=\mathcal R\left(\mathcal E(\mathbf X,\mathbf A)\right) $ 。作为最大化局部互信息的代理
proxy
,我们使用了一个判别器discriminator
$ \mathcal D:\mathbb R^d\times \mathbb R^d\rightarrow \mathbb R $ ,其中 $ \mathcal D\left(\mathbf{\vec h}_i,\mathbf{\vec s}\right) $ 代表了patch-summary
的pair
对之间的概率得分。如果summary
包含这个patch
,则会返回一个更高的得分。判别器的正样本来自于
$ \mathcal G=(\mathbf X,\mathbf A) $ 的patch representation
和summary vector
的pair
对 $ \left\{\left(\mathbf{\vec h}_i,\mathbf{\vec s}\right)\right\} $ 。注意,正样本来自于联合分布
$ p\left(\mathbf{\vec h}_i,\mathbf{\vec s}\right) $ 。判别器的负样本来自于另一个图
$ \tilde{\mathcal G} = \left(\tilde{\mathbf X},\tilde{\mathbf A}\right) $ 的patch representation
和图 $ \mathcal G=(\mathbf X,\mathbf A) $ 的summary vector
的pair
对 $ \left\{\left(\tilde{\mathbf{\vec h}}_j,\mathbf{\vec s}\right)\right\} $ 。 其中 $ \tilde{\mathbf H}= \mathcal E\left(\tilde{\mathbf X},\tilde{\mathbf A}\right) $ 。在多图的环境下,可以将
$ \tilde{\mathcal G} = \left(\tilde{\mathbf X},\tilde{\mathbf A}\right) $ 选择为训练集中的其它图;在单图环境下,可以提供一个随机扰动函数 $ \mathcal C:\mathbb R^{n\times d_f}\times \mathbb R^{n\times n}\rightarrow \mathbb R^{m\times d_f}\times \mathbb R^{m\times m} $ 来获取 $ \left(\tilde{\mathbf X},\tilde{\mathbf A}\right)=\mathcal C(\mathbf X,\mathbf A) $ 。注意,负样本来自于边际分布乘积
$ p\left(\mathbf{\vec h}_i\right)p\left(\mathbf{\vec s}\right) $ 。
负样本的选择将决定特定类型的结构信息,这些结构信息是作为这种互信息最大化的副产品而希望捕获的。
我们遵循
Deep InfoMax:DIM
的直觉,使用对比噪音类型的目标函数noise-contrastive type objective
:在联合分布(正样本)和边际概率乘积(负样本)之间应用标准的二元交叉熵binary cross-entropy:BCE
损失。遵从DIM
的工作,我们使用以下目标函数:基于联合分布与边际概率乘积之间的
JS
散度,该方法有效地最大化 $ \mathbf{\vec h}_i $ 和 $ \mathbf{\vec s} $ 之间的互信息。
由于迫使所有得到的
patch representation
都保持全局graph summary
的互信息,这使得可以保留patch-level
的相似性。例如,具有相似结构角色structural role
的距离遥远的节点(众所周知,这些节点是很多节点分类任务的强力的predictor
)。假设在单图环境下,
DGI
的过程如下图所示:使用随机扰动函数
$ \mathcal C(\cdot,\cdot) $ 采样一个负样本: $ \left(\tilde{\mathbf X},\tilde{\mathbf A}\right)\sim \mathcal C(\mathbf X,\mathbf A) $ 。扰动函数的选择非常重要,可以仅扰动
$ \mathbf X $ 而保留图结构、也可以仅扰动图结构 $ \mathbf A $ 而保留节点特征、也可以二者同时扰动。通过编码器获取输入图
$ \mathcal G $ 的patch representation
: $ \mathbf H = \mathcal E(\mathbf X,\mathbf A) $ 。通过编码器获取负样本
$ \tilde{\mathcal G} $ 的patch representation
: $ \tilde{\mathbf H}=\mathcal E\left(\tilde{\mathbf X},\tilde{\mathbf A}\right) $ 。通过
readout
函数获取输入图 $ \mathcal G $ 的summary vector
: $ \mathbf{\vec s} = \mathcal R(\mathbf H) $ 。通过对损失函数
$ \mathcal L $ 的梯度下降来更新 $ \mathcal E,\mathcal R,\mathcal D $ 的参数。
34.2 定理
现在我们提供一些直觉,将判别器
$ \mathcal D $ 的分类误差和graph representation
上的互信息最大化联系起来。令
$ \left\{\mathbf X^{(k)}\right\}_{k=1}^K $ 为从图的经验概率分布 $ p(\mathbf X) $ 中抽样得到的 $ K $ 组node representation
(每一组代表一个图,一共 $ K $ 个图) 。令 $ \mathcal R(\cdot) $ 为图上的确定性的(非随机的)readout
函数, $ \mathbf{\vec s}^{(k)}=\mathcal R\left(\mathbf X^{(k)}\right) $ 为第 $ k $ 个图的summary vector
,边际概率分布为 $ p\left(\mathbf{\vec s}\right) $ 。假设类别平衡,则联合分布 $ p\left(\mathbf X,\mathbf{\vec s}\right) $ 和边际概率分布乘积 $ p(\mathbf X)p\left(\mathbf{\vec s}\right) $ 之间的最优分类器的错误率的上限为:当
$ \mathcal R(\cdot) $ 是一个单射函数时可以达到该上限。证明见原始论文。
可以证明:
其中:
- 第一个不等式可以通过
Jensen
不等式来证明。 - 第二个不等式当
readout
函数是一个常量时成立,此时没有任何分类器表现得比随机分类更好。
- 第一个不等式可以通过
推论:从现在开始,假设所使用的
readout
函数 $ \mathcal R $ 是单射的。假设 $ \mathbf{\vec s} $ 的状态空间数量为 $ S $ (即 $ K $ 个图得到的、不同的summary vector
数量)满足 $ S\ge K $ 。则对于在联合分布和边际概率乘积之间的最优分类器的分类误差下的最优summary
$ \mathbf{\vec s}^* $ 满足: $ S =K $ 。证明见原始论文。
定理一:记
MI
为互信息,则有 $ \mathbf{\vec s}^* = \arg\max_{\mathbf{\vec s}} \text{MI}\left(\mathbf X;\mathbf{\vec s}\right) $ 。证明见原始论文。
该定理表明:对于有限的输入集和合适的确定性函数,可以通过最小化判别器中的分类误差来最大化输入和输出之间的互信息。
定理二:令
$ \mathbf X_i^{(k)}=\left\{\mathbf{\vec x}_j\right\}_{j\in \mathcal N_{k,i}} $ 为第 $ k $ 个图中的节点 $ v_i $ 的邻居特征矩阵, $ \mathcal N_{k,i} $ 为第 $ k $ 个图中的节点 $ v_i $ 的邻域。令 $ \mathcal E $ 为一个确定性(即不是随机的)的编码器函数,第 $ k $ 个图中的节点 $ v_i $ 的high-level
特征为: $ \mathbf{\vec h}_i=\mathcal E\left(\mathbf X_i^{(k)}\right) $ 。假设有
$ |\mathbf X_i| = |\mathbf X| =\left |\mathbf{\vec s}\right|\ge \left|\mathbf{\vec h}_i\right| $ ,其中 $ |\cdot| $ 为取值集合的大小。则 $ \mathbf{\vec h}_i $ 如果最小化 $ p\left(\mathbf{\vec h}_i,\mathbf{\vec s}\right) $ 和 $ p\left(\mathbf{\vec h}_i\right)p\left(\mathbf{\vec s}\right) $ 之间的分类误差,则它也最大化 $ \text{MI}\left(\mathbf X_i^{(k)},\mathbf{\vec h}_i\right) $ 。证明见原始论文。
这激发了我们在联合分布和边际概率乘积的样本之间使用分类器,并且在神经网络优化的上下文下,使用
binary cross-entropy:BCE
损失来优化该分类器。
34.3 实验
我们评估了
DGI
编码器在各种节点分类任务(transductive learning
和inductive learning
)上学到的representation
的优势。在每种情况下,都是用
DGI
以完全无监督方式学到了patch representation
,然后用简单的线性(逻辑回归)分类器来进行node-level
分类。分类器的输入就是节点的representation
。数据集:
引文网络
Cora, Citeseer, Pubmed
:它们是transductive learning
数据集。在这些数据集中,节点表示论文,边表示论文之间的引用关系,节点特征对应于论文的bag-of-word
。每个节点都有一个类别标签。我们对每个类别仅允许使用
20
个节点进行训练。但是,为了遵循transductive learning
,无监督学习算法可以访问所有节点的特征向量。我们在
1000
个测试节点上评估了学到representation
的预测能力。Reddit
数据集:它是大图上的inductive learning
数据集。我们使用2014
年9
月期间创建的Reddit
帖子作为数据集,每个帖子代表节点,如果同一个用户对两个帖子都发表了评论则这两个帖子之间存在边。数据集包含
231443
个节点、11606919
条边。节点特征是帖子内容和评论的GloVe embedding
向量、以及帖子的评分或者评论数量等指标。我们的目标是预测帖子所属的社区。我们将前
20
天发布的帖子用于训练、剩余帖子用于验证或测试。并且训练期间,验证集和测试集是不可见的。PPI
数据集:它是多图的inductive learning
数据集。该数据集由不同人体组织对应的graph
组成,其中包含20
个图用于训练、2
个图用于验证、2
个图用于测试。注意,在训练过程中,测试图完全未被观察到。每个节点具有
50
个特征,这些特征由positional gene sets, motif gene sets, immunological signatures
等组成。一个节点可能具有多个标签,这些标签是从分子本体数据库收集的基因本体标签,共有121
个。
所有数据集的统计信息如下表。
34.3.1 配置
我们对于
transductive learning
、单图inductive learning
、多图inductive learning
使用不同的编码器和扰动函数。transductive learning
:我们使用单层GCN
作为编码器,即:其中:
$ \hat{\mathbf A} = \mathbf A + \mathbf I $ 为带自环的邻接矩阵, $ \hat{\mathbf D} $ 为对应的度矩阵(它是一个对角矩阵,满足 $ \hat D_{i,i} = \sum_j\hat A_{i,j} $ )。 $ \sigma(\cdot) $ 为非线性激活函数,这里我们使用参数化的ReLU
(即parametric ReLU: PReLU
)。 $ \mathbf W\in \mathbb R^{d_f\times d} $ 为待学习的参数矩阵。这里我们选择 $ d = 512 $ 。对于Pubmed
数据集,由于内存限制我们选择 $ d = 256 $ 。
这里使用的扰动函数旨在鼓励
representation
正确编码图中不同节点的结构相似性,因此 $ \mathcal C $ 保留了原始的邻接矩阵,即 $ \tilde{\mathbf A} = \mathbf A $ 。而扰动的特征 $ \tilde{\mathbf X} $ 是对 $ \mathbf X $ 进行按行混洗得到的。即扰动的图由原始图中完全相同的节点组成,但是节点位于图中的不同位置,因此接收不同的patch representation
。论文证明了
DGI
对于其它扰动函数是稳定的(参考原始论文),但是我们发现:保留图结构的那些扰动函数效果最好。单图
inductive learning
:这里我们不再使用单层GCN
作为编码器,因为这种编码器依赖于固定且已知的邻接矩阵。相反,我们使用GraphSAGE-GCN
,并选择均值池化:这里通过度矩阵
$ \hat{\mathbf D} $ 进行了归一化,实际上也可以通过GAT
模型来编码。我们的编码器采用三层
GraphSAGE-GCN
,并使用skip connection
:其中
$ || $ 表示特征拼接。- 这里我们选择
$ d = 512 $ ,并且选择 $ \sigma(\cdot) $ 为PReLU
激活函数。 - 考虑到
Reddit
数据集规模较大,无法完全放入GPU
内存。这里我们采用GraphSAGE
中的采样方法:分别在第一层、第二层、第三层对邻域采样10/10/25
个邻居节点。因此每个中心节点将采样1+10+100+2500=2611
个3-hop
邻域节点(称作一个patch
)。 - 在整个训练过程中,我们使用了
batch-size=256
的mini-batch
随机梯度下降。 - 我们使用和
transductive learning
中类似的扰动函数,但是将每个采样的patch
视为要扰动的子图。注意,这可能导致中心节点的特征被替换为采样邻居的特征,从而进一步促进了负样本的多样性。然后将中心节点的patch representation
馈入到判别器。
- 这里我们选择
多图
inductive learning
:我们的编码器是一个三层的GraphSAGE
均值池化模型,并且带skip connection
:其中
$ \mathbf W_{\text{skip}} $ 为待学习的参数矩阵。这里和单图inductive learning
区别在于:这里的skip connection
是sum
融合,而前述的skip connection
是concate
融合。- 这里我们选择
$ d = 512 $ ,并且选择 $ \sigma(\cdot) $ 为PReLU
激活函数。 - 在多图环境下,我们选择使用随机采样的训练
graph
来作为负样本。即我们的扰动函数只是从训练集中采样了不同的图。考虑到该数据集中40%
以上的节点包含全零的特征,因此这种方法最为稳定。 - 为进一步扩大负样本的范围,我们还对采样的
graph
的输入特征应用dropout
。 - 我们还发现将学到的
embedding
馈入到逻辑回归模型之前,对包括训练集上的embedding
进行标准化是有益的。
- 这里我们选择
在所有的配置下,我们使用统一的
readout
函数、判别器架构:我们使用简单的均值函数来作为
readout
函数:其中
$ \sigma(\cdot) $ 为sigmoid
非线性函数。尽管我们发现该
readout
函数在所有实验中表现最佳,但是我们假设其能力会随着graph size
的增加而降低。此时,可能需要使用更复杂的readout
架构,如set2vec
或者DiffPool
。判别器通过应用简单的双线性评分函数对
summary-patch
进行评分:其中
$ \mathbf W_D $ 为待学习的参数矩阵, $ \sigma(\cdot) $ 为sigmoid
非线性激活函数。
所有模型都使用
Glorot
初始化,并使用Adam SGD
优化器进行训练,初始学习率为0.001
(对于Reddit
为 $ 10^{-5} $ )。在
transductive
数据集上,我们在training loss
上应用早停策略,patience epoch = 20
。在inductive
数据集上,我们训练固定数量的epoch
,对于Reddit
为150
、对于PPI
为20
。
34.3.2 结果
baseline
方法:transductive learning
:我们进行了50
次实验并报告测试集上的平均准确率和标准差。然后将我们的结果和DeepWalk, GCN, Label Propagation:LP, Planetoid
等方法进行比较。另外我们还提供了对原始特征进行逻辑回归分类、将原始特征和
DeepWalk
特征拼接进行逻辑回归分类的结果。inductive learning
:我们进行了50
次实验并报告了测试集上的micro-F1
得分的均值。我们直接复用GraphSAGE
论文中的结果进行比较。由于我们的方法是无监督的,因此我们对比了无监督的
GraphSAGE
方法。我们还提供了两种监督学习的方法比较:
FastGCN
和Avg. pooling
。
实验结果如下表所示,其中第一列中我们给出每种方法在训练过程中可用的数据类型:
X
为特征信息,A
为邻接矩阵,Y
为标签信息。GCN
对应于以监督方式训练的两层DGI
编码器。结论:
DGI
在所有五个数据集上均实现了出色的性能。尤为注意的是,DGI
方法和监督学习的GCN
模型相比具有竞争力,并且在Cora
数据集和Citeseer
数据集上甚至超越了监督学习的GCN
。我们认为这些优势源自事实:
DGI
方法间接地允许每个节点都可以访问整个图的属性,而监督学习的GCN
仅限于两层邻域(由于训练信号的极其稀疏,因此可能会遭受过拟合的风险)。应当指明的是,尽管我们能够超越同等编码器架构的监督学习,但是我们我们的性能仍然无法超越
state-of-the-art
的transductive
架构。DGI
方法在Reddit
和PPI
数据集上成功超越了所有竞争的无监督GraphSAGE
方法,从而验证了inductive learning
节点分类任务中,基于局部互信息最大化方法的潜力。DGI
在Reddit
上的结果和监督学习的state-of-the-art
相比具有竞争力,而在PPI
上差距仍然很大。我们认为这可以归因于节点可用特征的极度稀疏:在PPI
数据集上超过40%
的节点具有全零特征。而我们的DGI
方法中的编码器非常依赖于节点特征。我们注意到,随机初始化的图卷积网络(不需要经过训练)可能已经提取了非常有用的特征,并代表了强大的
baseline
。这是众所周知的事实,因为它和WL test
图同构测试有关。这已被GCN
和GraphSAGE
等论文所研究过。为此,我们提供了
Random-Init
这个baseline
,它是从随机初始化的编码器(不需要训练)获取节点embedding
,然后馈入逻辑回归分类器。DGI
可以在这个强大的baseline
上进一步提升。- 在
inductive
数据集上的结果表明:以前基于随机游走的负采样方法可能对于学习分类任务是无效的。
这个编码器其实就是
GCN/GraphSAGE
等常用架构。最后,应该注意的是,更深的编码器减少了我们正负样本之间的有效变异性。我们认为这就是为什么浅层架构在某些数据集上表现更好的原因。虽然我们不能说这个趋势普遍存在,但是通过
DGI
损失函数我们发现,通常采用更wider
的模型而不是更deeper
的模型可以带来收益。
定性分析:我们给出
Cora
数据集的embedding
经过t-SNE
可视化结果(因为该数据集节点数最少)。左图为原始特征的可视化,中间为Random-Init
得到embedding
的可视化,右图为训练好的DGI
得到embedding
的可视化。可以看到:
DGI
得到的embedding
的投影表现出明显的聚类。在
t-SNE
可视化之后,我们关注Cora
数据集上判别器的得分。我们对于正样本和负样本(随机采样的)可视化了每个节点的判别器得分:左图为正样本(真实的图)、右图为负样本(负采样的图)。可以看到:
在正样本学到的
embedding
的簇上,只有少数hot
节点得到较高的判别器得分。这表明用于判别和分类的embedding
各维度之间可能存在明显的差异。正如预期的那样,模型无法在负样本中找到任何强大的结构。
一些负样本种的节点获得了较高的判别器得分,这是由于
Cora
中的一些low-degree
节点引起的。正样本的平均分高于负样本的平均分。
我们将判别器打分
top-score
的正样本和负样本的embedding
进行可视化。如下图所示:上半部分为highest-scored
正样本,下半部分为lowerst-scored
负样本。可以看到:在某些维度上,正样本和负样本都存在着严重的
bias
。我们假设:在随机
shuffle
$ \mathbf X $ 的情况下,负样本的平均预期激活值为零,因此需要强大的bias
需要将负样本的判别器得分拉下来。对于正样本,可以使用其它维度来抵消这些维度上的bias
,同时编码patch
相似度。为证明这一假设,我们根据正样本和负样本之间的可区分性对
512
个维度进行排序。我们从embedding
中根据该顺序依次删除这些维度(要么从最有区分度的维度开始,记作 $ p\uparrow $ ;要么是从最没有区分度的维度开始,记作 $ p\downarrow $ ) ,然后检测分类器和判别器的性能,结果如下图所示。可以看到,观察到的趋势在很大程度上支持了我们的假设:如果我们首先删除
biased
维度( $ p\downarrow $ ),则分类效果会保持更长的时间(允许我们删除一半以上的embedding
维度,同时仍保持对监督GCN
的竞争优势)。正样本仍然能够保持正确的判别,直到移除了一半以上的维度为止。注意:
biased
维度指的是正样本和负样本都存在着严重的bias
的维度,因此无法区分正样本和负样本。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论