数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
一、A Comprehensive Survey of Graph Embedding [2017]
图自然存在于现实世界的各种场景中,例如社交媒体网络中的社交图/扩散图、研究领域的引文图、电商领域的用户兴趣图、知识图等。有效的图分析可以使很多应用受益,如节点分类、节点聚类、节点检索/推荐、链接预测等。尽管图分析
graph analytics
是实用的和必要的,但大多数现有的图分析方法都存在昂贵的计算成本和空间成本的问题。然而,图嵌入graph embedding
提供了一种有效而高效的方法来解决图分析问题。具体来说,graph embedding
将图转换为一个低维空间,其中的图信息被保留下来。通过将图表示为一个(或一组)低维向量,然后可以有效地计算图算法。graph embedding
的问题与两个传统的研究问题有关,即图分析和representation learning
:- 一方面,图分析的目的是从图数据中挖掘有用的信息。
- 另一方面,
representation learning
的目的是获得更好的data representation
从而用于构建分类器或其他预测器。
graph embedding
位于这两个问题的重叠部分,侧重于学习低维representation
。这里区分了graph rerpesentation learning
和graph embedding
。注意,graph rerpesentation learning
并不要求学到的representation
是低维的。将图嵌入到低维空间并不是一件简单的事情。
graph embedding
的挑战取决于问题的设置,它由嵌embedding input
和embedding output
组成。论文《A Comprehensive Survey of Graph Embedding: Problems, Techniques and Applications》
将input graph
分为四类,包括同质图homogeneous graph
、异质图heterogeneous graph
、带有辅助信息的图、和由非关系型数据non-relational data
构建的图。不同类型的
embedding input
带有不同的信息要在emebdding
空间中保留,因此对图的嵌入问题提出了不同的挑战。例如,当嵌入一个只有结构信息的图时,节点之间的连接是需要保留的目标。然而,对于带有节点标签或属性信息的图来说,辅助信息(即节点标签、属性信息)从其他角度提供了图的属性,因此在嵌入过程中也需要被考虑。与
embedding input
是给定的、固定的不同,embedding output
是任务驱动的。例如,最常见的embedding output
类型是node embedding
,它将临近的节点表示为相似的向量。node embedding
可以有利于节点相关的任务,如节点分类、节点聚类等。然而,在某些情况下,目标任务可能与图的更高粒度有关,例如,
node pair
、子图、整个图。因此,在embedding output
方面的第一个挑战是为目标任务找到一个合适的embedding output
类型。论文《A Comprehensive Survey of Graph Embedding: Problems, Techniques and Applications》
将graph embedding output
分为四种类型,包括node embedding
、edge embedding
、hybrid embedding
和whole-graph embedding
。不同的输出粒度对
good embedding
有不同的标准,并面临不同的挑战。例如,一个好的node embedding
保留了与嵌入空间中的邻近节点的相似性。相比之下,一个好的whole-graph embedding
将整个图表示为一个矢量,这样就可以保留graph-level
的相似性。
根据对不同问题设置中所面临的挑战的观察,作者提出了两个
graph embedding
工作的分类法,即根据问题设置和嵌入技术对graph embedding
文献进行分类。具体而言:- 作者首先介绍了
graph embedding
问题的不同设置,以及在每个设置中面临的挑战。 - 然后,作者描述现有研究如何在他们的工作中解决这些挑战,包括他们的见解和他们的技术解决方案。
需要注意的是,尽管已经有一些尝试来综述
graph embedding
,但它们有以下两个局限性:- 首先,他们通常仅根据
graph embedding
技术来进行分类。他们都没有从问题设置的角度分析graph embedding
工作,也没有总结每个问题设置中的挑战。 - 其次,在现有的
graph embedding
综述中,仅涉及了有限的相关工作。例如,《Graph embedding techniques, applications, and performance: A survey》
主要介绍了12
种有代表性的graph embedding
算法,《Knowledge graph embedding: A survey of approaches and applications》
只关注知识图的嵌入。此外,没有对每种graph embedding
技术背后的洞察力进行分析。
论文贡献:
- 论文提出了一个基于问题设置的
graph embedding
分类法,并总结了每个设置中面临的挑战。作者是第一个根据问题设置对graph embedding
工作进行分类的人,这为理解现有工作带来了新的视角。 - 论文对
graph embedding
技术进行了详细的分析。与现有的graph embedding
综述相比,论文不仅综述了一套更全面的graph embedding
工作,而且还提出了每个技术背后的见解总结。与简单地罗列过去如何解决graph embedding
的问题相比,总结的见解回答了问题:为什么能(以某种方式)解决graph embedding
问题。 - 论文对
graph embedding
的应用进行了系统的分类,并将这些应用划分为节点相关、边相关、图相关。对于每个类别,论文提出了详细的应用场景作为参考。 - 在计算效率、问题设置、解决技术和应用方面,论文在
graph embedding
领域提出了四个有希望的未来研究方向。对于每个方向,论文对其在当前工作中的缺点(不足)进行了全面分析,并提出了未来的研究方向。
1.1 定义
给定图
$ \mathcal G = (V,E) $ ,其中 $ V $ 为节点集合, $ E $ 为边集合, $ \mathbf A $ 为图的邻接矩阵。- 每个节点
$ v_i $ 关联一个节点类型 $ f_v(v_i) $ ,它是一个映射 $ f_v:V\rightarrow \mathcal T^v $ ,其中 $ \mathcal T^v $ 表示节点类型集合。 - 每条边
$ e_{i,j} $ 关联一个边类型 $ f_e(e_{i,j}) $ ,它也是一个映射 $ f_e:E\rightarrow \mathcal T^e $ ,其中 $ \mathcal T^e $ 表示边类型集合。
定义:
- 同质图
$ \mathcal G_{\text{homo}} = (V,E) $ ,其中 $ |\mathcal T^v| = |\mathcal T^e| = 1 $ 。 $ \mathcal G_{\text{homo}} $ 的所有节点只有一个类型,所有边也只有一个类型。 - 异质图
$ \mathcal G_{\text{hete}} = (V,E) $ ,其中 $ | \mathcal T^v| + |\mathcal T^e| \gt 1 $ ,即 $ \mathcal G_{\text{hete}} $ 的节点和/或边有多个类型。 - 知识图谱
knowledge graph
$ \mathcal G_{\text{know}} = (V,E) $ 为一个有向图,节点为实体entity
,边为subject-property-object
三元组。每条边由(head entity, relation, tail entity)
的形式组成,记作 $$ ,它表示从实体 $ h $ 到实体 $ h $ 的关系 $ r $ ,其中 $ h,t\in V $ 为实体, $ r\in E $ 为边。我们称 $$ 为知识图谱三元组。注意,知识图谱中节点通常具有不同类型,边通常也具有不同类型,因此知识图谱也可以视为一个异质图。
- 每个节点
定义节点
$ v_i, v_j $ 之间的一阶邻近度first-order proximity
为节点 $ v_i $ 和 $ v_j $ 的相似性。我们认为:如果两个节点之间具有较大权重的连接,则它们更为相似。由于边 $ e_{i,j} $ 的权重为 $ A_{i,j} $ (邻接矩阵的第 $ i $ 行第 $ j $ 列) ,因此我们将节点 $ v_i $ 和 $ v_j $ 之间的一阶邻近度表示为 $ s_{i,j}^{(1)} = A_{i,j} $ 。定义
$ \mathbf{\vec s}_i^{(1)} = \left[s_{i,1}^{(1)},s_{i,2}^{(1)},\cdots, s_{i,|V|}^{(1)} \right] $ 为节点 $ v_i $ 和所有其它节点的一阶邻近度向量。定义节点
$ v_i, v_j $ 之间的二阶邻近度second-order proximity
为节点 $ v_i $ 的邻域和 $ v_j $ 的邻域之间的相似性,记作 $ s_{i,j}^{(2)} $ 。二阶邻近度表示节点邻域结构的相似性,如果两个节点的邻域越相似,则它们之间的二阶邻近度越大。如果我们用
cos
函数作为邻域相似性的度量,则二阶邻近性为:节点
$ v_i,v_j $ 之间的高阶邻近度higher-order proximity
也可以类似地定义。例如,节点 $ v_i,v_j $ 之间的 $ k $ 阶邻近度定义为节点 $ v_i $ 的 $ k-1 $ 阶邻域和 $ v_j $ 的 $ k-1 $ 阶邻域之间的相似性,即 $ \mathbf{\vec s}_i^{(k-1)} $ 和 $ \mathbf{\vec s}_j^{(k-1)} $ 之间的相似性。可以采用递归定义:
注意:也可以使用其它的一些指标来定义高阶邻近度,如
Katz Index, Rooted PageRank, Adamic Adar
等等。定义
grap embedding
为:给定一个图 $ \mathcal G=(V,E) $ ,以及一个预先指定的embedding
维度 $ d $ ,graph embedding
需要将图 $ \mathcal G $ 映射到 $ d $ 维空间,在映射过程中尽可能保留图的属性。图的属性可以通过一阶邻近度和高阶邻近度等指标来衡量。- 可以将整张图表示为一个
$ d $ 维向量。 - 也可以将单张图表示为一组
$ d $ 维向量,其中每个向量表示图中部分组件的embedding
(如节点、边、子结构)。
如下图所示,单张图以不同粒度嵌入到一个二维空间,其中
$ G_{1,2,3} $ 表示包含节点 $ v_1,v_2,v_3 $ 的子结构。- 可以将整张图表示为一个
1.2 问题
1.2.1 Graph Embedding Input
graph embedding
的输入是图,这里我们将输入图划分为四类:同质图homogeneous graph
、异质图heterogeneous graph
、带辅助信息的图、从非关系数据人工构造的图。每种类型的图都会给graph emebdding
带来不同的挑战。同质图:图的节点和边分别只有一种类型。同质图可以进一步划分为加权图、无权图,以及有向图,无向图。
挑战:如何捕获图中观察到的各种各样的连接模式?由于同质图中仅有结构信息可用,因此同质图
graph embedding
的挑战在于如何在embedding
中保持输入图中观察到的这些连接模式。异质图:异质图包含三种场景:
- 基于社区的问答网站
Community-based Question Answering:cQA
:cQA
是基于互联网的众包服务,用户可以在网站上发布问题,然后由其它用户回答。直观来看,cQA
图中有不同类型的节点,如问题question
、答案answer
、用户user
。 - 多媒体网络:包含多种类型媒体数据(如图像、文本)的网络。
- 知识图谱:在知识图谱中,实体(节点)和关系(边)通常都具有不同的类型。
除了以上三种类型的异质图之外,还有其它类型的异质图。
挑战:
- 如何探索不同类型对象之间的全局一致性?在异质图
embedding
中,不同类型的节点(或者不同类型的边)被嵌入到同一个公共空间中。如何确保embedding
的全局一致性是一个问题。 - 如何处理不同类型对象之间的不平衡?在异质图中,不同类型的对象数量差异很大,因此学习嵌入时需要考虑数据倾斜问题。
- 基于社区的问答网站
带辅助信息的图:除了包含节点结构之外,带辅助信息的图还包含节点/边/全图的辅助信息。有五种类型的辅助信息:
label
:节点带标签信息(离散值)。带相同标签的节点的embedding
应该彼此靠近、不同标签的节点的embedding
应该彼此远离。attribute
:节点带属性信息。和标签不同,属性值可以是连续的也可以是离散的。属性值差异较小的节点的embedding
应该彼此靠近、属性值差异较大的节点的embedding
应该彼此远离。node feature
:节点带特征信息。和属性值不同,特征可能包含文本、向量、图像等多种类型的内容。节点特征通过提供丰富的结构化信息来提升graph emebdding
性能。另外,这也使得inductive graph embedding
成为可能。information progapation
:消息传播。一个典型例子是Twitter
中的转发。knowledge base
:知识库。流行的知识库包括Wikipedia, Freebase, YAGO, DBPedia
等。以Wikipedia
为例,concept
是用户提出的实体entity
,文本是该实体相关的文章。
其它类型的辅助信息包括用户
check-in
数据(用户位置信息)、用户item
偏好排名信息等等。注意,辅助信息不仅局限于一种类型,也可以考虑多种类型如label & node feature
。挑战:如何融合丰富的非结构化信息,使得学到的
embedding
同时编码了图的拓扑结构和辅助信息?除了图结构信息之外,辅助信息还有助于定义节点相似性。因此如何融合图拓扑结构和辅助信息这两个信息源,这是一个问题。人工构造图:此时没有图数据,需要通过不同的方法从非关系数据中人工构建图。大多数情况下,输入为特征矩阵
$ \mathbf X\in \mathbb R^{|V|\times d} $ ,其中第 $ i $ 行 $ \mathbf{\vec x}_i\in \mathbb R^d $ 为第 $ i $ 个样本的 $ d $ 维特征向量。通常使用样本
$ i,j $ 的特征向量 $ (\mathbf{\vec x}_i, \mathbf{\vec x}_j) $ 来计算相似度 $ s_{i,j} $ ,从而构造相似度矩阵 $ \mathbf S $ 。然后基于 $ \mathbf S $ 有两种人工构造图的方法:一种直接的计算方法是将
$ \mathbf S $ 视为构造图的邻接矩阵。但是这种方法基于欧拉距离,如果 $ \mathbf X $ 位于一个弯曲的流形上,那么在这个流形上 $ \mathbf{\vec x}_i $ 和 $ \mathbf{\vec x}_j $ 的流形距离要远大于它们的欧拉距离。为解决该问题,一个方法是从
$ \mathbf S $ 构建一个 $ k $ 近邻图kNN graph
,并基于kNN
图估计一个邻接矩阵 $ \mathbf A $ 。如Isomap
将测地线距离融合到 $ \mathbf A $ 中:它首先从 $ \mathbf S $ 构造一个kNN
图,然后找到两个节点之间的最短距离作为它们的测地线距离。另一种构造图的方法是基于节点的共现,从而在节点之间建立边。如在图像领域,研究人员将像素视为节点,像素之间的空间关系视为边。
除了上述基于成对节点相似性以及节点共现的方法之外,还针对不同目的设计了其它的图构造方法。
挑战:
- 如何构造一个图从而对样本之间的成对关系进行编码?即如何计算非关系数据的样本之间的关系,并构造这样的图。
- 如何将节点邻近度矩阵保留在
embedding
空间中?即如何在embedding
空间中保留构造图的节点邻近性。
1.2.2 Graph Embedding Output
graph emebdding
的输出是图(或者图的一部分)的一个(或者一组)低维向量。根据输出粒度,可以将graph embedding
输出分为node embedding
、edge embedding
、hybrid embedding
、whole-graph embedding
。与固定的且给定的输入不同,
graph embedding
的输出是任务驱动的。例如,node embedding
可用于各种与节点相关的图分析任务,而某些任务可能需要全图whole-graph embedding
。因此,embedding
输出的第一个挑战是如何找到满足特定任务需求的、合适的graph embedding
。node embedding
:将每个节点表示为低维空间中的向量,图中临近的节点在embedding
空间中有相似的向量表示。各种
graph embedding
方法之间的差异在于如何定义两个节点之间的相近程度closeness
,其中一阶邻近度和二阶邻近度是计算两个节点相近程度的常用度量,某些工作中也使用高阶邻近度。挑战:如何在各种类型的输入图中定义成对节点的邻近性,以及如何在
embedding
中对这种相近程度进行编码?edge embedding
:将每条边表示为低维空间中的向量。edge embedding
在以下两种情况下很有用:- 知识图谱
embedding
需要学习node embedding
和edge embedding
。每条边都是三元组 $$ , edge embedding
需要在embedding
空间中保留 $ h $ 和 $ t $ 之间的关系 $ r $ ,这样可以在给定三元中的两个元素时正确地预测缺失的实体或者关系。 - 一些工作将节点
pair
对嵌入为一个向量,从而预测这对节点之间是否存在链接。
总之,
edge embedding
有利于与边相关的图分析,如链接预测、知识图谱的实体/关系预测。挑战:
- 如何定义
edge-level
相似度?边的相似度不同于节点相似度,因为边通常包含一对节点。 - 对于有向边,如何建模边的非对称属性?和节点不同,边可以是有向的。因此
edge embedding
需要编码这种不对称属性。
- 知识图谱
hybrid embedding
:嵌入图的不同类型的组件,如node + edge
(子结构substructure
)、node + community
。已有大量工作研究了子结构嵌入
substructure embedding
,而社区嵌入community embedding
目前关注较少。substructure embedding
或者community embedding
也可以通过聚合结构中的node embedding
和edge embedding
来得到,但是这种间接的方式并未针对结构的表示进行优化。而且,node embedding
和edge embedding
可以彼此强化:通过融合社区感知community-aware
的高阶邻近度,可以学到更好的node embedding
;而当学到更好的node embedding
时,就可以检测到更好的社区。挑战:
- 如何生成目标子结构?和其它类型的
embedding
输出相反,hybrid embedding
并未提供需要嵌入的目标(如子图,社区)。因此第一个挑战是如何生成这种目标结构。 - 如何在一个公共空间中嵌入不同类型的图组件?不同类型的目标(如社区、节点)可以同时嵌入到一个公共空间中。如何解决
embedding
目标类型的异质性是一个问题。
- 如何生成目标子结构?和其它类型的
whole-graph embedding
:将整个图输出为一个embedding
向量,这通常用于蛋白质、分子等较小的图。这种情况下,一个图表示为一个向量,相似的图被嵌入到相近的embedding
空间。whole-graph embedding
提供了图相似度计算的一种简单有效解决方案,使得图分类任务受益。挑战:
- 如何捕获整个图的属性?
whole-graph embedding
需要捕获整个图的属性,而不是单个节点或者边的属性。 - 如何在表达性
expressiveness
和效率efficiency
之间平衡? 由于需要捕获全图属性,因此和其它类型的embedding
相比,whole-graph embedding
耗时更多。whole-graph embedding
的关键挑战是如何在学到的embedding
的表达能力和embedding
算法的效率之间平衡。
- 如何捕获整个图的属性?
1.3 技术
- 通常
graph embedding
目标是在低维embedding
空间中表达一个图,其中该embedding
空间保留尽可能多的图属性信息。不同graph embedding
算法之间的差异主要在于如何定义需要保留的图属性。不同的算法对于节点相似性、边相似性、子结构相似性、全图相似性有不同的定义,以及对于如何将这种相似性保留在embedding
空间有各自不同的见解insight
。
1.3.1 矩阵分解
基于矩阵分解
Matrix Factorization
的graph emebdding
方法以矩阵形式表示图属性,如节点成对相似性node pairwise similarity
,然后分解该矩阵从而得到node embedding
。基于矩阵分解的
graph embedding
方法也是graph embedding
的早期研究方式。大多数情况下,输入是非关系型的non-relational
、高维的数据通过人工构造而来的图,输出是一组node embedding
。因此可以将graph embedding
视为保留结构信息的降维问题,该问题假设输入数据位于低维流形中。有两种类型的基于矩阵分解的
graph embedding
方法:分解图拉普拉斯特征图Laplacian Eigenmaps
、分解节点邻近度矩阵proximity matrix
。总结:矩阵分解主要用于两种场景:嵌入由非关系数据构成的图的
node embedding
(这是拉普拉斯特征图的典型应用场景)、嵌入同质图。
a. Graph Laplacian Eigenmaps
图拉普拉斯特征图分解的思想是:保留的图属性为成对节点相似性,因此如果两个相距较远的节点(通过
embedding
距离衡量)的相似度较大,则给予较大的惩罚。为方便讨论,假设
embedding
的维度为一维,即将每个节点 $ v_i $ 映射为一个数值 $ y_i $ 。基于上述洞察insight
,则最优化embedding
为:假设
embedding
维度为 $ d $ 维,则可以分别针对每一维来计算最优的embedding
。其中:
$ y_i $ 为节点 $ v_i $ 的一维embedding
, $ \mathbf{\vec y} $ 为所有节点一维embedding
组成的embedding
向量。 $ W_{i,j} $ 为节点 $ v_i,v_j $ 之间的成对相似性, $ \mathbf W $ 为图中节点之间的相似度矩阵。通常选择 $ \mathbf W $ 为图的邻接矩阵(无权图)或者带权重的邻接矩阵(带权图)。 $ \mathbf L = \mathbf D- \mathbf W $ 为图拉普拉斯矩阵,其中 $ \mathbf D=\text{diag}(D_i) $ 为对角矩阵, $ D_i = \sum_{j\ne i}W_{i,j} $ 为其对角线元素。
但是,上述最优化方程没有唯一解。假设
$ \mathbf {\vec y}^* $ 为最终解,则 $ \frac{\mathbf {\vec y}^*}{2} $ 使得目标函数更小,矛盾。因此为了移除缩放因子的影响,我们通常增加约束条件 $ \mathbf{\vec y}^\top \mathbf D \mathbf {\vec y} = 1 $ 。因此问题变为:则最优解
$ \mathbf {\vec y}^* $ 为特征值分解问题eigenproblem
$ \mathbf W{\mathbf {\vec y}} = \lambda \mathbf D \mathbf{\vec y} $ 的最大特征值eigenvalue
对应的特征向量eigenvector
。上述
graph embedding
的问题是该方法是transductive
的,它仅能嵌入已有的节点。实际应用中还需要嵌入未见过的、新的节点。一种解决方案是设计线性函数
$ y_i = \mathbf{\vec x}_i^\top \mathbf{\vec a} $ ,其中 $ \mathbf{\vec x}_i\in \mathbb R^{d_f} $ 为节点 $ v_i $ 的特征向量feature vector
。这样只要提供节点的特征向量,我们就可以求得其embedding
。因此inductive graph embedding
问题的核心在于求解合适的 $ \mathbf{\vec a} $ 。同样地我们认为如果相距较远的两个节点(通过
embedding
距离衡量)的相似度较大,则给与较大的惩罚。则最优化embedding
为:其中
$ \mathbf X\in \mathbb R^{d_f\times |V|} $ 为节点特征向量组成的特征矩阵。类似地,为了移除缩放因子的效果,我们通常增加约束条件
$ \mathbf{\vec a}^\top\mathbf X \mathbf D \mathbf X^\top\mathbf {\vec a} = 1 $ 。因此问题变为:则最优解
$ \mathbf {\vec a}^* $ 为特征值分解问题eigenproblem
$ \mathbf X\mathbf W\mathbf X^\top{\mathbf {\vec a}} = \lambda \mathbf X\mathbf D \mathbf X^\top\mathbf{\vec a} $ 的最大特征值eigenvalue
对应的特征向量eigenvector
。上述讨论都是假设
embedding
为一维的。事实上如果希望embedding
是多维的,如 $ d $ 维,则选择的不是最大特征值对应的特征向量,而是top d
特征值对应的特征向量。现有方法的差异主要在于如何计算节点
$ v_i, v_j $ 之间的成对相似度 $ W_{i,j} $ ,以及是否使用线性函数 $ y_i = \mathbf{\vec x}_i^\top\mathbf{\vec a} $ 。在下表中我们总结了现有的eigenmaps-based graph embedding
方法,并给出了它们如何计算节点相似度矩阵 $ \mathbf W $ 以及采用什么目标函数。其中:
Eq.2
表示目标函数 $ \mathbf {\vec y}^* = \arg\max \frac{\mathbf{\vec y}^\top\mathbf W \mathbf{\vec y} }{\mathbf{\vec y}^\top\mathbf D \mathbf{\vec y} } $ ,Eq.4
表示目标函数 $ \mathbf{\vec a}^* = \arg\max \frac{\mathbf{\vec a}^\top\mathbf X \mathbf W \mathbf X^\top\mathbf {\vec a}}{\mathbf{\vec a}^\top\mathbf X \mathbf D \mathbf X^\top\mathbf {\vec a} } $ ; $ \mathcal O(\cdot) $ 表示某些算法的目标函数,如 $ \mathcal O(\text{SVM classifier}) $ 表示SVM
分类器的目标函数。最初的研究
MDS
直接采用两个特征向量 $ \mathbf{\vec x}_i $ 和 $ \mathbf{\vec x}_j $ 之间的欧氏距离作为 $ W_{i,j} $ 。MDS
不考虑节点的相邻关系,也就是说,任何一对训练样本都被认为是相连的。后续研究(如
Isomap
、LE
、LPP
、LLE
)通过首先从数据特征中构建一个k nearest neighbour graph
来克服这个问题。每个节点只与它的top-k
相似邻居相连。之后,利用不同的方法来计算相似性度矩阵 $ \mathbf W $ 从而尽可能多地保留所需的图属性。最近设计了一些更先进的模型。例如:
AgLPP
入了一个anchor graph
,以显著提高LPP
的效率。LGRM
学习了一个local regression model
来掌握图的结构,以及一个全局回归global regression
项来进行out-of-sample
的数据推断。- 最后,与之前保留
local geometry
的工作不同,LSE
使用local spline regression
来保留global geometry
。
当辅助信息(如
label
、属性)可用时,目标函数被调整以保留更丰富的信息:- 例如,
SR
构建了一个邻接图adjacent graph
$ \mathbf W $ 和一个标记图labelled graph
$ \mathbf W^\text{SR} $ 。目标函数由两部分组成:一部分侧重于保留LPP
数据集的局部几何结构local geometric structure
,另一部分试图在标记的训练数据上获得最佳类别可分的embedding
。 - 同样,
ARE
也构建了两个图:一个是编码局部几何结构的邻接图 $ \mathbf W $ ,一个是编码用户相关性反馈中pairwise relation
的feedback relational graph
$ \mathbf W^\text{ARE} $ 。 RF-Semi-NMF-PCA
的目标函数由三个部分组成,从而同时考虑聚类、降维和graph embedding
:PCA
、k-means
和graph Laplacian regularization
。
- 例如,
其他一些工作认为,不能通过简单地枚举成对的节点关系来构建
$ \mathbf W $ ,相反它们采用semidefinite programming: SDP
来学习 $ \mathbf W $ 。具体而言:SDP
旨在找到一个内积矩阵,使图中不相连的任何两个输入之间的成对距离最大化,同时保留最近的邻居距离。MVU
构建了这样的矩阵,然后将MDS
应用于学到的内积矩阵。《Unsupervised large graph embedding》
证明:如果 $ \mathbf W $ 是对称的、双随机的、PSD
的、以及秩为 $ p $ 的,则正则化的LPP
等价于正则化的SR
。
b. Node Proximity Matrix
除了上述求解广义特征值方法之外,另一个方向是试图直接分解节点邻近度矩阵。可以基于矩阵分解技术在低维空间中近似节点邻近度,使得节点邻近度的近似损失最小化。
给定节点邻近度矩阵
$ \mathbf W $ ,则这种方法的目标函数为:其中:
$ \mathbf Y\in \mathbb R^{|V|\times d} $ 为节点的embedding
矩阵。 $ \mathbf Y^c\in \mathbb R^{|V|\times d} $ 为节点的content embedding
矩阵。
该目标函数是寻找邻近度矩阵
$ \mathbf W $ 的一个最优低秩近似。一种流行的求解方法是对 $ \mathbf W $ 进行SVD
分解:其中:
$ \{\sigma_1,\sigma_2,\cdots,\sigma_{|V|}\} $ 为邻近度矩阵 $ \mathbf W $ 的从大到小排序的奇异值。 $ \mathbf{\vec u}_i,\mathbf{\vec u}_i^c $ 为奇异值 $ \sigma_i $ 对应的奇异向量。
则我们得到最优
embedding
为:根据是否保留不对称性,节点
$ v_i $ 的embedding
可以为 $ \mathbf{\vec y}_i $ ,其中 $ \mathbf{\vec y}_i $ 为 $ \mathbf Y $ 的第 $ i $ 行 ;也可以为 $ \mathbf{\vec y}_i $ 和 $ \mathbf{\vec y}_i^c $ 的拼接,即 $ \left[\mathbf{\vec y}_i,\mathbf{\vec y}_i^c\right] $ ,其中 $ \mathbf{\vec y}_i^c $ 为 $ \mathbf Y^c $ 的第 $ i $ 行。我们在下表中总结了更多的矩阵分解方案,例如正则化的高斯矩阵分解、正则化的低秩矩阵分解、带更多正则化约束的矩阵分解等。
其中:
Eq.5
表示目标函数 $ \min\left\|\mathbf W - \mathbf Y \left(\mathbf Y^c\right)^\top\right\| $ 。
1.3.2 深度学习
- 基于深度学习的
graph embedding
在图上应用深度学习模型,这些模型的输入可以是从图采样得到的路径,也可以是整个图本身。因此基于是否采用随机游走从图中采样路径,我们将基于深度学习的graph embedding
分为两类:带随机游走的deep learning
、不带随机游走的deep learning
。 - 总结:由于深度学习的鲁棒性和有效性,深度学习已被广泛应用于
graph emebdding
中。除了人工构造的图之外,所有类型的图输入以及所有类型的embedding
输出都可以应用基于深度学习的graph embedding
方法。
a. Deep Learning based Graph Embedding with Random Walk
基于带随机游走的
deep learning
的graph embedding
的思想是:对于给定的节点,通过给定该节点的embedding
的条件下最大化该节点邻域的条件概率,则可以在embedding
空间中保留图的二阶邻近度。在基于带随机游走的
deep learning
的grap emebdding
中,图表示为从图中采样的一组随机游走序列。然后深度学习模型被应用于这些随机游走序列从而执行grap embedding
。在嵌入过程中,embedding
保留了这些随机游走序列携带的图属性。基于以上的洞察,
DeepWalk
采用神经语言模型(SkipGram
) 执行grap embedding
,其中SkipGram
旨在最大化窗口内单词之间的共现概率。DeepWalk
首先应用截断的随机游走从输入图采样一组随机序列,然后将SkipGram
应用于采样到的随机序列,从而最大化给定节点条件下节点邻域出现的概率。通过这种方式,相似邻域(具有较大的二阶邻近度)的节点共享相似的embedding
。DeepWalk
的目标函数为:其中:
$ \mathbf{\vec y}_i\in \mathbb R^d $ 为节点 $ v_i $ 的embedding
; $ w $ 为上下文窗口的大小。SkipGram
不考虑窗口内节点的属性,因此有:这里假设给定节点
$ v_i $ 的条件下,上下文窗口内的各节点之间相互独立。其中
$ P(v_{i+j}\mid \mathbf{\vec y}_i) $ 表示给定节点 $ v_i $ 的embedding
时,节点 $ v_{i+j} $ 位于 $ v_i $ 上下文窗口 $ w $ 内的概率。这个条件概率定义为softmax
函数:上述概率难以计算,因为分母需要计算
$ \mathbf{\vec y}_i $ 和图中所有节点的embedding
的内积,算法复杂度为 $ O(|V|) $ 。为降低算法复杂度,有两种解决方案:Hierarchical Softmax
:我们构造二叉树来高效计算 $ P(v_{i+j}\mid \mathbf{\vec y}_i) $ ,其中将每个节点分配给二叉树的叶节点。现在我们仅需要评估从二叉树根节点到相应叶子节点的路径的概率。假设根节点到叶节点
$ v_j $ 的节点路径为 $ (b_0,b_1,\cdots,b_{\log (|V|)}) $ ,其中 $ b_0 = \text{root} $ , $ b_{\log(|V|)} = v_j $ ,则有: $ P(b_t\mid \mathbf{\vec y}_i) $ 为一个二元分类器 $ P(b_t\mid \mathbf{\vec y}_i) = \sigma(\mathbf{\vec y}^\top_{b_t}\mathbf{\vec y}_i) $ ,其中: $ \sigma(\cdot) $ 为sigmoid
函数; $ \mathbf{\vec y}^\top_{b_t} $ 为 $ b_t $ 的父节点的embedding
。现在
Hierarchical Softmax
函数将SkipGram
的时间复杂度从 $ O(|V|^2) $ 降低到 $ O(|V|\times \log (|V|)) $ 。负采样:负采样的核心思想是将目标节点和噪声区分开来。即对于节点
$ v_i $ ,我们希望将其邻居 $ v_{i+j} $ 和其它节点区分开。我们使用一个噪音分布 $ P_n(v_i) $ 为节点 $ v_i $ 采样一组噪音节点,称为负样本。因此 $ P(v_{i+j}\mid \mathbf{\vec y}_i) $ 计算为:其中:
$ K $ 为负样本数量; $ v_t $ 为采样到的负样本。通常
$ P_n(v_i) $ 选择一个均匀分布 $ P_n(v_i)\sim \frac{1}{|V|} $ ,也可以选择其它分布。最终负采样将
SkipGram
的时间复杂度从 $ O(|V|^2) $ 降低到 $ O(K |V|) $ 。
DeepWalk
的成功引起了很多后续的研究,这些研究在graph embedding
的采样路径上应用了各种深度学习模型(如SkipGram
或LSTM
),我们在下表中总结了这些方法。其中:Eq.11
表示 $ P(v_{i+j}\mid \mathbf{\vec y}_i) = \prod_{t=1}^{\log (|V|)}P(b_t\mid \mathbf{\vec y}_i) $ 。Eq.12
表示 $ P(v_{i+j}\mid \mathbf{\vec y}_i) = \log \sigma\left(\mathbf{\vec y}_{i+j}^\top \mathbf{\vec y}_i\right) + \sum_{t=1}^K \mathbb E_{v_t\sim P_n}\left[\log \sigma\left(-\mathbf{\vec y}_{v_t}^\top\mathbf{\vec y}_i\right)\right] $ 。
如下表所示,大多数研究都遵循了
DeepWalk
思想,但是改变了随机游走采样方法或者要保留的邻近度。注意:SkipGram
仅能嵌入单个节点,如果需要嵌入一个节点序列到固定维度的向量(如将一个句子嵌入为一个向量),则需要使用LSTM
。
b. Deep Learning based Graph Embedding without Random Walk
不基于带随机游走的
deep learning
的graph embedding
的思想是:深度神经网络体系结构是将图编码到低维空间的强大、有效的解决方案。这一类
deep learning
方法直接将深度神经网络应用于整个图(或者图的邻接矩阵)。以下是一些用于graph embedding
的流行深度学习模型:自编码器
autoencoder
:自编码器旨在通过其编码器encoder
和解码器decoder
,使得自编码器的输出和输入的重构误差最小。编码器和解码器都包含多个非线性函数,其中编码器将输入数据映射到representation space
、解码器将representation space
映射到重构空间。就邻域保持而言,采用自编码器的
grap embedding
思想类似于节点邻近度矩阵分解。具体而言,由于邻接矩阵包含了节点的邻域信息,因此如果将邻接矩阵作为自编码器的输入,则重构过程将使得具有相似邻域的节点具有相似的embedding
。Deep Neural Network
:卷积神经网络及其变种已被广泛用于graph embedding
。- 一些工作直接使用原始
CNN
模型,并对input graph
进行重构从而适应CNN
。 - 另一些工作尝试将深度神经网络推广到非欧几何邻域(如,图结构)。这些方法之间的差异在于它们在图上采取了不同的、类似于卷积的运算方式。例如,模仿卷积定理来定义谱域中的卷积、以及将卷积视为空间域中的邻域匹配。
- 一些工作直接使用原始
还有一些其他类型的基于深度学习的
graph embedding
方法,如:DUIF
使用hierarchical softmax
作为前向传播来最大化modularity
。HNE
利用深度学习技术来捕捉异质组件之间的交互,如CNN
组件用于图片、FC
层用于文本。
我们在下表中总结了所有不带随机游走的基于深度学习的 graph embedding
方法,并比较了它们使用的模型以及每个模型的输入。
1.3.3 边重构
基于边重建
edge reconstruction
的node embedding
基本思想是:通过node embedding
重建的边应该和输入图中的边尽可能一致。因此,基于边重建的
node embedding
方法通过最大化边的重建概率edge reconstruction probability
或最小化边的重建损失edge reconstruction loss
,从而优化边重建的目标函数。其中重建损失又分为distance-based
损失和margin-based ranking
损失。总结:基于边重构的方法适用于大多数
grap embedding
场景。根据我们的观察发现,只有非关系数据中构建的人工图embedding
、whole-graph embedding
还未应用这种方式。原因是:- 人工构造的图中,所谓的 “边” 是我们人工构造的,并没有真实的物理含义。而且不同的构造方式得到的 “边” 不同。
- 边仅代表两个节点之间的关系,因此基于边重建的方法聚焦于局部的连接性,因此它不适合
whole-graph embedding
。
a. 最大化边的重建概率
最大化边的重建概率的基本思想是:好的
node embedding
应该能够最大程度地重建图中的边。因此,该方法最大化所有观察到的边的生成概率。给定节点
$ v_i,v_j $ 的embedding
$ \mathbf{\vec y}_i,\mathbf{\vec y}_j $ ,我们计算边的生成的概率为联合概率:它表示节点
$ v_i,v_j $ 之间存在边的概率,即一阶邻近度。为学习
node embedding
,我们最大化图中所有边的生成概率,因此目标函数为:类似地,节点
$ v_i,v_j $ 之间的二阶邻近性为给定 $ v_i $ 的条件下生成节点 $ v_j $ 的条件概率。它可以解释为图中从节点 $ v_i $ 开始、以 $ v_j $ 结束的随机游走的概率。这个概率为:则最大化二阶邻近性的目标函数为:
其中
$ \mathcal P $ 为图中随机游走序列中随机选择的{start_node, end_node}
组成的集合,即从每条随机游走序列上随机截取的两个点。这使得节点之间的二阶邻近度转换为从起点到终点的随机游走概率。
b. 最小化基于距离的重建损失
最小化边的重建
distance-based
损失的基本思想:通过node embedding
计算的节点邻近度,应该尽可能和图中通过边计算的节点邻近度一致,从而最小化邻近度之间的差异,最终保留图的邻近度属性。通过
node embedding
计算的一阶邻近度为:而通过图中边计算的经验一阶邻近度为:
其中
$ W_{i,j} $ 为边 $ e_{i,j} $ 的权重。 $ p^{(1)} $ 和 $ \hat p^{(1)} $ 之间的距离越小,则一阶邻近度保留得越完整。我们以KL
散度为距离函数来计算 $ p^{(1)} $ 和 $ \hat p^{(1)} $ 之间的距离,并忽略掉一些常数项,则保留一阶邻近度的目标函数为:类似地,通过
node embedding
计算的二阶邻近度为:而通过图中边计算的经验二阶邻近度为:
其中
$ d_i = \sum_{e_{i,k}\in E} W_{i,k} $ 为节点的out-degree
(或者在无向图中就是节点的degree
)。同样地,由于计算 $ p^{(2)}(v_j\mid v_i) $ 的代价较大,这里我们也采用负采样技术来提高效率。 $ p^{(2)} $ 和 $ \hat p^{(2)} $ 之间的距离越小,则二阶邻近度保留得越完整。我们以KL
散度为距离函数来计算 $ p^{(2)} $ 和 $ \hat p^{(2)} $ 之间的距离,并忽略掉一些常数项,则保留二阶邻近度的目标函数为:
c. 最小化 Margin-based 排序损失
最小化边的重建
margin-based
排序损失的基本思想:边暗示了一对节点之间的相关性relevance
。因此,对于一个节点A
,假设它和节点B
存在边、和节点C
不存在边,则在节点B
和C
之间,节点A
的embedding
和节点B
的embedding
更相似。定义
$ s(v_i,v_j) $ 为节点 $ v_i $ 和 $ v_j $ 之间的相似性, $ V_i^+ $ 表示和节点 $ v_i $ 相关的节点集合, $ V_i^- $ 表示和节点 $ v_i $ 之间无关的节点集合。则margin-based ranking loss
为:其中
$ \gamma $ 为margin
超参数。最小化该损失函数鼓励
$ s(v_i,v_i^+) $ 和 $ s(v_i,v_i^-) $ 之间较大的margin
,因此鼓励 $ v_i $ 嵌入到相关节点附近、并远离非相关节点。下表中我们总结了现有的利用
graph embedding
的边重建技术,给出了它们的目标函数和保留的节点邻近度。通常大多数方法使用上述目标函数之一。注意:当在graph embedding
期间同时优化另一个任务时,该task-specific
目标函数将融合到总的目标函数中。大多数现有的知识图谱
embedding
方法都选择优化margin-based ranking
损失函数。知识图谱 $ \mathcal G $ 由大量的三元组 $$ 组成,表明 head entity
$ h $ 通过关系 $ r $ 连接到tail entity
$ t $ 。对 $ \mathcal G $ 的embedding
可以解释为保留图的排名ranking
属性,使得真实的三元组 $$ 的排名高于虚拟的三元组 $$ (后者在 $ \mathcal G $ 中不存在)。具体而言,在知识图谱
embedding
中,我们设计了能量函数 $ f_r(h,t) $ ,它类似于 $ \mathcal O_{\text{rank}} $ 中的 $ s(v_i,v_i^+) $ 。但是这两个函数略有不同: $ s(v_i,v_i^+) $ 表示节点 $ v_i $ 和 $ v_i^+ $ 的embedding
之间的相似性得分。 $ f_r(h,t) $ 表示 $ h $ 和 $ t $ 在关系 $ r $ 上的embedding
的距离得分。
$ f_r(h,t) $ 的一个选择是 $ ||h +r-t||_{l_1} $ ,其中关系视为embedding
空间的转换。可选的 $ f_r(h,t) $ 在下表中所示。最终,知识图谱的
graph embedding
目标函数为:其中
$ \mathcal S $ 为知识图谱中的三元组。现有知识图谱
embedding
方法主要优化上述 $ \mathcal O_{\text{rank}}^{\text{kg}} $ ,它们之间的主要区别在于如何定义 $ f_r(h,t) $ 。
1.3.4 Graph Kernel
Graph Kernel
的原理是:整个图结构可以表示为一个向量,其中向量每个分量表示被分解的基本子结构的计数。Graph Kernel
是R
卷积的一个实例,它是一种在离散的复合对象discrete compound object
上定义kernel
的一种通用方法。这种方法通过将结构化对象递归地分解为 “原子” 的子结构,并两两进行比较。Graph Kernel
将每个图表示为一个向量,并使用两个向量的内积来比较两个图的相似性。在Graph Kernel
中通常定义三种类型的 “原子” 子结构:Graphlet
、Subtree Pattern
、Random Walk
。Graphlet
:一个Graphlet
是一个size-k
的、诱导的induced
、非同构的non-isomorphic
子图。假设将图
$ \mathcal G $ 分解为一组graphlet
$ \{G_1,G_2,\cdots,G_d\} $ ,则 $ \mathcal G $ 可以嵌入为一个 $ d $ 维的归一化向量 $ \mathbf{\vec y}_{\mathcal G} $ ,其中第 $ i $ 项表示graphlet
$ G_i $ 出现在 $ \mathcal G $ 中的归一化频次。Subtree Pattern
:在这种kernel
中,图被分解为subtree pattern
。一个例子是
Weisfeiler-Lehman
子树。对于带标记的图(即具有离散型的节点标签)执行relabeling
迭代过程。每次迭代过程中如下图所示:- 根据节点的标签及其邻居标签为节点得到
multiset label
,multiset label
中对邻居标签进行升序排列。 - 将
multiset label
映射称为新的label
。这里使用字符串到ID
的映射,也可以采用其它映射函数如哈希函数。 - 使用新
label
执行relabel
过程。
假设在图
$ \mathcal G $ 上执行 $ h $ 轮relabelling
过程,则embedding
$ \mathbf{\vec y}_\mathcal G $ 包含 $ h $ 个block
,第 $ j $ 个block
的第 $ i $ 个元素表示第 $ i $ 个标签在第 $ j $ 轮迭代分配节点的频次。- 根据节点的标签及其邻居标签为节点得到
Random Walk
:在这种kernel
中,图被分解为随机游走序列或路径(注意,这里的路径是固定的不是随机的),而kernel
表示随机游走序列或路径出现的频次。以路径为例,假设图
$ \mathcal G $ 分解为 $ d $ 条最短路径,其中第 $ i $ 条路径表示为三元组 $$ , $ l_i^s $ 和 $ l_i^e $ 表示路径的开始节点的标签和结束节点的标签, $ n_i $ 为路径的长度。则 $ \mathcal G $ 表示为一个 $ d $ 维向量 $ \mathbf{\vec y}_\mathcal G $ ,其中第 $ i $ 个元素表示第 $ i $ 个三元组在 $ \mathcal G $ 中出现的频次。总结:
Graph Kernel
用于捕获整个图的全局属性,因此仅用于whole-graph emebdding
。输入图的类型通常是同质图,或者带有辅助信息的图。
1.3.5 生成式模型
可以指定输入特征和类别标签的联合分布来定义生成式模型
generative model
。一个典型的例子是潜在迪利克雷分配Latent Dirichlet Allocation: LDA
,其中文档被解释为主题的分布,主题是单词的分布。有两种生成式模型用于
graph embedding
:Embed Graph Into The Latent Semantic Space
:原理是节点被嵌入到潜在语义空间中,其中节点之间的距离解释了观察到的图结构。该方法直接将图嵌入到潜在空间,每个节点都表示为潜在空间中的一个向量。换句话讲,它将观察到的图视为从生成模型生成而来。例如在
LDA
中,文档被嵌入到topic
空间中,单词相似的文档具有相似的topic
向量。Incorporate Latent Semantics for Graph Embedding
:原理是图中距离较近、且具有相似语义的节点应该紧密嵌在一起。其中节点语义可以通过生成式模型从节点描述信息中获取。该方法使用潜在语义作为节点辅助信息从而进行
graph embedding
。最终embedding
不仅取决于图结构信息,还取决于节点的潜在语义信息。
这两种方法的不同之处在于:第一种方法中
emebdding
空间就是潜在空间latent space
;第二种方法中,潜在空间用于融合节点的不同来源的信息,并帮助将一个图嵌入到另一个空间。总结:生成式模型可以用于
node embedding
、edge embedding
。由于该方法考虑了节点语义,因此输入图通常是异质图,或者带有辅助信息的图。
1.3.6 混合技术和其它
有时在一项工作中结合了多种技术:
《Cross view link predictionby learning noise-resilient representation consensus》
通过最小化margin-based ranking loss
学习edge-based embedding
,并通过矩阵分解学习attribute-based embedding
。《Semantically smooth knowledge graph embedding》
优化了margin-based ranking loss
,并将基于矩阵分解的损失作为正则化项。《Community-based question answering via asymmetric multifaceted ranking network learning》
使用LSTM
来学习嵌入cQA
中的句子,并使用margin-based ranking loss
来融合好友关系。《Context-dependent knowledge graph embedding 》
采用CBOW/SkipGram
进行知识图谱实体嵌入,然后通过最小化margin-based ranking loss
对embedding
进行微调。《Text-enhanced representation learning for knowledge graph》
使用word2vec
来嵌入文本上下文,使用TransH
来嵌入实体/关系,从而在知识图谱嵌入中利用了丰富的上下文信息。《Collaborative knowledge base embedding for recommender systems》
利用知识库中的异质性信息来提高推荐性能。它使用TransR
进行network embedding
,并使用自编码器进行textual embedding
和visual embedding
。- 最后,人们提出了生成式模型,从而将协同过滤与
items semantic representation
相结合。
除了所介绍的五类技术外,还有其他方法:
《Hierarchical graph embedding in vector space by graph pyramid》
提出了通过图与prototype graph
的距离来嵌入图的方法。《On the embeddability of random walk distances 》
首先使用pairwise
最短路径距离来嵌入一些landmark
节点。然后嵌入其他节点,使其与landmark
节点的距离尽可能地接近真实的最短路径。《Cross view link predictionby learning noise-resilient representation consensus》
联合优化了基于边的损失(最大化观察一个节点的邻居的可能性)和基于属性的损失(学习link-based representation
的线性投影)。KR-EAR
(《Knowledge representation learning with entities, attributes and relations》
) 将知识图谱中的关系区分为attribute-based
和relation-based
。它构建了一个relational triple encoder
(TransE
、TransR
)来嵌入实体和关系之间的关联,以及一个attributional triple encoder
来嵌入实体和属性之间的关联。Struct2vec
通过hierarchical metric
考虑了节点的结构身份structral identify
,从而用于node embedding
。《Fast network embedding enhancement via high order proximity approximation》
通过近似高阶邻近性矩阵提供了一种快速嵌入方法。
1.3.7 总结
我们在下表给出所有五种
graph embedding
的优缺点。基于矩阵分解的
graph embedding
使用global pairwise
相似度的统计信息来学习embedding
。由于某些任务依赖于独立的局部上下文窗口,因此它可以超越基于深度学习的
graph embedding
方法。但是,无论是邻接矩阵的构造还是矩阵的特征值分解,其时间代价、空间代价都很高。这使得矩阵分解的效率较低,并且无法扩展到大规模的图。基于深度学习的
grap emebdding
效果突出。我们认为深度学习适用于graph embedding
,因为它具有从复杂图结构中自动识别出有用representation
的能力。例如:- 带随机游走的深度学习方法可以通过图上的采样路径自动探索邻域结构。
- 不带随机游走的深度学习方法可在同质图中建模可变大小的子图结构,或者在异质图中建模各种类型节点之间丰富的交互。
另一方面,基于深度学习的方法也有局限性:
对于带随机游走的深度学习方法,它仅考虑路径内的局部邻域,因此忽略了全局结构信息。
另外,由于无法在统一的框架中同时优化
embedding
和路径采样,因此很难找到最佳的采样策略。对于不带随机游走的深度学习方法,计算代价通常很高。
最后,传统的深度学习架构假设输入数据是
grid
结构从而充分利用GPU
,但是图数据不具备grid
结构,因此需要不同的解决方案来提高计算效率。基于边重建的
graph embedding
方法可以基于观察到的边或者有序三元组从而优化目标函数。和前两类graph embedding
相比,它的训练效率更高。但是这一系列方法是使用直接观测到的局部信息进行训练的,因此获得的
embedding
缺乏对全局图结构的了解。基于
graph kernel
的graph embedding
将整个图转换为一个向量,从而促进graph-level
的图分析任务,例如图分类。它比其它类型的技术更加高效,因此它只需要枚举图中出现的“原子”的子结构。但是,这种类似于
bag-of-word
的方法有两个局限:- 首先,子结构之间不是相互独立的。例如
size
为k+1
的graphlet
可以通过size
为k
的graphlet
通过添加一些新的节点和一些新的边得到。这意味着通过graphlet
的graph representation
存在冗余信息。 - 其次,随着子结构
size
的增加,graph embedding
维度通常呈指数型增长,从而导致embedding
的稀疏性问题。
- 首先,子结构之间不是相互独立的。例如
基于生成式模型的
graph embedding
可以自然地利用统一模型中不同来源的信息(如,图结构、节点属性)。直接将图嵌入到潜在的语义空间中,得到的emebdding
可以用语义来解释。但是,假设观测数据满足某种分布通常很难证明。并且生成式方法需要大量的训练数据来估计模型。因此对于较小的图或者少量的图,它无法很好地工作。
1.4 应用
节点相关应用:
节点分类:通常先将每个节点嵌入为一个低维向量,然后通过在标记节点的
embedding
向量上应用分类器进行训练。另外,和上面的两阶段节点分类相比,一些工作设计了一个统一的框架来共同优化
node embedding
和节点分类,从而学到每个节点的classification-specific representation
。节点聚类:通常先将每个节点嵌入为一个低维向量,然后将传统的聚类算法应用于
node embedding
。作为无监督算法,当节点标签不可用时可以使用聚类算法。现有大多数方法都使用
k-means
作为聚类算法。也有一些方法在一个目标中共同优化了聚类和node embedding
,从而学到每个节点的clustering-specific representation
。节点推荐/检索/排序:节点推荐任务是基于某些标准(如相似性),将
top-K
相似节点推荐给目标节点。在
knowledge graph embedding
中被广泛讨论的一个具体应用是entity ranking
:在三元组 $$ 中,给定 $ r $ 和 $ t $ 的情况下返回真实的 $ h $ 、或者给定 $ r $ 和 $ h $ 的情况下返回真实的 $ t $ 。
边相关的应用:
链接预测:
graph embedding
旨在用低维的向量来表示图,但有趣的是,得到的embedding
向量也可以反过来帮助推断图结构。实际上输入的图通常是残缺的。例如,在社交网络中实际上彼此认识的两个用户可能因为种种原因并没有添加为好友。在
graph embedding
中,低维embedding
向量预期会保留不同阶次、不同尺度的邻近度,因此这些embedding
向量编码了有关网络结构的丰富信息,并可以用于预测图中的缺失链接。基于
graph embedding
的链接预测大多数应用于同质图,也有少量工作涉及异质图的链接预测。三元组分类
Triple Classification
:三元组分类是知识图谱的特定应用,其目标是对未见过的三元组 $$ 进而判别: $ h $ 和 $ t $ 之间的关系是否是 $ r $ ?
图相关应用:
- 图分类:图分类是将类别标签分配给整个图。这不同于节点分类,节点分类是将类别标签分配给每个节点。当图作为基本的单元时,这一点很重要。如,在化合物分类任务中,每个图都是一个化合物。
- 可视化:图可视化是在低维空间中生成图的可视化。通常,出于可视化的目的,所有节点都使用二维向量
embedding
,然后在二维空间中使用不同的颜色绘制从而表示节点类别。图可视化生动地展示了属于同一个类别节点的embedding
是否彼此靠近。
其它应用:上面讨论的是一些通用的应用,这里是一些具体的应用:
- 知识图谱相关:包括从大规模纯文本中提取
relational fact
、从文本中提取医学实体、将自然语言文本与知识图谱中的实体联系起来,等等。 - 多媒体网络相关:包括嵌入了
geo-tagged
的社交媒体的记录<time, location, message>
从而在给定其中两个元素的情况下恢复缺失的第三个元素;使用graph embedding
来数据维度从而用于人脸识别;将图像映射到一个语义流形中从而促进content-based
的图像检索。 - 信息传播相关:包括通过嵌入
social interaction graph
来预测propagation user
并识别领域专家。 - 社交网络对齐:包括预测两个不同社交网络中的两个用户账户是否为同一用户所有。
- 图像相关:一些工作嵌入了由图像构建的
graph
,然后将emebdding
用于图像分类、图像聚类、图像分割、模式识别,等等。
- 知识图谱相关:包括从大规模纯文本中提取
1.5 未来方向
这里我们总结了
graph embedding
四个未来方向,包括计算效率、问题设置、技术、应用场景。计算效率
computation efficiency
:传统的深度学习模型(专为欧式结构的数据来设计)利用现代GPU
来优化计算效率,通常假设输入数据为一维或二维网格形状。但是图不具备这种网格结构,因此需要针对graph embedding
设计深度架构来提高模型效率。问题设置
problem setting
:动态图是graph embedding
的一种有前景的方向。图并不总是静态的,可以是动态演进的。一方面,图的结构可能随时间发生变化,如出现一些新节点、新的边,而有一些旧节点、旧的边消失;另一方面,图中节点的属性可能随时间发生变化。与静态图的嵌入不同,动态图的技术需要可扩展的(最好是增量的),以便有效地处理动态变化。这使得大多数现有的
graph embedding
方法都存在效率低的问题,不再适用。如何针对动态图设计有效的graph embedding
方法,仍然是悬而未决的问题。技术
techniques
:结构感知structure-aware
对基于边重建的graph embedding
非常重要。目前基于边重建的graph embedding
方法仅依赖于一阶邻域,图的全局结构(如路径、树、子图模式)被忽略。从直觉上讲,一个子结构包含的信息要比单条边更丰富。因此,需要有一种有效的结构感知
graph embedding
优化框架以及子结构采样策略。应用:
graph embedding
已应用于许多不同的应用中。它可以将不同数据源、不同平台、不同视角的数据映射到公共的空间,从而便于直接比较。如content-based
图像检索、keyword-based
图像/视频检索等。使用
graph embedding
进行表示学习的优势在于:训练数据的graph
的流形被保留在embedding
中,并可以进一步使得后续的应用受益。因此,graph embedding
可以使那些假定输入数据实例与某些关系(即通过某些link
来连接)相关的任务受益。探索从graph embedding
中受益的应用场景是非常重要的,因为它从不同的角度为传统问题提供了有效的解决方案。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论