近年来,深度学习在视觉以及自然语言处理等领域取得了革命性的进步,但是诸如图像与自然语言之类的数据往往是高度结构与顺序化的。然而实际中大多数数据并无此特性,例如人际关系、社交网络、蛋白质分子结构等等,这些数据往往都具有一对多、多对一、非结构化等特性,无法使用矩阵完美表示,然而这些数据可以用图的形式进行精确表达。将深度学习的技术与思想应用于图数据结构之上催生了图神经网络。图神经网络可以捕获节点之间依赖关系,根据节点自身以及其周围邻域节点的信息建立状态的内部表示,以此获得比神经网络更为强大的表示能力。

通常,监督学习需要海量的带有标注的数据注释,在实际生活与工业界中,企业往往拥有大量数据,但这些数据往往只有极少数经过标注。这催生了自监督和无监督学习的兴起。对于图像和文本领域中的自监督学习在近几年获得了长足进步,但是由于图数据的特殊性与复杂性。如何将自监督与无监督学习应用于图神经网络中仍是当前学界与工业界面临的巨大挑战。

最近的一些研究发现很多自监督与无监督学习的技术思想也可适用于图类型的数据,我们在设计用于检测漏洞的图神经网络过程中也受到了很多来自CV、NLP领域自监督学习的启发来设计模型,我们今天将介绍一些其他研究者已经发表出来的相关的工作。

- 01-

GRAPH-BERT

GRAPH-BERT是一种仅使用注意力机制的图神经网络。传统的图表示学习算法侧重于图的结构,即节点之间的连接。通过对目标节点与其邻域的连接来进行信息的聚合,此种方法可以有效的表示图的结构信息,但是此类图表示学习网络绝大多数都只能工作在浅层网络上,随着网络深度的加深,模型的性能会逐渐下降,并不再对训练数据产生响应。并且随着模型深度的加深,模型对节点的表示会变得过度平滑,难以对节点表示进行区分。

GRAPH-BERT不依赖于图中连接即可进行图表示,GRAPH-BERT总体分为五个模块:

1. 对无连接子图的批处理

2. 图的节点嵌入

3. 基于graph transformer的编码器

4. 图表示融合

5. 功能组件

GRAH-BERT算法流程图,在第五部分中,根据不同的目标,功能组件部分会生成不同的输出,这些输出及包括了目标节点,又包括了其周围的上下文节点

GRAPH-BERT不会一次处理整个图数据,而是会对输入图中进行无连接子图的随机批采样。这种方式可有效的使GRAPH-BERT得以在大型图上进行并行运算。之后便是对子图中的节点进行4种不同方式的嵌入:

1. 对节点的原始特征向量进行嵌入:

2. 为获取节点的全局信息,首先使用Weisfeiler-Lehman算法对图进行处理,该算法可以根据图中结构信息对节点进行聚合,具有相同结构的节点的标记亦相同。之后对节点的标记进行位置嵌入:

3. 基于Weisfeiler-Lehman的位置嵌入包含了节点的全局位置信息,但不同子结构中的相同节点在第2步中表示相同。由此引入对节点本身进行相对位置嵌入,以提取子图中的局部信息:

4. 为了平衡节点的全局信息嵌入与局部信息嵌入,加入基于跳跃的相对距离嵌入

Graph transformer负责将所有的4个嵌入向量进行聚合,之后送入多层transformer编码器以得到新的表示:

可以使用两种任务对GRAPH-BERT进行无监督的预先训练:节点属性重构与图结构恢复。经过预训练的GRAPH-BERT可以将学习到的图表示直接输入到新的任务中,亦可以进行微调以适应下游任务。

- 02 -

Strategies for Pre-Training Graph Neural Networks

在许多机器学习参与的应用场景中,真实测试数据分布往往与训练数据的分布有所不同,并且有的任务往往只有少数带标注的训练数据。对于这类任务,首先在具有丰富且完善数据集的相关任务上对模型进行预训练,之后根据不同的下游任务进一步对模型进行微调的策略被证明是有效的。图神经网络的自监督学习大多数在节点级别或者整个图级别对模型进行预训练。但是由于图数据结构的特殊性,研究发现这两种级别的图自监督学习的发展空间有限,甚至有时反而会对下游任务起到负面作用。

对此研究者提出了一种新的预训练策略,该策略会同时在节点级别以及图级别对模型进行预训练,以便模型可以融合不同尺度的信息来进行决策。这种新的自监督学习策略可大大提高模型的泛化能力。

策略的第一步是先对模型进行节点级别的自监督训练,研究者们给出了两种节点级别的自监督训练方法:上下文预测和属性屏蔽。其中在上下文预测中:使用两个GNN模型,首先使用主GNN会对目标节点及其周围邻居进行聚合,将其编码成特征向量,其次会使用辅助GNN对目标节点的上下文进行聚合,并输出维度相同的特征向量。最后模型的输出为主GNN与辅助GNN编码的目标节点是否为同一节点的概率。在训练过程,可使用负采样算法,将负采样率设置为1,形成positive上下文与negative上下文的数据对。之后使用负对数似然作为损失函数进行训练。

上下文预测任务:主GNN负责表示中心节点及其k阶邻居内的节点,上下文定义为中心节点的r2阶与r1阶之间环形内的节点及其连接,r1,r2为超参数

节点级别训练的第二种方法是属性屏蔽,旨在使模型通过学习分布在图结构上的节点/边缘属性的规律性来捕获相关特征。首先mask掉图中节点或边缘属性,然后让GNN根据其相邻结构来对这些属性进行预测。

策略的第二步是在图级别对模型进行预训练,使模型得以学习特定领域的知识。此任务可通过对整个图中特定区域的属性进行预测或对图结构进行预测来实现。其中,前者可使用监督学习来实现,通过进行多任务监督式预训练可以使图级别的预训练模型面对下游任务时更加具有鲁棒性。

在分别对节点级别进行自监督训练和对图级别进行多人无监督训练之后,便可将得到的预训练模型用于相关的下游任务,例如,在图的分类任务中,通过在预训练模型之后添加线性分类器来预测图的标签,随后以端到端的方式对模型进行微调训练即可。

- 03 -

Contrastive Multi-View Representation Learning on Graphs

在计算机视觉中已被证明多视图表示学习可有效提高模型性能。受此启发,研究者将此引入图神经网络中,通过对同一图进行不同的结构视图变换,之后最大化变换后不同视图之间的互信息以进行训练。

对计算机视觉表示学习中的研究表明,通过对比视图可以使编码器学习更为丰富的表示。但相较于图片的数据增强手段(例如裁切,旋转,扭曲颜色等),首先需要在图类型数据上给出视图的定义。

同一个图的视图变换可从两个方面定义:

1. 在初始节点的特征空间上操作,例如掩膜或添加高斯噪声。

2. 对图的结构空间进行操作,例如添加或删除节点之间的连接,进行子图采样以及使用最短距离或扩散矩阵等方法来生成全局性视图。其中扩散矩阵可借助邻接矩阵进行生成。例如Personalized PageRank和Heat kernel便可看作两个扩散矩阵的实例,其分别定义为:

其中A为图的邻接矩阵,D为度矩阵,t为扩散时间,α为随机游走的跳转概率

在得到全局视图后,需要使用编码器来获取同一个图在不同视图下的表示,研究者用两个不同的图神经网络(此处使用GCN,也可使用不同的图神经网络)以及2个全连接网络(共享)和一个图池化层(共享)来建模编码器:同一个图的两个不同视图经过各自的GCN获得初级表示,之后分别经过第一个全连接层,图池化层,第二个全连接层进而获得两个视图的最终表示。其中图池化层(类似Readout)用于将GCN所学习到的节点级别表示聚合为图级别表示,其定义为:

将每层GCN得到的节点表示求和,之后对GCN所有层的求和结果进行拼接,再进行线性变换,最后经过激活函数得到结果

最后使用通过最大化一个视图节点级别的GCN表示与另一个视图上图级别表示之间的互信息(MI)对模型进行训练:

Hi为GCN对节点i的表示,hg为图g的表示,MI此处定义为两个向量的内积

算法流程:

- 04 -

总结

以上三篇论文都在一定程度上证明了将来自于有序数据结构上的自监督算法思想应用于图数据上的可能性以及有效性,结合图神经网络更加广泛的应用场景,自监督图神经网络的研究对学界和工业界都有着重大意义。因为受限于有标签数据的数量问题,我们在实践中设计漏洞检测神经网络的时候,从用于汇编语言表征的Instruction-BERT到节点表征、图表征,我们都大量使用了自监督学习,从效果上看,已经可以说,这些方法能够真正在工业界落地了,不再是漂浮在paper海洋中的空中楼阁。

总体来说,图神经网络还没有像卷积网络之于CV,Transformer之于NLP那样在工业界得到杀手级的应用,大规模知识图谱看起来是它能够大展身手的一个方向,但是离真正落地似乎还有距离。我们目前已经在将图神经网络应用于漏洞检测方面取得了一些进展,希望以后能够看到更多的相关研究在工业界落地。

引用文献:

[1]. Zhang J, Zhang H, Sun L, et al. Graph-Bert: Only Attention is Needed for Learning Graph Representations[J]. arXiv preprint arXiv:2001.05140, 2020.

[2]. Hu W, Liu B, Gomes J, et al. Strategies for Pre-training Graph Neural Networks[J]. arXiv preprint arXiv:1905.12265, 2019

[3]. Hassani K, Khasahmadi A H. Contrastive Multi-View Representation Learning on Graphs[J]. arXiv preprint arXiv:2006.05582, 2020.

bp神经网络应用实例_自监督图神经网络相关推荐

  1. bp神经网络应用实例_人工智能BP神经网络学习神器——AISPACE

    未经许可请勿转载 更多数据分析内容参看这里 今天我们来介绍一套小工具--AISPACE,它有助于你学习BP神经网络运作的过程及原理.AISPACE涉及的一系列工具用于学习和探索人工智能的概念,它们是在 ...

  2. bp神经网络应用实例_预测方法合集——BP神经网络

    首先来说说神经网络,生物的大脑神经元,细胞,触点等组成了网络,用于产生生物的意识,帮助生物进行思考和行动,可以干很多很多事情的,虽然说现在科技迅猛进步,但是目前来讲人脑依旧是最发达的,有的这些科学家啊 ...

  3. 【自然语言处理】【知识图谱】SEU:无监督、非神经网络实体对齐超越有监督图神经网络?

    SEU:从对齐到分配----简单有效的无监督实体对齐 <From Alignment to Assignment:Frustratingly Simple Unsupervised Entity ...

  4. #今日论文推荐# IJCAI2022 | 求同存异:多行为推荐的自监督图神经网络

    #今日论文推荐# IJCAI2022 | 求同存异:多行为推荐的自监督图神经网络 个性化推荐系统在现在的网络平台(或应用)中已经得到了广泛的应用,已解决它们面对的信息过载的问题.大多数推荐模型都是基于 ...

  5. #今日论文推荐# IJCAI 2022 | 求同存异:多行为推荐的自监督图神经网络

    #今日论文推荐# IJCAI 2022 | 求同存异:多行为推荐的自监督图神经网络 个性化推荐系统在现在的网络平台(或应用)中已经得到了广泛的应用,已解决它们面对的信息过载的问题.大多数推荐模型都是基 ...

  6. 人工神经网络原理及应用,深度神经网络应用实例

    神经网络请教! <人工神经网络原理及仿真实例>高隽编著,机械工程出版社. 我感觉挺好的. 关键看你用什么来实现神经网络,是matlab.vc还是vhdl. 现任安徽省第九届政协委员, 安徽 ...

  7. 人工智能 人工神经网络,人工神经网络应用实例

    人工智能应用在哪些方面呢?能举几个典型的例子吗? 人工智能应用的领域非常广泛,随着人工智能的不断发展,这些都会一一实现.1.智能制造领域. 标准化工业制造中信息感知,自主控制,系统协调,个性化定制,检 ...

  8. 人工神经网络应用实例,人工神经网络算法实例

    神经网络算法实例说明有哪些? 在网络模型与算法研究的基础上,利用人工神经网络组成实际的应用系统,例如,完成某种信号处理或模式识别的功能.构作专家系统.制成机器人.复杂系统控制等等. 纵观当代新兴科学技 ...

  9. 神经网络应用较多的算法,图卷积神经网络应用

    神经网络原理及应用 神经网络原理及应用1.什么是神经网络?神经网络是一种模拟动物神经网络行为特征,进行分布式并行信息处理的算法. 这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从 ...

最新文章

  1. 上接游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
  2. 两个组件连线_如何正确的使用日志组件 Log4j、SLF4J、Logback
  3. iScroll.js 用法参考 (share)
  4. javascript操作select下拉列表框的一点小经验
  5. 为什么图片要2的倍数_为什么电工作业时,至少要有2个人?电工保命四招要牢记!...
  6. iOS开发之图片分辨率与像素对齐
  7. 什么是透明传输 点对多传输? 它们有哪些经典应用和优势特点
  8. 计算机数值计算的相关文章,数值计算论文.doc
  9. 控件的WM_NOTIFY消息映射
  10. html5操作类名API——classlist
  11. BMP图片读写接口函数
  12. java spring框架文件上传_spring系列---Security 安全框架使用和文件上传FastDFS
  13. React的消息订阅全过程
  14. 泰坦尼克号(1997)
  15. 计算机微课ppt,全国“xx杯”计算机类说课大赛课件一等奖作品:制作“旅游专线”PPT微课课件.pptx...
  16. 使用人性化的Linux防火墙CFW阻止DDOS攻击
  17. MySQL 是怎么加行级锁的?为什么一会是 next-key 锁,一会是间隙锁,一会又是记录锁?
  18. 十进制转化为二进制(栈算法)
  19. c语言程序设计拉丁方阵结构图,C语言实例之拉丁方阵
  20. css direction属性

热门文章

  1. go语言 C语言系的更容易,语法接近。
  2. cgi标准面试php,PHP面试:简述CGI、FastCGI和PHP
  3. 计算机专业中专排名,成都计算机中专学校排名
  4. 九、调度算法的评价指标
  5. 大数据分布式集群搭建(3)
  6. fedora java 开发环境_Linux(Fedora 14)下 java开发环境配置 ——jdk的安装与配置
  7. mysql 5.7.22初始密码_mysql5.7.22安装
  8. confluence mysql 中文乱码_解决confluence的乱码问题
  9. liunx上安装nacos
  10. C++_STL——stack