网络表征学习综述

SIGAI 特邀作者:VicFig

研究方向:机器学习,图像处理

背景

当前机器学习在许多应用场景中已经取得了很好的效果,例如人脸识别与检测、异常检测、语音识别等等,而目前应用最多最广泛的机器学习算法就是卷积神经网络模型。但是大多应用场景都是基于很结构化的数据输入,比如图片、视频、语音等,而对于图结构(网络结构)的数据,相对应的机器学习方法却比较少,而且卷积神经网络也很难直接应用到图结构的数据中。在现实世界中,相比图片等简单的网格结构,图结构是更泛化的数据结构,比如一般的社交网络、互联网等,都是由图这种数据结构表示的,图的节点表示单个用户,图的边表示用户之间的互联关系。针对网络结构,用向量的数据形式表示网络结构、节点属性的机器学习方法就是网络表征学习。

图的邻接矩阵是将边的信息表示成了N*N的矩阵(N为节点个数)通过邻接矩阵可以将图重建,那么是否可以直接用邻接矩阵的列向量作为图节点的表示向量呢?其实是可以的,但是这种表示形式有两个问题:第一,图结构中,任意两个节点不一定是相连的,通常一个节点仅有很少的邻居,因此邻接矩阵是稀疏矩阵,倘若节点数目很多(如社交网络,用户可能达百万级甚至更多),以邻接矩阵直接表示图结构将非常不划算。第二,邻接矩阵仅仅表示了边的信息,而无法加入节点的本身属性,在当前的很多应用中,我们不仅仅需要表示图的结构属性,而且还伴随着节点本身的属性(比如社交网络中,每个用户的性别,年龄,爱好等)综合以上两点问题,网络表征学习的目的就有了两个:第一,我们要学习一种低维度的向量表示网络节点,将节点映射到相应的向量空间,这种网络表征学习就是关于图结构的网络表征学习,也称网络嵌入;第二,我们的表示不仅仅可以表征网络结构,同时也可以表征节点本身自带的属性,这种表征学习,就是伴随节点属性的网络表征学习。通常第二种表征学习方法都是从第一种方法中推广而来。

传统网络分析 VS. 网络表征学习【1】

关于图结构的网络表征学习

关于图结构的网络表征学习重点关注的是网络的拓扑结构与性质,是网络表征学习中最基本的一类方法,其目的在于如何得到节点在低维空间中的向量表示,使得向量之间的关系可以保持图结构中节点之间的结构关系。同时,我们需要确定向量之间距离的一种度量方式,用来表征对应节点之间的相似性。

节点之间的结构关系就是边的连接,比如直接邻居节点,就应该比二阶邻居(邻居的邻居)或高阶邻居(邻居的邻居的…)与原本节点的关系更紧密,因为直接邻居与原节点有边的直接连接。这种紧密关系应该可以用向量的距离来表示。节点之间的性质关系,则对应在边的性质。首先是边的权重,如果两个向量距离较小,那么在原图中对应两个节点之间边的权重越小(也可能越大,权重表示距离则权重越小;权重表示相似度则权重越大)。其次是边的方向,在无向图中边仅代表连接,但对于有向图,边的指向将影响节点之间的连接方式。下面我将介绍几种常见且有效的网络表征方法。

DeepWalk

DeepWalk【2】是KDD 2014的一篇文章,这种方法的核心思想是,采用随机游走的方式,将网络结构节点之间的关系转化成句子,那么不同节点就代表不同的词,然后用自然语言处理中Word2Vec的方法得到节点的低维度向量表示。那么这种方法其实就是分两步:随机游走,和词向量表示学习。我们分别来看看这两步操作到底是什么:

随机游走就是在网络结构中,以某个节点做起点,然后以一定的概率随机移动到其邻居位置,再从邻居位置随机移动,直到走t步(t是预先设定好的参数),于是得到一个由t个“词”(节点)组成的“句子”(序列)。图中每个节点都要作为起点做随机游走,设有N个节点;且每个节点都要做r次随机游走,那么最后就可以得到N*r个“句子”,每个“句子”都是由t个“词”组成。

接下来是词向量表示学习的方法,原工作中使用Skip-gram的方法学习词向量表示,具体思想类似于极大似然概率:比如现在有一个随机游走得到的句子(序列) A B C D E,每个字母代表一个词(节点),这个句子共5个词。这个句子之所以出现,是因为这种词的顺序是常见的形式(比如我们只能从一群学生中抽1个学生,问他考试前是否复习,如果这个同学说复习,那么我们就会更倾向于相信在这个群体中,考试动作之前会发生复习动作的概率更大),所以我们可以认为C词很大概率就是与B词和D词相邻的,我们以C词的词向量作为输入,那么其邻居词中,B词和D词出现的概率就应该更高,也就是P(邻居是B词和D词 | 输入为C词的词向量)的值应该更高,那么我们就应该更新C词的词向量,使得上述的条件概率最大。其更新公式如下所示:

Node2Vec

Node2Vec【3】是KDD 2016的一篇文章,Node2Vec的方法同样也是采用了随机游走和Skip-gram的学习方法,主要的创新点在于随机游走的策略。在 Node2Vec方法中对随机游走向邻节点转移的概率做了调整。

Node2Vec偏置示意图【3】

图中t是上一次走的节点,v是当前节点,α是一个偏置,影响最终的转移概率,转移概率的公式如下:

式中???为边的权重,πvx表示转移概率。由图可知,v点回到t点转移概率的偏置设为1/p,v点向x1点(既与v相连,又与t相连)转移概率的偏置设为1,v点向其他点转移概率的偏执设为1/q

这种方法的好处是结合了BFS(p控制)与DFS(q控制)来做随机游走(DeepWalk方法是基于DFS的)以两个参数p,q来控制,得到的序列可以更全面地表示网络结构中节点的邻居关系。

LINE

LINE方法由2015年发表在WWW会议上的论文【4】提出来。首先我们需要使用卷积神经网络模型对节点提特征,得到节点的低维向量表示,那么究竟怎样的低维向量表示是更好的呢?作者提出了两种相似度的衡量方式:一阶相似度和二阶相似度,其中一阶相似度表示节点与直接邻居之间的相似性,二阶相似度表示节点与高阶邻居之间的相似性。原本网络结构中边的连接和权重表示了节点之间的相似性,在这里不妨设权重越大,表示两个节点越相近。那么我们得到的低维向量表示,也一定需要符合原结构中各个节点的相似性关系。

一阶邻节点与二阶邻节点【4】

首先我们来看看一阶相似度。式中,

是根据网络边的权重计算出的节点之间相似度,???是连接节点i,j边的权重。其本质是选中i,j两个节点的经验概率。

而节点的低维向量的内积,可以用来衡量两个向量的相似度(距离),式中使用了sigmoid函数,将向量的内积映射到[0,1]之间。也可以表示i,j两个节点同时出现的联合概率

接下来作者以KL散度,来衡量两个概率分布的距离作为损失函数,并通过BP算法更新卷积神经网络的参数。优化函数如下所示

对于二阶相似度,首先求得在节点i出现的条件下,节点j出现的条件概率,即从i出发,能到达j的条件概率;然后求得网络结构中两个节点的经验条件概率,始终的分母表示i点的度;最后同样利用KL散度表示两个分布的差异,求得优化函数如下。

最后我们可以将一阶相似度和二阶相似度结合在一起,共同训练卷积神经网络的参数。

SDNE

论文【8】提出了一种半监督模型来做图嵌入,引入了自动编码机的模型架构,以邻接矩阵中第i个列向量表示节点i,设为,输入编码器,得到低维的

SDNE模型结构

编码向量设为yi,那么对于原图结构中相连的节点i,j,对应的编码向量的距离应该很小,因此这里引入一个监督学习的目标函数

式中???表示邻接矩阵中i,j两个节点的连接情况。同时我们还需要训练解码器,使得解码得到的输出设为

,与输入xi相同,于是引入了无监督学习的损失函数

但是由于输入xi为邻接矩阵的列向量,其中会有很多0元素,我们更希望要求输出与输入在非0元素处的值相近,即最好保证原始边的权重不变,因此在上式中加入了一个惩罚因子?? ∈ R?,使损失函数在非0处不同的值有更大的惩罚项。

于是总损失函数包含三个部分:监督学习的损失函数L1、无监督学习的损失函数L1,以及参数正则化项

最终我们编码器的输出??即为对节点i的向量表示。

伴随节点属性的网络表征学习

伴随节点属性的网络表征学习,则是在关于图结构的网络表征学习基础上,加入了节点本身的属性,例如社交用户组成的网络,每个节点表示一个用户,同时每个用户有其自己的属性,比如年龄、性别、星座、爱好等,我们其实最需要的是节点本身的属性,但经常我们得到的标签可能并不完全精准或全面,而网络中边的存在,使用户之间的信息可以得到交流,我们可以通过邻居的节点属性,更新原节点的属性,可以得到相对更精准或全面的节点属性,在推荐系统等方面有着很好的应用前景。

伴随节点属性的网络表征学习方法,通常都是由关于图结构的网络表征学习方法变体而来,这里我将主要介绍图卷积的方法,将神经网络应用在网络结构中。

一般的网格结构,如图片,可以看作网络结构的一种特殊形式:一个像素点表示一个节点,而相邻的像素点表示互联的邻居。这种结构的特殊性在于每个节点的邻居个数是固定的(每个节点有6个邻居,H,W,C维度各2个),所以神经网络的卷积可以很轻松地做到参数共享。而对于一般网络结构的节点,其邻居个数是不固定的,因此普通的神经卷积网络很难直接应用其中。最近几年研究者提出图卷积的操作,并逐渐进行改进,最终取得了很好的效果。

图谱域的图卷积

起初图卷积是在图谱域计算的。两个时域信号的卷积,在频域上是相乘的关系;两个图片的卷积,也可以通过二维傅立叶变换转化成频域的乘法。因此研究者定义了图结构数据的傅立叶变换,将图从节点域转换到图谱域,那么图卷积就可以通过图谱域上的乘法来实现。如果大家想详细了解图卷积的理论知识的话,可以参考论文【5】,或者网址【6】中的回答。

首先类比连续信号的傅立叶变换?(?) = F[?(?)] = ∫ ?(?)?−?????,其中?−???是拉普拉斯算子的特征函数,那么对于图结构,拉普拉斯矩阵数学意义上等同于离散的拉普拉斯算子,我们找到拉普拉斯矩阵的特征向量和特征值? = ???−1 = ????(U列向量是单位特征向量,∧特征值的对角矩阵),那么图的傅立叶变换即为

= ?? ⋅ ?。最终图卷积可以表示为图谱域的乘法,再做逆傅立叶变换得到节点域的结果

我们设? = (?? ⋅ h)为卷积核,将向量点乘转化为与对角矩阵的乘法,卷积层的输出可以表示为

式中?{}表示激活函数。这就是最初的图卷积操作流程,这个初版本的图卷积有两个很大问题:第一,每次前向传播都需要计算? ⋅ ????(?) ⋅ ??;第二,参数个数与节点个数相同,倘若网络复杂,节点个数达百万级,则卷积参数将非常大。因此论文【7】提出了图卷积的改进版

节点域的图卷积

经过简化,则有

通过对参数的近似,将卷积从图谱域的计算简化到节点域,省去了计算? ⋅ ????(?) ⋅ ??的操作,同时将参数个数从节点个数减少到K个,K是预先设定的参数。在节点域上这种简化的卷积操作本质上表示K阶邻居的属性向量,按权重??影响当前节点的属性向量。下图中表示K=1时(仅有一阶邻居影响当前节点属性向量)的更新操作。

红色节点的一阶邻居用来更新该节点

以上的方法,都是从图谱理论出发,通过推导得到的计算过程,改进版的GCN方法实现了节点域的卷积操作,上述方法中的K类似于传统CNN中的kernel_size,决定了卷积核的感受野(每个节点的感受野中节点数目很可能是不相同的,因为每个节点的邻居个数不是固定的)。

除此之外,还有一种更加直观,直接从节点域出发的计算卷积方法:我们固定每个节点的感受野中只有M个节点,然后对每个节点计算其他节点与它的距离(一阶邻居可以直接使用边的权重;高阶邻居则需要额外的距离函数),并按照距离进行排序,选取前M个最近的节点作为感受野中的节点。这种方法中参数个数为M个,同样也是在节点域执行了卷积操作,但这种方法的最大难点在于如何选取鲁棒性强的距离函数。

小结

当前网络表征学习仍是正在研究中的热门课题之一,网络作为更加泛化的数据形式,其结构的复杂度也远高于普通的网格结构(图片)。为了挖掘网络结构本身的性质,出现了关于图结构的网络表征学习,研究着重于节点之间的拓扑结构关系。但是网络中蕴藏的信息不仅仅是拓扑关系,更重要的是每个节点自己的属性,因此从关于图结构的网络表征学习中,衍生出伴随节点属性的网络表征学习,起目的是利用网络中节点的拓扑关系,确定或完善每个节点本身的属性信息。

参考文献

【1】 王啸 崔鹏 朱文武. 网络表征学习中的基本问题初探[J] 中国计算机学会通讯. 2018.

【2】 Perozzi, Bryan, Rami Al-Rfou, and Steven Skiena. "Deepwalk: Online learning of social representations." Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2014.

【3】 Grover, Aditya, and Jure Leskovec. "node2vec: Scalable feature learning for networks." Proceedings of the 22nd ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2016.

【4】 Tang, Jian, et al. "Line: Large-scale information network embedding." Proceedings of the 24th International Conference on World Wide Web. International World Wide Web Conferences Steering Committee, 2015.

【5】 Bruna, Joan, et al. "Spectral networks and locally connected networks on graphs." arXiv preprint arXiv:1312.6203 (2013).

【6】 https://www.zhihu.com/question/54504471

【7】 Defferrard, Michaël, Xavier Bresson, and Pierre Vandergheynst. "Convolutional neural networks on graphs with fast localized spectral filtering." Advances in Neural Information Processing Systems. 2016.

【8】 Wang, Daixin, Peng Cui, and Wenwu Zhu. "Structural deep network embedding." Proceedings of the 22nd ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2016.

原文发布于微信公众号 - SigAI(SIGAICN)

原文发表时间:2018-09-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏红色石头的机器学习之路

Coursera吴恩达《卷积神经网络》课程笔记(2)-- 深度卷积模型:案例研究

《Convolutional Neural Networks》是Andrw Ng深度学习专项课程中的第四门课。这门课主要介绍卷积神经网络(CNN)的基本概念、模...

8470
来自专栏人工智能

从零学习:详解基于树形结构的ML建模——决策树篇

来源:Analytics Vidhya 编译:Bot 编者按:通常,我们会把基于树形结构的学习算法认为是最好的、最常用的监督学习方法之一。树能使我们的预测模型集...

3549
来自专栏MyBlog

利用双向注意流进行机器理解

本文基于Bi-Directional Attention Flow For Machine Comprehension一文

1123
来自专栏SIGAI学习与实践平台

卷积神经网络的压缩和加速

我们先来看看当前深度学习平台中,卷积层的实现方式,其实当前所有的深度学习平台中,都是以矩阵乘法的方式实现卷积的(如图1左侧):

9108
来自专栏mantou大数据

[机器学习Lesson4]多元线性回归

在回归分析中,如果有两个或两个以上的自变量,就称为多元回归。事实上,一种现象常常是与多个因素相联系的,由多个自变量的最优组合共同来预测或估计因变量,比只用一个自...

72618
来自专栏陈龙的专栏

GBDT 算法:原理篇

GBDT 是常用的机器学习算法之一,因其出色的特征自动组合能力和高效的运算大受欢迎。这里简单介绍一下 GBDT 算法的原理,后续再写一个实战篇。

13.1K6
来自专栏人工智能LeadAI

线性回归回顾与logistic回归 | 机器学习笔记

01 再看线性回归 之前我们选择线性回归的时候,只是认为那些数据看上去很符合线性的样子,选择最小平方损失函数的时候,也是直接提出来的,没有考虑过为什么会是这个样...

38113
来自专栏数据科学与人工智能

【算法】word2vec与doc2vec模型

小编邀请您,先思考: 1 word2vec算法原理是什么? 2 word2vec与doc2vec有什么差异? 3 如何做word2vec和doc2vec? 深度...

7087
来自专栏专知

吴恩达高徒语音专家Awni Hannun:序列模型Attention Model中的问题与挑战

【导读】注意力模型(Attention Model)被广泛使用在自然语言处理、图像识别及语音识别等各种不同类型的深度学习任务中,是深度学习技术中最值得关注与深入...

4386
来自专栏机器之心

教程 | 将注意力机制引入RNN,解决5大应用领域的序列预测问题

3764

扫码关注云+社区

领取腾讯云代金券