数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
七、PATCHY-SAN [2016]
论文
《Learning Convolutional Neural Networks for Graphs》
的目标是:让卷积神经网络能够解决一大类graph-based
的学习问题。我们考虑以下两个问题:- 给定
graph
的一个集合,学习一个函数,该函数可用于针对unseen graph
的分类问题或回归问题。任意两个graph
之间的结构不一定是相同的。例如,graph
集合中每个graph
都可以建模一种化合物,输出可以是一个函数从而将unseen
的化合物映射到它们对癌细胞活性抑制的level
。 - 给定一个大型的
graph
,学习graph
的representation
,该representation
可用于推断unseen
的图属性(如节点类型、或missing edge
)。
该论文提出了一个用于有向图或无向图的
learning representation
框架。graph
可能具有离散属性或连续属性的节点和边(甚至有多个属性),并且可能具有多种类型的边。类似于图像的卷积神经网络,论文从输入图input graph
构建局部连接locally connected
的邻域。这些邻域是有效生成的,并且作为卷积架构的感受野receptive field
,从而允许框架学习有效的graph representation
。所提出的方法建立在用于图像的卷积神经网络的概念之上,并将卷积神经网络扩展到任意的
graph
。下图说明了用于图像的CNN
的局部连接感受野。如下图所示,黑色/白色节点表示不同的像素值(黑色像素值为1
、白色像素值为0
),红色节点表示当前卷积核的中心位置。(a)
图给出了一个3x3
卷积核在一个4x4
图像上的卷积过程,其中步幅为1
、采用非零填充。图像可以表示为正方形的网格图square grid graph
,其节点代表像素。现在,可以将CNN
视为遍历节点序列(如下图(a)
中的节点1,2,3,4
),并为每个节点生成固定大小的邻域子图neighborhood subgraph
(如下图(b)
中的3x3
网格)。邻域子图用作感受野从而读取像素值。由于像素的隐式空间顺序implicit spatial order
,节点序列(如下图(a)
中的节点1,2,3,4
)从左到右、从上到下是唯一确定的。对于NLP
问题也是如此,其中每个句子(及其解析树parse-tree
)确定了单词序列。然而,对于许多graph
集合,缺少特定于问题的顺序problem-specific ordering
(空间的、时间的、或其它的顺序),并且graph
的节点不存在对应关系(即,两个graph
之间的结构不相等)。在这种情况下,必须解决两个问题:确定节点序列,其中我们要对序列中的节点创建邻域子图。
计算邻域子图的归一化,即从
graph
到排序空间的唯一映射unique mapping
。子图的归一化指的是对子图节点进行某种特定顺序的排序。
所提出的方法,称作
PATCHY-SAN
,解决了任意graph
的这两个问题:- 对于每个输入
graph
,PATCHY-SAN
首先确定需要创建邻域子图的节点(及其访问顺序)。 - 对于这些节点中的每一个,
PATCHY-SAN
抽取和归一化一个刚好由 $ k $ 个节点组成的邻域子图,即该邻域子图被唯一地映射到具有固定线性顺序fixed linear order
的空间。归一化的邻域子图用作所考虑节点的感受野。 - 最后,
feature learning
组件(如卷积层、稠密层)与归一化的邻域子图(作为CNN
的感受野)相结合。
下图说明了
PATCHY-SAN
的架构,其中红色节点表示节点序列中的节点,邻域子图大小 $ k=5 $ 。PATCHY-SAN
与现有方法相比具有几个优点:- 首先,它高效、可并行化,并且适用于大型
graph
。 - 其次,对于很多
application
(从计算生物学到社交网络分析),可视化学到的网络主题network motif
很重要。PATCHY-SAN
支持特征可视化feature visualization
,从而提供对图结构属性structural property
的洞察。 - 第三,
PATCHY-SAN
无需制作另一个graph kernel
,而是学习application dependent
的特征而无需进行特征工程。
论文的理论贡献是:
- 定义
graph
上的归一化问题normalization problem
,以及该问题的复杂度。 - 一种用于
graph
集合的方法,该方法对比了graph labeling
方法。 - 实验结果表明,
PATCHY-SAN
推广了用于图像的CNN
。在标准的benchmark
数据集上,论文证明与state-of-the-art
的graph kernel
相比,学到的用于graph
的CNN
既高效efficient
又有效effective
。
- 给定
相关工作:
graph kernel
:graph kernel
允许kernel-based
的学习方法,如直接在graph
上工作的SVM
。graph
上的kernel
最初被定义为single graph
上的节点的相似函数similarity function
。两类具有代表性的kernel
是skew spectrum kernel
和kernel based on graphlet
。后者与我们的工作有关,因为它基于固定大小的子图来构建kernel
。这些子图,通常被称作motif
或graphlet
,反映了功能性的网络的属性functional network property
。然而,由于子图枚举subgraph enumeration
的组合复杂性combinatorial complexity
,graphlet kernel
仅限于具有少量节点的子图。Weisfeiler-Lehman (WL) kernel
是一类有效的graph kenerl
。然而,WL kernel
仅支持离散特征,并且在测试阶段使用与训练样本数量成线性关系的内存(而不是与测试样本数量成线性关系)。PATCHY-SAN
使用WL
作为一种可能的labeling
过程来计算感受野。deep graph kernel
和graph invariant kernel
根据诸如最短路径shortest path
、graphlet
、子树subtree
、以及其它的图不变量graph invariant
等小型子结构的存在或数量来比较图compare graph
。相反,PATCHY-SAN
从graph
数据中学习子结构,并且不限于预定义predefined
的一组主题motif
。此外,所有
graph kernel
的训练复杂度至少是graph
数量的二次方关系,这对于大型graph
而言是不可行的,但是PATCHY-SAN
的训练复杂度是graph
数量的线性关系。graph neural network: GNN
:GNN
是图上定义的循环神经网络recurrent neural network: RNN
架构。GNN
将循环神经网络应用于图结构上的游走walk
,传播node representation
,直到达到一个不动点fixed point
。然后将生成的node representation
用作分类和回归问题中的特征。GNN
仅支持离散特征,并在每次学习迭代过程中执行与图的边和节点数量一样多的反向传播操作。注:
GNN
理论上也支持连续特征。Gated Graph Sequence Neural Network: GGSNN
修改GNN
以使用门控循环单元gated recurrent unit: GRU
并输出序列。最近的工作将
CNN
扩展到不同于低维网格结构的拓扑。然而,所有这些方法都假设一个全局的图结构,即,跨graph
的节点的对应关系correspondence
。《Convolutional networks on graphs for learning molecular fingerprints》
对graph
执行卷积类型的操作,开发了一个specific graph feature
的可微变体differentiable variant
。
7.1 基础概念
7.1.1 CNN
CNN
受到早期工作的启发,该工作表明:动物的视觉皮层包含复杂的细胞排列,它们负责检测视野visual field
的小局部区域small local region
中的光。CNN
是在1980
年代开发的,并已应用于图像、语音、文本、以及药物发现问题。CNN
的前身是Neocognitron
。典型的CNN
由卷积层、稠密层dense layer
组成。第一个卷积层的目的是提取在输入图像的局部区域内发现的常见模式。CNN
对输入图像利用学到的filter
执行卷积运算,并将卷积结果输出为张量,输出的depth
是filter
的数量。
7.1.2 Graph Kernel(读者补充)
目前现有的大多数
Graph Kernel
算法都是基于R-Convolution
理论构建而来,其理论思想是:设计一种图的分解算法,两个图的核函数和图分解后的子结构的相似程度有关。给定两个图
$ G_1(V_1,E_1),G_2(V_2,E_2) $ 以及一种图的分解方式 $ \mathcal F(\cdot) $ ,则分解后的子结构为:基于该子结构,则
$ G_1 $ 和 $ G_2 $ 的核函数可以表示为:其中:
因此,任意一种图的分解方式
$ \mathcal F(\cdot) $ 以及任意一种子结构同构判断方式 $ \delta(\cdot) $ 的组合都可以定义一种新的Graph Kernel
,常见的主要分为三类:- 基于游走的
Graph Kernel
,如Random Walk Kernel
。 - 基于路径的
Graph Kernel
,如Shortest-Path Kernel
。 - 基于子树
subtree
或者子图subgraph
的Graph Kernel
,如Weisfeiler-Lehman Subtree Kernel
。
另外,除了
R-Convolution
系列之外,还有其它的Graph Kernel
。- 基于游走的
Random Walk Kernel
:随机游走Kernel
的基本思想是:统计两个输入图中相同的随机游走序列的数量。给定输入图
$ G_1(V_1,E_1),G_2(V_2,E_2) $ ,设节点 $ v $ 的label
为 $ l_v $ 。定义direct product graph
$ G_{\times} $ 为: $ G_{\times} = (V_{\times},E_{\times}) $ ,其中:其中:
$ l_v $ 表示节点 $ v $ 的label
, $ l_{(v_1,v_2)} $ 表示边 $ (v_1,v_2) $ 的label
。注意,这里的label
其实是属性,而不是监督学习中的监督信号。 $ V_\times $ 表示图 $ G_1,G_2 $ 中相同label
的节点组成的pair
对。 $ E_\times $ 表示图 $ G_1,G_2 $ 中相同label
的边组成的pair
对,且边的对应节点的label
分别相同。
在
$ G_\times $ 中,每个节点其实代表两个子节点,这两个子节点在各自图中具有相同的label
。 $ G_\times $ 中的边代表:- 起点背后的两个子节点,在各自图中具有相同的
label
。 - 终点背后的两个子节点,在各自图中具有相同的
label
。 - 起点和终点背后的两对子边,在各自图中具有相同的
label
。
定义图
$ G_{\times} $ 的邻接矩阵为 $ \mathbf A_{\times} $ ,则随机游走kernel
定义为:其中
$ \lambda_n $ 必须仔细挑选从而保证 $ k_\times $ 的收敛性。 $ \sum_{i,j=1}^{|V_{\times}|}\left[ \mathbf A^n_{\times}\right]_{i,j} $ :给出了图 $ G_1 $ 和 $ G_2 $ 中,长度为 $ n $ 的、特定条件的路径的数量,该路径满足以下条件:路径的节点label
序列完全相同、路径的边label
序列完全相同。Shortest-Path Kernel
:随机游走Kernel
的基本思想是:统计两个输入图中相同标签之间的最短路径。给定输入图
$ G_1(V_1,E_1),G_2(V_2,E_2) $ :首先通过
Floyd
成对最短路径生成算法,构建每个图的节点之间的最短路径,得到新的图 $ G_1^F\left(V_1,E_1^F\right),G_2^F\left(V_2,E_2^F\right) $ ,其中 $ E_1^F $ 给出了 $ V_1 $ 的两两节点之间最短路径、 $ E_2^F $ 给出了 $ V_2 $ 的两两节点之间最短路径。计算:
其中
$ k_{walk}^{(1)} $ 为一个定义在长度为1
的edge walk
上的正定核。
Weisfeiler-Lehman Subtree Kernel
:它基于Weisfeiler-Lehman
算法。节点
label
更新:对于图 $ G $ 的节点 $ v $ ,获取节点 $ v $ 的邻域节点集合 $ \mathcal N_v $ ,通过一个hash
函数得到节点 $ v $ 的新label
:其中
$ l_v $ 为节点 $ v $ 的label
, $ l_{\mathcal N_v} $ 为邻域节点集合 $ \mathcal N_v $ 的label
集合。更新后的新
label
包含了其直接邻域的节点信息。因此如果两个节点更新后的label
相同,我们可以认为其邻域结构是同构的。更新图的所有节点 、重复更新最多
$ K $ 轮直到收敛,最终得到图 $ G^\prime $ 。每一轮更新后,节点
$ v $ 的label
就包含了更大规模的邻域的节点信息,最终每个节点的label
编码了图的全局结构信息。对于输入图
$ G_1,G_2 $ 我们分别对其执行Weisfeiler-Lehman
算法,最终根据 $ G^\prime_1,G_2^\prime $ 的 节点label
集合的相似性(如Jaccard
相似性)来得到核函数:其中
$ l_{V} $ 为所有节点的label
集合。
一旦定义了
Graph Kernel
,则我们可以使用基于核技巧的方法,如SVM
来直接应用在图上。
7.2 模型
给定图
$ G=(V,E) $ , $ V=\{v_1,\cdots,v_n\} $ 为节点集合, $ E\sube V\times V $ 为边集合。假设节点数量为 $ |V|=n $ ,边的数量 $ |E|=m $ 。定义图的邻接矩阵
$ \mathbf A\in \mathbb R^{n\times n} $ 为:每个节点以及每条边可以包含一组属性,这些属性可以为离散的,也可以为连续的。这里我们用 “属性” 而不是 “标签” 来避免概念的混淆。
定义一个游走序列
walk
是由连续的边组成的一个节点序列。定义一条路径path
是由不重复节点构成的walk
。定义
$ d(u,v) $ 为节点 $ u $ 和 $ v $ 之间的距离,它是 $ u $ 和 $ v $ 之间的最短路径距离。定义
$ \mathcal N_1(v) $ 为节点 $ v $ 的一阶邻域节点集合,它由与 $ v $ 直连的所有节点构成。
Labeling and Node Partitions
:PATCHY-SAN
利用了graph labeling
对节点进行排序。graph labeling
:如果图的节点自带label
, 则我们可以直接用该label
。如果节点没有label
,则我们可以通过一个graph labeling
函数 $ F_l: V\rightarrow S $ 为图注入label
,其中 $ S $ 为一个有序集(如,实数集 $ \mathbb R $ 或整数集 $ \mathbb Z $ )。graph labeling
过程计算输入图的graph labeling
。graph labeling
的例子包括:通过节点的度degree
计算label
、通过节点的中介中心性between centrality
计算label
。一个节点 $ v $ 的中介中心性为:网络中经过节点 $ v $ 的最短路径占所有最短路径的比例。ranking
:一个排序ranking
(或者染色coloring
)是一个函数 $ F_r: V\rightarrow \{1,2,\cdots,|V|\} $ 。每个graph labeling
引入一个排序函数,使得当且仅当 $ F_l(u)\gt F_l(v) $ 时有 $ F_r(u)\lt F_r(v) $ ,即:label
越大则排名越靠前。如果图 $ G $ 的labeling
$ F_l $ 是单射函数,则它确定 $ G $ 的节点的全体顺序。根据该顺序我们定义一个邻接矩阵 $ \mathbf A^l(G) $ ,它定义为:其中节点
$ v $ 在 $ \mathbf A^l(G) $ 中的位置由它的排名 $ F_r(v) $ 决定。行代表节点,列代表排名。
划分
partition
:graph labeling
引入节点集合 $ V $ 的一个划分: $ \{V_1,\cdots,V_K\} $ ,其中 $ K $ 为label
的取值类别数。节点 $ u,v\in V_i $ 当且仅当 $ F_l(u) = F_l(v) $ 。Weisfeiler-Lehman
算法是一种划分图节点的过程,它也被称作color refinement
和naive vertex classification
。该算法在机器学习社区中引起了相当广泛的兴趣,因为它可以应用于图模型的加速推断、以及作为一种计算graph kernel
的方法。
PATCHY-SAN
使用这些graph labeling
过程来对图的节点施加顺序,从而替代缺失的、application-dependent
的顺序(如时间顺序,空间顺序)。同构和规范化
Isomorphism and Canonicalization
:在很多应用领域存在的一个计算问题是:确定两个图是否是同构曲面。图同构问题graph isomorphism (GI) problem
是NP
的,但是不知道是属于P
还是NP-hard
。在一些温和的限制下,图同构问题是P
的,例如对于有界degree
的图。图
$ G $ 的规范化是具有固定节点顺序的图 $ G^\prime $ ,它与 $ G $ 同构并且表达了 $ G $ 的整个同构族isomorphism class
。在实践中,图规范化工具NAUTY
表现出了卓越的性能。当
CNN
应用于图像时,感受野(正方形网格)以特定的步长在图像上移动。感受野为每个通道读取一次像素值,并为每个通道创建一批数值。由于图像的像素具有隐式排列(即,空间顺序),因此感受野总是从左到右、从上到下移动。此外,空间顺序唯一地确定了每个感受野的节点以及这些节点映射到排序空间方式。因此,当且仅当像素的结构角色structural role
(它们在感受野内的空间位置)相同时,使用两个不同绝对位置的感受野读取到的两个像素值被分配到同一个相对位置。为了展示
CNN
和PATCHY-SAN
之间的联系,我们把图像上的CNN
视为一种框架:首先识别正方形网格图(代表图像)中的节点序列,然后为该序列中的每个节点建立一个归一化的邻域子图neighborhood graph
(即,感受野)。对于缺少
application-dependent
节点顺序并且任何两个图的节点尚未对齐的图集合,我们需要为每个图确定:- 一个节点序列,其中我们即将为序列中的每个节点创建邻域子图。
- 从图结构到向量
representation
的唯一映射,使得相似的邻域子图具有相似的向量representation
。
我们通过
graph labeling
过程来解决这些问题。如果来自两个不同图的节点在图中的结构角色相似,那么它们被分配到各自邻接矩阵中的相似的相对位置。给定一组图,PATCHY-SAN
对每个图执行以下操作:- 采用
Node Sequence Selection
算法从图中选择一个固定长度的节点序列。 - 采用
Neighborhood Assembly
算法为节点序列中的每个节点组装一个固定大小的邻域。 - 通过
Graph Normalization
对每个邻域子图进行归一化处理,从而将无序的图转换为有序的、长度固定的节点序列。 - 利用
CNN
学习邻域的representation
。
7.2.1 Node Sequence Selection
节点序列选择
node sequence selection
是为每个输入图识别需要创建感受野的节点序列的过程。首先,输入图的节点根据给定的
graph labeling
进行排序。其次,使用给定的步幅
$ s $ 遍历生成的节点序列,并对每个访问到的节点采用创建感受野的算法来构造一个感受野,直到恰好创建了 $ w $ 个感受野为止。 $ w $ 决定了卷积运算输出feature map
的尺寸,它对应于一维CNN
中的序列长度。
步幅
$ s $ 决定了在节点序列中,需要创建感受野的两个节点之间的距离。如果节点数量小于 $ w $ ,则算法创建全零的感受野,用于填充。也可以采用其它节点序列选择方法,如根据graph labeling
进行深度优先遍历。类比一维卷积的运算,那么
$ w $ 就是数据序列的长度, $ s $ 就是一维卷积的步长。每个输入图都需要对其到 $ w $ 个感受野(即一维卷积中的序列长度对齐)。Select Node Sequence
算法:算法输入:
graph labeling
函数 $ F_l(\cdot) $- 输入图
$ G=(V,E) $ - 步幅
$ s $ 、宽度 $ w $ 、感受野尺寸 $ k $
算法输出:被选择的节点序列,以及对应的感受野
算法步骤:
根据
$ F_l(\cdot) $ 选择节点集合 $ V $ 中的top
$ w $ 个节点,记作 $ V_\text{sort} $ 。初始化:
$ i=1,j=1 $ 。迭代,直到
$ j\ge w $ 停止迭代。迭代步骤为:如果
$ i\le |V_\text{sort}| $ ,则对排序后的节点 $ i $ 创建感受野 $ f=\text{CreateReceptiveField}(V_\text{sort}[i],k) $ ;否则创建全零感受野 $ f=\text{ZeroReceptiveField}(k) $ 。将
$ f $ 应用到每个输入通道。因为节点的特征可能是一个向量,表示多维度属性。
更新:
$ i = i+s,\quad j=j+1 $ 。
返回访问到的节点序列,以及创建的感受野序列。
7.2.2 Neighborhood Assembly
对于被选择的节点序列,必须为其中的每个节点构建一个感受野。创建感受野的算法首先调用邻域组装算法来构建一个局部邻域,邻域内的节点是感受野的候选节点。
给定节点
$ v $ 和感受野的尺寸 $ k $ ,邻域组装算法首先执行广度优先搜索BFS
来探索与节点 $ v $ 距离依次增加的节点,并将这些被探索到的节点添加到集合 $ \mathcal N_v $ 。如果收集到的节点数量小于 $ k $ ,则使用最近添加到 $ \mathcal N_v $ 节点的一阶邻域(即BFS
过程),直到 $ \mathcal N_v $ 中至少有 $ k $ 个节点;或者没有更多的邻居节点添加为止。注意,最终 $ \mathcal N_v $ 的大小可能不等于 $ k $ 。即,广度优先搜索
$ k $ 个最近邻的节点(包括它自身)。另外,最终得到的
$ \mathcal N_v $ 丢失了距离信息(和节点 $ v $ 的距离)。所以,如果这里能够保存距离信息,是否会更有利?Neighborhood Assembly
算法:算法输入:当前节点
$ v $ ,感受野尺寸 $ k $算法输出:节点
$ v $ 的局部邻域 $ \mathcal N_v $算法步骤:
初始化:
$ \mathcal N_v = [v], \mathcal B=[v] $ ,其中 $ \mathcal B $ 存放BFS
遍历到的节点。注意,节点
$ v $ 也是它自身的邻居。迭代,直到
$ |\mathcal N_v|\ge k $ 或者 $ |\mathcal B|=0 $ 停止迭代。迭代步骤:- 获取当前
BFS
遍历节点的一阶邻域: $ \mathcal B = \bigcup_{w\in \mathcal B}\mathcal N_w^{(1)} $ ,其中 $ \mathcal N_w^{(1)} $ 表示节点 $ w $ 的一阶邻域集合。 - 合并
BFS
遍历到的节点: $ \mathcal N_v = \mathcal N_v\bigcup \mathcal B $ 。
- 获取当前
返回
$ \mathcal N_v $ 。
7.2.3 Graph Normalization
子图归一化是对邻域子图的节点施加一个顺序,使得节点从无序的图空间映射到线性顺序的排序空间。子图归一化的基本思想是利用
graph labeling
,对于不同子图中的节点,当且仅当节点在各自子图中的结构角色相似时,才给它们分配到各自邻接矩阵中的相似的相对位置similar relative position
。为了形式化该思想,我们定义了一个
Optimal Graph Normalization
问题,该问题的目标是找到给定的图集合的最佳labeling
。Optimal Graph Normalization
问题:令 $ \mathcal G $ 为一组图,每个图包含 $ k $ 个节点。令 $ F_l(\cdot) $ 为一个graph labeling
过程。令 $ d_G(\cdot,\cdot) $ 为 $ k $ 节点图之间的距离函数,令 $ d_A(\cdot,\cdot) $ 为 $ k\times k $ 矩阵之间的距离函数。则我们的目标是寻找 $ \hat F_l(\cdot) $ ,使得:即:从
$ \mathcal G $ 中随机均匀采样的两个子图,子图在排序空间(基于 $ F_l $ 得到的邻接矩阵)的距离与图空间的距离的差距最小。图的最优归一化问题是经典的图规范化问题
graph canonicalization problem
的推广。但是经典的labeling
算法仅针对同构图isomorphic graph
最佳,对于相似但是不同构的图可能效果不佳。相比之下,最优归一化问题的期望值越小,则labeling
过程将具有相似结构角色的节点进行对齐的效果越好。这里结构相似度由 $ d_G(G,G^\prime) $ 来衡量。关于图的最优归一化问题,这里给出了两个定理:
定理一:图的最优归一化问题是
NP-hard
。证明:通过从子图同构进行规约
reduction
。PATCHY-SAN
无法完全解决图的最优归一化问题,它只是比较了不同的graph labeling
方法,然后选择其中表现最好的那个。定理二:设
$ \mathcal G $ 为一组图,令 $ (G_1,G_1^\prime),\cdots,(G_N,G_N^\prime) $ 是从 $ \mathcal G $ 中独立随机均匀采样的一对图的序列。令:如果
$ d_A\left(\mathbf A^l(G),\mathbf A^l(G^\prime)\right) \ge d_G(G,G^\prime) $ ,则当且仅当 $ \theta_{l_1}\lt \theta_{l_2} $ 时有 $ \mathbb E_\mathcal G\left[\hat \theta_{l_1}\right]\lt \mathbb E_{\mathcal G}\left[\hat\theta_{l_2}\right] $ 。其中 $ l_1,l_2 $ 表示采用不同的graph labeling
。证明见论文。该定理使得我们通过比较估计量
$ \hat\theta_l $ 来以无监督的方式比较不同的graph labeling
。我们可以简单的选择使得 $ \hat\theta_l $ 最小的graph labeling
。当我们在图上选择编辑距离
edit distance
、在矩阵 $ \mathbf A^l(G) $ 上选择汉明距离时,假设条件 $ d_A\ge d_G $ 成立。另外,上述结论不仅对无向图成立,对于有向图也成立。
图的归一化问题,以及针对该问题的合适的
graph labeling
方法是PATCHY-SAN
算法的核心。我们对节点 $ v $ 的邻域子图进行归一化,并约束节点的label
:任意两个其它节点 $ u,w $ ,如果 $ d(u,v) \lt d(w,v) $ 则 $ F_r(u) \lt F_r(w) $ ,即距离 $ v $ 越近,排名越靠前。该约束保证了节点 $ v $ 的排名总是1
(即排名最靠前)。注意,
PATCHY-SAN
中应用了两种graph labeling
函数:- 第一种
graph labeling
函数 $ F_l(\cdot) $ ,用于选择节点序列,即Select Node Sequence
算法。 - 第二种
graph labeling
函数就是这里的距离函数,用于图的归一化问题,即Graph Normalization
算法。
由于大多数
labeling
方法不是单射的,因此有必要打破same-label
节点之间的联系。为此,我们使用NAUTY
。NAUTY
接收先验的node partition
作为输入,并通过选择字典顺序最大的邻接矩阵来打破剩余的联系remaining ties
。注意,节点
$ v $ 的局部邻域 $ \mathcal N_v $ 中,可能存在多个与节点 $ v $ 距离相等的邻居节点,因此距离函数作为graph labeling
函数不是单射的。众所周知,对于有界
degree
的图的同构问题可以在多项式时间求解,由于邻域子图的规模为 $ k $ 是一个常数,因此图的归一化算法可以在多项式时间内求解。我们的实验证明:图的邻域计算graph labeling
的过程仅产生一个微不足道的开销。- 第一种
Graph Normalization
算法:算法输入:
- 节点
$ v $ 及其局部邻域 $ \mathcal N_v $ graph labeling
函数 $ F_l^{^\prime}(\cdot) $ (注意,它可能与Select Node Sequence
算法中的graph labeling
函数 $ F_l(\cdot) $ 有所不同)- 感受野尺寸
$ k $
- 节点
输出:归一化的邻域子图
算法步骤:
对
$ \mathcal N_v $ 中的每个节点,使用 $ F_l^{^\prime}(\cdot) $ 计算这些节点对 $ v $ 的排名,使得:如果
$ |\mathcal N_v|\gt k $ ,则根据ranking
取 $ \mathcal N_v $ 中的top k
个节点,对所选择的节点再执行一次labeling
以及ranking
的过程。这里必须使用
$ F_r(\cdot) $ 在筛选出的较小的节点集合上重新计算,因为新的结构导致了新的labeling
分布。如果
$ |\mathcal N_v|\lt k $ ,则:添加 $ k-|\mathcal N_v| $ 个断开的虚拟节点。根据这
$ k $ 个节点的排名来归一化这些节点,并返回归一化的结果。
下图为对红色根节点
$ v $ 的邻域进行归一化过程,颜色表示到根节点的距离,感受野尺寸为 $ k=9 $ 。首先利用graph labeling
对节点进行排序,然后创建归一化的邻域。归一化还包括裁剪多余的节点和填充虚拟节点。节点的不同属性对应于不同的输入通道。不仅可以针对节点创建感受野,还可以针对边创建感受野,边的感受野尺寸为
$ k\times k $ ,边的不同属性对应不同的输入通道。正如前面的评论所说,最终得到的
$ \mathcal N_v $ 丢失了距离信息(和节点 $ v $ 的距离)。那么这里是否可以新增一个 “距离通道”,这个距离通道保存距离属性,即邻居节点和根节点 $ v $ 的距离。或者,如后文所述,也可以直接采用边的感受野(尺寸为
$ k\times k $ )。创建感受野的
Create Receptive Field
算法:算法输入:节点
$ v $ , $ F_l^\prime(\cdot) $ ,感受野大小 $ k $算法输出:节点
$ v $ 的感受野算法步骤:
- 计算节点
$ v $ 的邻域: $ \mathcal N_v=\text{NeighborhoodAssembly}(v,k) $ 。 - 归一化邻域子图:
$ G_{norm} = \text{GraphNormalization}(\mathcal N_v,v,F_l,k) $ 。 - 返回
$ G_{norm} $ 。
- 计算节点
我们可以将
PATCHY-SAN
与图像的CNN
相关联。定理:在图像中得到的一个像素序列上应用
PATCHY-SAN
,其中感受野尺寸为 $ k=(2b-1)^2 $ 、步幅为 $ s $ 、非零填充以及采用1-WL
归一化,则这等效于CNN
的一个感受野大小为 $ 2b-1 $ 、步幅为 $ s $ 、非零填充的卷积层。证明:如果输入图为一个正方形网格,则为节点构造的
1-WL
归一化的感受野始终是具有唯一节点顺序的正方形网格。
7.2.4 PATCHY-SAN 架构
PATCHY-SAN
既能处理节点,也能处理边;它既能处理离散属性,也能处理连续属性。PATCHY-SAN
对每个输入图 $ G $ 产生 $ w $ 个尺寸为 $ k $ 的归一化的感受野。假设 $ a_v $ 为节点属性的数量、 $ a_e $ 为边属性的数量,则这将产生一个 $ w\times k\times a_v $ 的张量(节点的感受野)以及一个 $ w\times k\times k \times a_e $ 的张量(边的感受野)。这里 $ a_v $ 和 $ a_e $ 都是输入通道的数量。我们可以将这两个张量
reshape
为一个 $ wk\times a_v $ 的张量和一个 $ wk^2\times a_e $ 的张量,然后对每个输入通道采用一个一维卷积层进行卷积。节点产生的张量应用步幅 $ k $ 、感受野尺寸 $ k $ 的一维卷积层,边产生的张量应用步幅 $ k^2 $ 、 感受野尺寸 $ k^2 $ 的一维卷积层 。剩下的结构可以任意结合CNN
的组件。另外我们可以利用融合层来融合来自节点的卷积输出feature map
和来自边的卷积输出feature map
。
7.2.5 算法复杂度
PATCHY-SAN
的创建感受野算法非常高效。另外,由于这些感受野的生成是相互独立的,因此感受野生成过程原生支持并行化。定理:令
$ N $ 为数据集中图的数量, $ k $ 为感受野尺寸, $ w $ 为宽度(每个子图包含的感受野数量)。假设 $ O(f_l(n,m)) $ 为包含 $ n $ 个节点、 $ m $ 条边的图的graph labeling
过程的计算复杂度。则PATCHY-SAN
最坏情况下的计算复杂度为 $ O(N\times w\times [f_l(n,m)+n\log n +\exp(k)]) $ 。证明见论文。
当采用
Weisfeiler-Lehman
算法作为graph labeling
算法时,它的算法复杂度为 $ O((n+m)\log n) $ 。考虑到 $ w\ll n,k \ll n $ ,则PATCHY-SAN
的复杂度为 $ N $ 的线性、 $ m $ 的准线性、 $ n $ 的准线性。
7.3 实验
7.3.1 运行时分析
我们通过将
PATCHY-SAN
应用于实际的图来评估其计算效率,评估指标为感受野的生成速度。我们将PATCHY-SAN
生成感受野的速度,与state-of-the-art
的CNN
执行学习的速度进行比较。数据集:所有输入图都来自
Python
模块GRAPHTOOL
。torus
图:具有10k
个节点的周期性晶格。random
图:具有10
个节点的随机无向图,节点的度的分布满足: $ p(k)\propto 1/k $ ,以及 $ k_{\max}=3 $ 。power
图:美国电网拓扑网络。polbooks
:2004
年美国总统大选期间出版的有关美国政治书籍的co-purchasing
网络。preferential
:一个preferential attachment network
,其中最新添加的节点的degree
为3
。astro-ph
:天体物理学arxiv
上作者之间的co-authorship
网络。email-enron
:一个由大约50万
封已发送email
生成的通信网络。
我们的
PATCHY-SAN
采用1-dimensional Weisfeiler-Lehman:1-WL
算法来归一化邻域子图。下图给出了每个输入图每秒产生感受野的速度。所有实验都是在单台2.8 GHZ GPU
、64G
内存的机器上执行。- 对于感受野尺寸
$ k=5/k=10 $ ,除了在email-eron
上的速度为600/s
和320/s
之外,在其它所有图上PATCHY-SAN
创建感受野的速度超过1000/s
。 - 对于最大的感受野尺寸
$ k=50 $ ,PATCHY-SAN
创建感受野的速度至少为100/s
。
对于一个经典的带两层卷积层、两层
dense
层的CNN
网络,我们在相同机器上训练速度大概是200-400
个样本/秒,因此PATCHY-SAN
感受野的生成速度足以使得下游CNN
组件饱和。- 对于感受野尺寸
7.3.2 可视化
可视化实验的目的是定性研究
restricted boltzman machine: RBM
等流行模型是否可以与PATCHY-SAN
结合从而用于无监督特征学习。我们将PATCHY-SAN
学到的尺寸为9
的归一化感受野使用restricted boltzman machine:RBM
进行无监督学习,RNM
所学到的特征对应于重复出现的感受野模式。其中:PATCHY-SAN
采用1-WL
算法进行邻域子图归一化。- 采用单层
RBM
,隐层包含100
个隐单元。 RBM
采用对比散度算法contrastive divergence: CD
训练30
个epoch
,学习率设为0.01
。
下图给出了从四张图中得到的样本和特征。我们将
RBM
学到的特征权重可视化(像素颜色越深,则对应权重重大)。另外我们还采样了每种模式对应的三个节点的归一化邻域子图,黄色节点表示当且节点(排序为1
)。左上角为
torus
周期性晶格图、左下角为preferential attachment
图、右上角为co-purchasing
图、右下角为随机图。
7.3.3 图的分类
图分类任务是将每个图划分到若干类别之一。我们采用
6
个标准benchmark
数据集来比较不同图分类模型的分类准确性和运行时间。MUTAG
数据集:由188
种硝基化合物组成的数据集,其类别表明该化合物是否对细菌具有诱变mutagenic
作用。PTC
数据集:由344
种化合物组成的数据集,其类别表明是否对老鼠具有致癌性。NCI1
和NCI109
数据集:筛选出的抑制non-small
肺癌细胞和卵巢癌细胞活性的化合物。PROTEIN
:一个图的数据集,其中图的节点表示次级结构元素secondary structure element
, 边表示氨基酸序列中的相邻关系,或者三维空间中的氨基酸相邻关系。其类别表示酶或者非酶。D&D
:由1178
种蛋白质组成的数据集,其类别表明是酶还是非酶。
我们将
PATCHY-SAN
和一组核方法比较,包括shortest-path kernel: SP
、random walk kernel: RW
、graphlet count kernel: GK
,以及Weisfeiler-Lehman sbutree kernel: WL
。对于核方法,我们使用
LIB-SVM
模型来训练和评估核方法的效果。我们使用10
折交叉验证,其中9-fold
用于训练,1-fold
用于测试。我们重复10
次并报告平均准确率和标准差。类似之前的工作,我们设置核方法的超参数为:
WL
的高度参数设置为2
,GK
的尺寸参数设置为7
,RW
的衰减因子从 $ \{10^{-6},10^{-5},\cdots,10^{-1}\} $ 中进行挑选。对于
PATCHY-SAN: PSCN
方法,我们使用1-dimensional WL
归一化,设置 $ w $ 为平均节点数量,设置感受野尺寸分别为 $ k=5 $ 和 $ k=10 $ 。实验中我们仅使用节点的属性,但是在 $ k=10 $ 时我们实验了融合节点的感受野和边的感受野,记作 $ k=10^E $ 。所有
PSCN
都使用了具有两个卷积层、一个dense
层、一个softmax
层的网络结构。其中:- 第一个卷积层有
16
个输出通道,第二个卷积层有8
个输出通道,步长 $ s=1 $ ,感受野大小为 $ k=10 $ 。 dense
层有128
个隐单元(relu
激活函数),采用dropout = 0.5
的dropout
。我们采用一个较小的隐单元数量以及dropout
从而避免模型在小数据集上过拟合。
所有卷积层和
dense
层的激活函数都是reLU
。 模型的优化算法为RMSPROP
优化算法,并基于Keras
封装的Theno
实现。所有
PSCN
需要优化的超参数为epoch
数量以及batch-size
。当
$ k=10 $ 时,我们也对PATCHY-SAN
抽取的感受野应用一个逻辑回归分类器PSLR
。- 第一个卷积层有
实验结果:这些模型在
benchmark
数据集上的结果如下表所示。其中前三行给出了各数据集的属性,包括图的最大节点数Max
、图的平均节点数Avg
、图的数量Graphs
。我们忽略了NCI109
的结果,因为它几乎和NCI1
相同。- 尽管使用了非常普通的
CNN
架构,PSCN
的准确率相比现有的graph kernel
方法具有很强的竞争力。在大多数情况下,采用 $ k=10 $ 的PSCN
具有最佳的分类准确性。 PSCN
这里的预测方差较大,这是因为:benchmark
数据集较小,另外CNN
的一些超参数(epoch
和batch-size
除外)没有针对具体的数据集进行优化。与图像和文本数据的体验类似,我们预期PATCHY-SAN
在大型数据集上的表现更好。PATCHY-SAN
的运行效率是graph kernel
中最高效的WL
方法的2
到8
倍。我们预计具有大量graph
的数据集上,PATCHY-SAN
的性能优势会更加明显。PATCHY-SAN
+ 逻辑回归的效果较差,这表明PATCHY-SAN
更适合搭配CNN
。CNN
学到了归一化感受野的非线性特征组合,并在不同感受野之间共享权重。- 采用中介中心性归一化
betweeness centrality normalization
结果也类似(未在表中体现),除了它的运行时间大约增加了10%
。
融合节点的感受野和边的感受野的
$ \text{PSCN } k =10^E $ 的效果优于PSCN k=10
,这表明保留邻域子图的距离信息的有效性。- 尽管使用了非常普通的
我们在较大的社交网络图数据集上使用相同的配置进行实验,其中每个数据集最多包含
12k
个图,每个图平均400
个节点。我们将PATCHY-SAN
和之前报告的graphlet count: GK
、deep graplet count kernel: DGK
结果相比。我们使用归一化的节点
degree
作为节点的属性,这突出了PATCHY-SAN
的优势之一:很容易地包含连续特征。可以看到
PSCN
在六个数据集的四个中明显优于其它两个核方法,并且在剩下两个数据集也取得了很好的性能。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论