特征图注意力_从数据结构到算法:图网络方法初探

3059012b25fcc8f1dbae380cecb7421f.png
作者 | 朱梓豪
来源 | 机器之心
原文 | 从数据结构到算法:图网络方法初探

如果说 2019 年机器学习领域什么方向最火,那么必然有图神经网络的一席之地。其实早在很多年前,图神经网络就以图嵌入、图表示学习、网络嵌入等别名呈现出来,其实所有的这些方法本质上都是作用在图上的机器学习。本文将根据近两年的综述对图网络方法做一个总结,为初入图世界的读者提供一个总体的概览。

什么是图

图是一种常见的数据结构,用于表示对象及其之间的关系。其中,对象又称节点(node)或顶点(vertex),关系用边(edge)来描述。在数学上一般用 G=(V,E,A,X) 来表示,其中 V={v1,v2……,vn} 是节点集合,E=e_ij 表示边的集合,A 是大小为|V|×|V|的邻接矩阵,用于表示节点之间的连接关系,如果 e_ij∈E,则 A_ij=1,X 是大小为|V|×d 的特征矩阵,X 的第 i 行 X_i:表示第 i 个节点的属性特征,其中 d 是属性的维度。

为何需要在图上应用机器学习方法

图是一种描述和建模复杂系统的通用语言,在真实世界中无处不在。例如,Facebook、 Twitter 等社交媒体构成了人类之间的社交网络 (Social Network);人体中的蛋白质分子构成了生物网络 (Biological Network);各种移动终端构成了通信网络 (Communication Network);智能硬件之间构成了物联网 (Internet-of-Things) 、城市间的公路、铁路、航线构成了运输网络 (Transportation Network) 等等。因此也催化出一系列在图上进行数据挖掘的任务,如为用户推荐感兴趣的好友、判断蛋白质结构、预测交通流量、检测异常账户等等。但是真实图的数据量庞大,动辄上亿节点、而且内部拓扑结构复杂,很难将传统的图分析方法如最短路径、DFS、BFS、PageRank 等算法应用到这些任务上。鉴于机器学习在图像、文本领域的广泛应用,一部分研究者尝试将机器学习方法和图数据结合起来,逐渐成为机器学习领域的一股热潮。

网络表示学习、图嵌入的定义

俗话说「巧妇难为无米之炊」,再强大的机器学习算法也需要数据进行支持。在同样的数据集和任务上,由于特征的不同,同一个算法的结果也可能会有天壤之别。由于特征的选择对结果的决定性作用,很多数据挖掘方面的研究工作把重心放到了针对特定的数据由人工设计出有价值的特征上。

e332d51d527c631cfabce194904ce6ae.png

深度学习本质上是一种特征学习方法,其思想在于将原始数据通过非线性模型转变为更高层次的特征表示,从而获得更抽象的表达。与人工设计特征不同,深度学习会自动从数据中学习出特征表示,所以又称为表示学习(Representation Learning)。如图像分类,输出的一张高维的图片,经过一系列的卷积池化等操作,低层可以抽取出低级的特征(轮廓、颜色)、较深的层会根据低级特征学习到更高级的特征,然后变换成一个向量通过全连接层进行分类,这个向量就是输入图像的特征表示。

一个很自然的想法就是,既然直接在图上直接应用机器学习方法比较困难,那么能否先将节点或边用低维向量表示出来,然后在这些向量上应用已经很成熟的机器学习算法。这种将图中节点嵌入到低维欧式空间中的方法就叫做图嵌入(Graph Embedding)。

其实、图嵌入、网络嵌入、图表示学习、网络表示学习这些名词指的的都是同一个概念。给定图$G=(mathbf{V,E,A,X})$,图嵌入需要学习从节点到向量的映射:$f:v_ito mathbf{y}_i in R^d$,其中$d<<|V|$,$f$需要尽可能的保留住节点的结构信息和属性信息。

图嵌入方法的分类

图数据最大的特点在于节点之间存在着链接关系,这表明图中节点之间并非完全独立。除了节点间的链接关系,节点自身也可能含有信息,比如互联网中网页节点对应的文本信息,这些特性使得图嵌入需要考虑很多的因素。从训练所需的信息来看,一般有三种主要的信息源:图结构、节点属性和节点标签,可基于此分成无监督图嵌入和半监督图嵌入;还有一种是根据输入数据的不同进行划分,比如按照边的方向性、是否是异构网络等性质。然而这两种划分依据并不合适,因为当前图嵌入算法的主要区别在于算法类型,同一算法类型下的框架都是相似的,因此本文基于 Hamilton 等 [1] 和 Goyal 等 [2] 两篇关于图嵌入的综述,将图嵌入方法概括为基于矩阵分解的图嵌入、基于随机游走的图嵌入、基于神经网络的图嵌入(即图神经网络)。

基于矩阵分解的图嵌入

基于矩阵分解的方法是将节点间的关系用矩阵的形式加以表示,然后分解该矩阵以得到嵌入向量。通常用于表示节点关系的矩阵包括邻接矩阵、拉普拉斯矩阵、节点转移概率矩阵、节点属性矩阵等。根据矩阵的性质不同适用于不同的分解策略。主要包括 Local Linear Embedding(LLE)[3]、Laplacian Eigenmaps[4]、SPE[5]、GraRep[6] 等。

LLE 算法其实是流形学习的一种,LLE 算法认为每一个数据点都可以由其邻域节点的线性加权组合构造得到。降维到低维空间后,这种线性关系仍然得到保留。Laplacian Eigenmaps 和 LLE 有些相似,直观思想是希望相互间有关系的点(在图中相连的点)在降维后的空间中尽可能的靠近。为了使得输入图的嵌入是低维表示并且保留图全局拓扑结构,Shaw 等 [5] 提出在欧式空间中嵌入图的结构保留嵌入方法(SPE,Structure Preserving Embedding),学习由一组线性不等式约束的低秩核矩阵,用于捕获输入图结构。SPE 在图的可视化和无损压缩方面获得明显改善,优于 Laplacian Eigenmaps 等方法。Cao 等 [6] 认为考虑节点之间的 k 阶关系对把握网络的全局特征非常重要,考虑越高阶的关系,得到的网络表示效果会越好。GraRep 通过 SVD 分解分别学习节点的 k 阶表示,然后将其结合起来作为最终的表示,这样可以很好地捕捉到远距离节点之间的关系。

fc290adafcb8244c77e0ef7007d2d3f3.png

基于随机游走的方法

随机游走方法已经被用来近似图的许多属性,包括节点中心性和相似性等。当图的规模特别大或者只能观察到部分图的时候,随机游走就变得非常有用。有研究者提出了利用图上随机游走来获取节点表示的嵌入技术,其中最著名的就是 DeepWalk[7] 和 node2vec[8]。

DeepWalk 是基于 word2vec 词向量提出来的。word2vec 在训练词向量时,将语料作为输入数据,而图嵌入输入的是整张图,两者看似没有任何关联。但是 DeepWalk 的作者发现,预料中词语出现的次数与在图上随机游走节点被访问到底的次数都服从幂律分布。因此 DeepWalk 把节点当做单词,把随机游走得到的节点序列当做句子,然后将其直接作为 word2vec 的输入来得到节点的嵌入表示。其框架如图 1 所示,首先采用随机游走的方法产生标准的输入序列,用 SkipGram 模型对序列建模得到节点的向量表示,然后使用分层 softmax 解决节点高维度输出问题。DeepWalk 模型的提出为图嵌入提出了一种新的研究思路,也算是引发了对图嵌入研究的热潮。

8d920ea3b53ff6c8e4ca647ef287162e.png

node2vec 通过改变生成随机游走序列的方式改进了 DeepWalk 算法。DeepWalk 是按照均匀分布随机选取随机游走序列的下一个节点。node2vec 同时考虑了广度优先搜索 (BFS) 和深度优先搜索 (DFS)。Grover 等发现,广度优先搜索注重刻画网络中的局部特征,而深度优先搜索能更好地遍历整个网络,反映了节点间的同质性。特别地,node2vec 引入 search bias 函数来平衡这两种采样方式,通过参数 p 和 q 来调整下一步的跳转概率。

其他基于随机游走的方法还包括 Walklets、LsNet2vec、TriDNR、HARP、DDRW 等等。

基于神经网络的图嵌入(图神经网络)

还有一类方法是将神经网络和图结合起来的图表示学习方法,也是最近一年来最火的方向之一,我们统称为图神经网络。机器之心已经为其做过了全面的介绍,具体请参见:深度学习时代的图模型,清华发文综述图网络 、清华大学图神经网络综述:模型与应用、图神经网络概述第三弹:来自 IEEE Fellow 的 GNN 综述。主要将其分为图卷积网络、图注意力网络、图生产网络、图时空网络、图自编码器。又可以分为基于谱的方法和基于空间的方法。由于基于谱的方法需要分解矩阵特征向量,因此绝大多数新提出的方法都是基于空间,也就是如何传播并聚合节点和边的信息。图像和文本本质上是有规则的格栅结构的图,因此,很自然想到可以将已经在 CV、NLP 领域成功应用的模型拓展到图上,如词向量和图卷积。最近,也出现了基于胶囊的图神经网络和基于图像语义分割 U-Net 模型的 Graph U-Net。

注意力机制的在图嵌入的应用

有一部分研究者将注意力 (attention) 机制引入到了图神经网络中。注意力机制的本质是从人类视觉注意力机制中获得灵感。大致是我们视觉在感知东西的时候,一般不会是一个场景从到头看到尾全部都看,而是根据需求观察特定的一部分。这意味着,当人们注意到某个目标或某个场景时,该目标内部以及该场景内每一处空间位置上的注意力分布是不一样的。而且当我们发现一个场景经常在某部分出现自己想观察的东西时,我们就会进行学习在将来再出现类似场景时把注意力放到该部分上。更通用的解释就是,注意力机制是根据当前的某个状态,从已有的大量信息中选择性的关注部分信息的方法,其实就是一系列 注意力分配系数。

基于注意力机制的 GNN 的思想是在计算每个节点的表示的时候,首先计算其和邻居节点之间的注意力系数,为重要的邻居节点分配较大的权重,在聚合的过程中将不同的重要性分配给邻域内不同的节点。

表 1 按照输入、输出、任务对近两年发表的基于注意力机制的图神经网络模型进行汇总比较,下面对几个具有代表性的模型进行概述,具体内容请参照论文《Attention Models in Graphs: A Survey》[9]。

95d01c064c13a6fb2091884673b29aa2.png

Yoshua Bengio 的 MILA 团队在 2018 年提出了图注意力网络 (Graph Attention Networks, GAT)[10],论文中定义了 Graph attention 层,通过叠加不同的 attention 层,可以组成任意结构的图神经网络,其架构如图所示,最终要的步骤就

4a7db72d1f9371e26626542d762d2a41.png

不同于 GAT 是节点分类,DAGCN[11] 用于图分类任务。模型中包括两个 attention 单元,一个是和 GAT 一样,用于图卷积得到节点的表示,另一个是基于 attention 的池化操作,得到整个图的表示,然后将图表示输入到一个 MLP 得到整个图的分类。作者认为,经典的 GCN 每一层都只能捕获第 k-hop 邻域的结构信息,只有最后一层的 H 被用下一步的预测,随着网络层数的增多,会丢失大量的信息。作者提出的 attention 层的思想是不仅要依赖于第 k-hop 的结果, 还要从前面每一个 hop 捕获有价值的信息。

综合各种图注意力网络的论文来看,最主要的区别在于如何定义和实现注意力机制。第一类是学习 attention weights:

a6aa73077e4a21caa0431c1ebcdaedff.png

主要是通过 softmax 函数实现的,同时还需要一个基于节点属性可训练的计算节点 j 和节点 0 相关性的函数,例如 GAT 的实现方式为:

664dd8ce11ccd2e4beafe682170ae61d.png

其中 W 是将节点属性映射到隐空间的可训练的参数矩阵,||表示串接。

第二类基于相似度的 attention,同样,给定相应的属性或特征,第二种注意力的学习方法与上面的方法类似,但有一个关键的区别是更多的注意力集中在具有更多相似隐藏表示或特征的节点上,这在文献中也经常被称为对齐。以 AGNN 中的公式为例:

f10bbc45faad463c0bdbe180c1c5f61d.png

其中 cos 来计算余弦相似度,可以看到和上式非常相似。不同之处在于,模型显式地为彼此相关的对象学习类似的隐藏嵌入,因为注意力是基于相似性或对齐的。

前两种注意力主要集中在选择相关信息以整合到目标对象的隐藏表示中,而第三种注意力的目的略有不同,叫做基于注意力的游走。举例来说,在一个输入图上执行一系列游走,并使用 RNN 对访问的节点信息进行编码,从而构造一个子图嵌入。RNN 的 t 时刻的隐藏状态对 1 到 t 访问的节点进行编码。Attention 就是一个函数$f』(h_t)=r_{t+1}$, 输入的是 t 时刻的隐藏状态,输出一个 rank vector,告诉我们下一步我们应该优先考虑哪种类型的节点

框架

这里简单的介绍一下 Hamilton 在论文 [1] 中提出的一种图嵌入 encoder-decoder 框架(如图),可以将大多数的图嵌入方法用这个框架来表示。在这个框架中,我们围绕两个关键的映射函数组织了各种方法:一个 encoder(它将每个节点映射到一个低维向量) 和一个 decoder(它从已知的嵌入中解码关于图的结构信息)。encoder-decoder 背后的直觉想法是这样的:如果我们能从低位嵌入表示中学会解码高维图信息,如节点在图中的全局位置或节点的局部邻域结构,那么原则上,这些嵌入应包含下游机器学习任务所需的所有信息。

e370d93d62105c14d09083b48642a836.png

encoder 是一个函数:

1f830a8d0f7c9c764035250fc5391a40.png

将节点 i 映射到嵌入向量$z_i in R^d$。decoder 是接受一组节点嵌入并从这些嵌入中解码用户指定的图统计数据的函数。例如,decoder 可能根据节点的嵌入预测节点之间是否存在边,或者可能预测图中节点所属的社区。原则上,有许多 decoder 都是可以使用的,但是在大多数工作中使用的是成对 decoder:

ff163ff2d1173ecbf38501f0f56dd1ca.png

当我们将成对 decoder 应用于一对嵌入$(z_i,z_j)$时,我们得到了原始图中$v_i$和$v_j$之间相似性的重构,目标就是最小化重构后的相似性和原图中相似性的误差:

1375e93a53db7ba48550a2d461e5a443.png

其中其中 SG 是一个用户定义的、在图 G 上的的节点间相似性度量。换句话说,目标是优化 encoder-decoder 模型,可以从低维节点嵌入 z_i 和 z_j 中解码出原始图中 SG(v_i, v_j) 成对节点相似性。例如可以设 SG(v_i, v_j)=A_{ij},如果节点相邻则定义节点的相似度为 1,否则为 0。或者可以根据在图 G 上的固定长度随机游走 v_i 和 v_j 共线的概率来定义 SG。在实践中,大多数方法通过最小化节点对集合 D 上的经验损失 L 来实现重构目标:

c08291eb928fa169243fb6c120ab7f53.png

优化了上述目标函数后,我们就可以使用经过训练的 encoder 为节点生成嵌入,然后可以将其用作下游机器学习任务的特征输入。下表展示了常用图嵌入方法的 encoder-decoder 框架描述。

c18c6d639f1666a191e6944ba5ae522c.png

总结

图嵌入是指将图中节点用低维稠密向量来表示,从一开始的基于矩阵分解的方法逐渐出现了基于随机游走的方法,后来又演化出基于神经网络的方法也是我们经常听到的图神经网络。图嵌入目前还面临着一些挑战,例如如何在超大规模图上高效进行分析,如何应对真实世界中不断变化的动态图,如何对图神经网络的黑盒模型进行解释,以及如何建模异质图。目前在图网络领域也涌现出一些新的方向,例如如何针对图网络进行对抗攻击使其模型性能大幅下降,相反的就是如何提高模型的鲁棒性;如何将人工设计网络架构转变为由机器自动设计,这对应着网络结构搜索问题(NAS),以及如何将图网络和计算机视觉、自然语言处理等方向结合起来。这些都是很有价值也有意思的方向,感兴趣的读者可以进行更深度的研究。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FFMPEG 源码分析

FFMPEG基本概念&#xff1a; ffmpeg是一个开源的编解码框架&#xff0c;它提供了一个音视频录制&#xff0c;解码和编码库。FFMPEG是在linux下开发的&#xff0c;但也有windows下的编译版本。 ffmpeg项目由以下几部分组成: ffmpeg 视频文件转换命令行工具,也支持经过实时电视…

面试之 Redis汇总

简介 Redis 持久化机制 RDB&#xff08;Redis DataBase&#xff09; AOF&#xff08;Append-only file&#xff09; Redis 4.0 对于持久化机制的优化 补充&#xff1a;AOF 重写 二者的区别 二者优缺点 Memcache与Redis的区别都有哪些&#xff1f; 缓存雪崩、缓存穿透、…

Oracle 10g 问题集锦

监听服务中Oracle数据库之中使用最主要的一个服务&#xff0c;但是这个服务经常会出现错误&#xff0c;包括以后在工作之中此服务也会出现错误&#xff0c;故给出两种常见错误的解决方案&#xff08;故障1、故障2&#xff09; 故障1: 注册表使用了优化软件&#xff08;如&#…

iOS linker command failed with exit code 1 (use -v to see invocation)多种解决方案汇总

有时可能会遇到这种错误&#xff0c;关键是这种错误&#xff0c;有时只有这一句话&#xff0c;也不会给更多错误信息。 网上找了一些&#xff0c;总结了如下&#xff1a;&#xff08;PS&#xff1a;以下是按照解决简易程度排序&#xff0c;不代表出现概率&#xff09; 1、bitco…

面试之 Mysql 汇总

事务相关 什么是事务&#xff1f; 事务&#xff1a;是由一组SQL语句组成的逻辑处理单元&#xff0c;事务具有以下4个属性&#xff0c;通常简称为事务。事务的ACID属性&#xff1a; &#xff08;1&#xff09;原子性&#xff08;Atomicity&#xff09;&#xff1a;   事务是一…

Exchange Server 2003 部署手册

1. 环境需求服务器: 域控制器1台; Exchange Server服务器1台。 IP和机器名配置&#xff1a; 域控制器&#xff1a;机器名&#xff1a;dc IP&#xff1a; 10.10.10.200 掩码&#xff1a;255.255.255.0 网关&#xff1a;10.10.10.254 DNS&#xff1a;127.0.0.1 Exchange&#xff…

html浏览器的区别是什么意思,不同浏览器对css的识别有区别吗?

不同浏览器对css的识别是有区别&#xff0c;因此针对不同的浏览器去写不同的CSS。下面本篇文章给大家介绍一些常用CSS书写技巧(不同浏览器之间的差异)。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对大家有所帮助。不同的浏览器&#xff0c;比如Int…

面试之 Python 进阶

前端相关 1.谈谈你对http协议的认识。 浏览器本质&#xff0c;socket客户端遵循Http协议   HTTP协议本质&#xff1a;通过\r\n分割的规范 请求响应之后断开链接 > 无状态、 短连接 具体&#xff1a;   Http协议是建立在tcp之上的&#xff0c;是一种规范&#xff0c;它…

Lync Server外部访问系列PART5:模拟公网DNS

因为要实现外部用户访问&#xff0c;所以我们必然需要在公网DNS中添加我们所需要的一些A记录&#xff0c;而这样的测试需要我们拥有一个公网的域名以及一个可发布、可访问的IP。如果没有的话就没办法这样测试&#xff0c;所以我们今天在物理局域网中搭建一台DNS服务器&#xff…

oracle对查询结果求和_Oracle 闪回技术详解

概述闪回技术是Oracle强大数据库备份恢复机制的一部分&#xff0c;在数据库发生逻辑错误的时候&#xff0c;闪回技术能提供快速且最小损失的恢复(多数闪回功能都能在数据库联机状态下完成)。需要注意的是&#xff0c;闪回技术旨在快速恢复逻辑错误&#xff0c;对于物理损坏或是…

html里写js ajax吗,js、ajax、jquery的区别是什么?

js、ajax、jquery的区别1、JS是一门前端语言。2、Ajax是一门技术&#xff0c;它提供了异步更新的机制&#xff0c;使用客户端与服务器间交换数据而非整个页面文档&#xff0c;实现页面的局部更新。3、jQuery是一个框架&#xff0c;它对JS进行了封装&#xff0c;使其更方便使用。…

泰安第一中学2021年高考成绩查询,等级考第一天结束 泰安部分考生已完成2021年高考...

6 月 9 日&#xff0c;山东新高考进入第三天&#xff0c;也是学业水平等级考试的第一天&#xff0c;物理、思想政治、化学三门选考科目的考试已全部完成。由于选考科目不同&#xff0c;考生结束高考的进程也不同&#xff0c;9 日下午&#xff0c;选考物理、思想政治、化学的考生…

机器学习原理与算法(六) 支持向量机

版权声明&#xff1a;本系列文章为博主原创文章&#xff0c;转载请注明出处&#xff01;谢谢&#xff01; 本章索引&#xff1a; 从第3章的Logistic回归算法开始&#xff0c;我们一直在讨论分类问题。在各种不同的分类算法中&#xff0c;...&#xff0c;我们一直在讨论如何分类…

读《程序员的SQL金典》[2]--函数

一、数学函数 1.RAND SELECT RAND () ---0.302870228294199取0-1之间的随机小数。 2.小数取整 CEILINT(data)舍掉小数部分并向上取整。FLOOR(data)舍掉小数部分并向下取整。SELECT TOP 3 FWeight, CEILING(FWeight ),FLOOR( FWeight) FROM T_PersonRound(m,d)&#xff1a;四舍…

python人脸识别代码百度ai_python百度AI人脸识别API测试

1、注册账号 2、创建应用 3、得到AK和SK 4、用AK SK获取access_token 可用下面的代码&#xff1a; #!/usr/bin/python3.5 # encoding:utf-8 import requests # client_id 你的AK client_secret 你的SK host https://aip.baidubce.com/oauth/2.0/token?grant_typeclient_crede…

Flask 第三方组件之 SQLAlchemy

一、介绍 SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上&#xff0c;使用关系对象映射进行数据库操作&#xff0c;简言之便是&#xff1a;将类和对象转换成SQL&#xff0c;然后使用数据API执行SQL并获取执行结果。 安装&#xff1a;pip3 install sqlalc…

html 中怎样显示enum,JavaScript如何枚举?

JavaScript中对象的属性分为两种&#xff1a;数据属性和访问器属性。然后根据具体的上下文环境的不同&#xff0c;又可以将属性分为&#xff1a;原型属性和实例属性。原型属性是定义在对象的原型(prototype)中的属性&#xff0c;而实例属性一方面来自构造的函数中&#xff0c;然…

iperf测试网卡性能

Iperf是一个网络性能测试工具。可以测试TCP和UDP带宽质量&#xff0c;可以测量最大TCP带宽&#xff0c;具有多种参数和UDP特性&#xff0c;可以报告带宽&#xff0c;延迟抖动和数据包丢失 因为产品上确定要要用的&#xff30;&#xff28;&#xff39;是千&#xff2d;的&a…

acrobat 控件可以发布吗_短视频可以同时在多个平台发布吗?

我们在做自媒体内容创业中&#xff0c;很多人都在做视频版块&#xff0c;那么一个短视频到底能不能多平台同时发布呢&#xff1f;那么今天&#xff0c;我来分享给大家&#xff0c;希望能够帮到你解决困惑。1.作品可以多平台分发&#xff1a;大家不确定是否能多平台分发&#xf…

CentOS四种方法自建yum仓库

将ISO光盘镜像作为yum本地仓库&#xff08;适用于不能联外网的环境&#xff09;&#xff1a; 1、 禁用所有可用的yum仓库&#xff0c;为方便演示&#xff0c;直接全部删除&#xff1a; # cd /etc/yum.repos.d # ls # rm -rf * 2、 创建光盘挂载点&#xff0c;挂载光盘&#x…