图神经网络与图注意力网络

图片

        随着计算机行业和互联网时代的不断发展与进步,图神经网络已经成为人工智能和大数据的重要研究领域。图神经网络是对相邻节点间信息的传播和聚合的重要技术,可以有效地将深度学习的理念应用于非欧几里德空间的数据上。本期推送围绕图神经网络与图注意力网络相关知识进行概述。

1.什么是图

1.1 定义

    图表示的是一系列实体(节点)之间的关系(边)。

  • V:节点信息(节点标识、节点邻居数)

  • E:边信息(边标识、边权重)

  • U:全局信息(节点数、最长路径)

1.2 embedding

    为了深入表示每个节点、边和整个图,可以使用如下存储方式:

图片

        把节点信息、边信息和全局信息做embedding,通俗说即把这些信息存储为向量的形式。例如上图用向量来表示节点,形成一个长度为6的向量,表示节点的6个信息,高矮代表了值的大小。

1.3 将多种类型的数据表示成图

(1)images as graphs(将图片表示为图) 
  •  把每个像素作为一个点,存在邻接关系则形成一条边

图片

(2)text as graphs(将文本表示为图)
  • 把词表示为顶点,词与词存在有向边

图片

(3)将现实生活中的关系表示成图
  • 分子结构(原子之间的关系)、社交网络(人物交互图)、引用(文章引用关系)

  • 例如下图为话剧《奥赛罗》中的人物交互图,通过将同时出现在一个场景里的人物连上一条边,将人物关系表示成图。

图片

1.4 在图上可定义的问题类型

(1) 图层面的任务
  • 比如,给定一张图,对该图进行分类。

图片

        如上图,预测出哪些分子是具有两个环的。这个例子比较简单,可以用图的遍历来完成,当图非常复杂的时候,图神经网络可以发挥巨大作用。

(2)节点层面的任务
  • 比如,将节点分类到不同的阵营。

图片

    上图是空手道俱乐部数据集,将学员分类到两个老师的队伍中。

(3)边层面的任务    
  • 比如,已知节点,学习节点之间的边的信息。

图片

        在这个例子中,边的预测是通过语义分割把人物、背景拿出来,然后分析实体间的关系。也就是给出节点之间的图,对边上的属性进行预测。比如黄衣服的人在踢绿衣服的人,他们都站在地毯上。

1.5 在图上使用神经网络的挑战

        图上有节点属性、边的属性、全局信息、连接性四种类型的信息。

        前面三个比较容易与神经网络兼容,因为其可以表示成向量的形式。在利用连接性这种类型的信息时,通常会使用邻接矩阵——但是存在图太大无法存储、交换行列本质不变但矩阵变化的情况。于是很多情况下会使用邻接列表表示图上的连接性关系。

图片

        如上图,这张图有8个顶点,7条边。邻接列表的长度与边数相同,第i项表示第i条边连接的哪两个节点。

2.图神经网络

图神经网络的基本思想就是:

  • 基于节点的局部邻居信息对节点进行embedding。直观来讲,就是通过神经网络来聚合每个节点及其周围节点的信息。

图片

对于这个图来说,要计算节点A的Embedding,有以下的两条想法:

  • 节点A的Embedding,是它的邻接节点B、C、D的Embedding传播的结果

  • 而节点B、C、D的Embedding,又是由它们各自的邻接节点的Embedding传播的结果。

    为了避免无穷无尽,以下图为例,做两层,可以构造该图的传播关系。

图片

第0层即输入层,为每个节点的初始向量,称为初始Embedding。

第1层:

  • 节点B的Embedding来自它的邻接点A、C的Embedding的传播。

  • 节点C的Embedding来自它的邻接点A、B、E、F的Embedding的传播。

  • 节点D的Embedding来自它的邻接点A的Embedding的传播。

第2层:

  • 节点A的Embedding来自它的邻接点B、C、D的Embedding的传播。

        但是,目前我们还不知道传播到底是什么,图中的小方块在做什么,下面就对传播机制进行介绍。

小方块主要就做了两件事情:

  • 收集(Aggregation)

        对上一层的所有邻接节点的Embedding,如何进行汇总,获得一个Embedding,供本层进行更新。

  • 更新(Update)

        对本层已“收集完毕”的邻接点数据,是否添加自身节点的上一层Embedding,如果是,如何添加、如何激活等等,最终输出本层的Embedding。

下面使用公式介绍一个具体例子:

图片

符号解释:h表示节点的embedding,下标v或u表示节点的索引,上标k表示第几层,σ表示激活函数,  或  表示矩阵,N(v)表示节点v的邻接点集合。

公式解释:使用节点的输入特征向量来初始化第0层节点的embedding。为了计算第k层节点v的embedding,需要用到上一层中节点v本身的embedding、节点v的邻居节点在k-1层中的embedding平均值。

操作步骤:

  • 收集——对上一层邻居节点的Embedding求平均。

  • 更新——收集完毕的Embedding与本节点上一层的Embedding进行加权和,然后再激活。

3.图注意力网络

3.1 基本思想

根据每个节点在其邻节点上的attention,来对节点表示进行更新。

3.2 改进

  • GCN无法允许为邻居中的不同节点指定不同的权重,GAT和GCN的核心区别在于如何收集并累和距离为1的邻居节点的特征表示。

  • 图注意力网络GAT用注意力机制替代了GCN中固定的标准化操作。

3.3 优点

  • 在GAT中,图中的每个节点可以根据邻节点的特征,为其分配不同的权值。

  • 引入注意力机制之后,只与相邻节点有关,即共享边的节点有关,无需得到整张图的信息。

3.4 GAT架构

图注意力层的输入:N个节点特征的集合h

图注意力层的输出:经过学习之后的N个节点的特征向量h' 

特征增强:为了使得节点特征表达得更清晰,首先对每一个节点进行一个线性变换,即乘上一个权重向量。【W维度为𝐹′×𝐹,作用:比如将一个长向量转为一个短向量,使得特征更容易提取】

对每个节点实行自注意力机制:注意力系数为

e_{ij} = a(W\vec{h_i},W\vec{h_j})

其中,  代表节点j的特征对节点i的影响,a代表计算两个节点(特征向量)相关度的函数。

本文通过masked attention将图结构加入到机制中,masked attention的含义是:仅将注意力分配到节点i的邻居节点集上(包括i本身)。

为了使得注意力系数更容易计算和便于比较,引入了softmax对所有的i的相邻节点j进行正则化。

公式2的含义:节点j对i的影响/节点i一阶邻居对i的影响之和。

注:  和  都叫做“注意力系数”,只不过  是在  基础上进行归一化后的。

图片

    将公式1和2进行综合,注意力系数  的计算过程即如上图所示:W乘上i的特征,W乘上j的特征,然后连接起来,乘上权重向量a,形成圈里的值是  ,再使用  进行归一化,形成新的注意力系数。

    通过上述运算得到了归一化后的不同节点之间的注意力系数,可以用来预测每个节点的输出特征:

3.5 多头注意力机制

        因为多个注意力机制学习到的attention侧重点可能略有不同,所以将K个独立的注意力机制的结果进行级联或者求平均,确保GAT更加稳定。下图展示是K=3的情况,使得结果更加稳定。

图片

4.总结

        本期推送从什么是图、图神经网络的基本思想、图注意力网络的基本思想三个方面对图神经网络相关的基础知识进行了介绍。图神经网络从提出发展到现在,针对不同的领域一直在进行改进和优化,已经可以应用到非常多的方面,因为其解决图相关问题的能力强大,所以未来仍有非常大的发展空间,会有更多优秀的模型被提出,解决更加复杂的问题。

5.参考文献

[1] Distill《A Gentle Introduction to Graph Neural Networks》

[2] Hamilton W L, Ying R, Leskovec J. Representation learning on graphs: Methods and applications[J]. arXiv preprint arXiv:1709.05584, 2017.

[3] Velickovic P, Cucurull G, Casanova A, et al. Graph attention networks[J]. stat, 2017, 1050: 20.

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

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

相关文章

RK3588平台开发系列讲解(嵌入式AI篇)嵌入式AI模型的部署

文章目录 一、嵌入式AI模型的部署二、AI模型训练框架有哪些三、rknn-toolkit可支持转换的模型沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将给大家介绍嵌入式AI模型的部署。 一、嵌入式AI模型的部署 模型的部署,是指将训练好的模型放到运行环境中进行推理的…

【11月比赛合集】48场可报名的数据挖掘大奖赛,任君挑选!

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号会推送最新的比赛消息,欢迎关注! 以下信息仅供参考,以比赛官网为准 目录 Kaggle(9场比赛)阿里天池(…

HarmonyOS(三)—— 应用程序入口—UIAbility

前言 学习过android的同学都是知道Activity,Activity是Android组件中最基本也是最为常见用的四大组件之一,用户可以用来交互为了完成某项任务。 Activity中所有操作都与用户密切相关,是一个负责与用户交互的组件,可以通过setCon…

机器视觉公司为什么宁愿高薪招新人,也不愿加薪留老员工?老员工特殊时间特殊照顾,新人必须常照顾

​职场常出现的“薪酬倒挂”现象。其实这是正常的职场规律,实际上是企业管理不得不面对的一种选择。 很多企业宁愿老员工离职也不加薪,却高薪请新员工?这就是职场上的鲶鱼效应,一些高层领导认为一个企业,老员工好比沙…

基本的弹层,点击弹出

<div class"role"><el-button type"primary" size"mini" click"showDialog true">添加角色</el-button></div><!--控制弹框的显示隐藏visible .sync可以点击X关闭弹框 --> <el-dialog width"…

Spring Cloud学习(十一)【深入Elasticsearch 分布式搜索引擎03】

文章目录 数据聚合聚合的种类DSL实现聚合RestAPI实现聚合 自动补全拼音分词器自定义分词器自动补全查询completion suggester查询RestAPI实现自动补全 数据同步数据同步思路分析实现elasticsearch与数据库数据同步 集群搭建ES集群创建es集群集群状态监控创建索引库1&#xff09…

【RocketMq系列-02】RocketMq的架构解析和高性能设计

RocketMq系列整体栏目 内容链接地址【一】RocketMq安装和基本概念https://zhenghuisheng.blog.csdn.net/article/details/134486709【二】RocketMq的架构解析和高性能设计/font>https://zhenghuisheng.blog.csdn.net/article/details/134559514 RocketMq的架构解析和高性能设…

leetcode:520. 检测大写字母

一、题目&#xff1a; 链接&#xff1a;520. 检测大写字母 - 力扣&#xff08;LeetCode&#xff09; 函数原型&#xff1a;bool detectCapitalUse(char* word) 二、思路&#xff1a; 本题较为简单&#xff0c;分为三种情况&#xff1a; 1.首字母大写&#xff0c;其余小写 2.首字…

外网IP和内网ip的区别

首先得先知道什么是ip地址&#xff0c;它就是唯一标识连接网络的设备的&#xff0c;即IP地址充当了设备在网络中的“住址”&#xff0c;使得设备能够相互通信和交换数据。 我们常听开发人员说外网内网&#xff0c;那么它们有什么区别呢&#xff1f; 外网可以理解为互联网&…

【Docker】从零开始:6.配置镜像加速器

【Docker】从零开始&#xff1a;5.配置镜像加速器 什么是镜像加速器&#xff1f;为什么要配置docker镜像加速器?常见的Docker镜像加速器有哪些&#xff1f;如何申请Docker镜像加速器如何配置Docker镜像加速器 什么是镜像加速器&#xff1f; 镜像加速器是一个位于Docker Hub之…

PHP反序列化简单使用

注&#xff1a;比较简陋&#xff0c;仅供参考。 编写PHP代码&#xff0c;实现反序列化的时候魔法函数自动调用计算器 PHP反序列化 serialize(); 将对象序列化成字符串 unserialize(); 将字符串反序列化回对象 创建类 class Stu{ public $name; public $age; public $sex; publi…

智慧储能边缘计算网关应用,提升能源效率

智慧储能通过边缘计算网关物联网技术来实现对储能电池等设备的在线监控和远程管理。边缘计算网关可以将储能数据转化为可用的信息&#xff0c;并传输到储能系统中&#xff0c;为储能管理提供优化与调度等数据支持。 边缘计算网关在智慧储能系统中起到了关键的作用。IR4000边缘计…

探究Kafka原理-1.初识Kafka

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44…

Postman API Enterprise 10.18.1 Crack

适合您企业的 Postman API 平台 掌控您的 API 环境。构建更好的 API。加快产品开发。 无论您处于 API 之旅的哪个阶段&#xff0c;Postman 都会为您提供帮助 想让您团队的 API 更容易被发现吗&#xff1f;希望减少开发和质量检查之间的滞后时间&#xff1f;想要更快地让新开发…

在Spring Boot中使用ECharts绘制数据图表

使用ECharts来完成一些花里胡哨的图表吧&#xff0c;一般这种需求我们在我们的客户端不太常见&#xff0c;但是&#xff0c;我们在后端进行各种数据统计的时候就会发现ECharts的优点了&#xff0c;比如我们常常做的柱状图&#xff0c;折线图&#xff0c;雷达图等可视化形式&…

Mac M1 安装Docker打包arm64的python项目的镜像包

1、首先安装Docker&#xff0c;到官网下载&#xff0c;选择apple chip版 Docker中文网 官网 2、双击下载的dmg文件&#xff0c;在弹出框中之间拖拽到右边 3、打开docker&#xff0c;修改国内镜像源&#xff0c;位置在配置-DockerEngine "registry-mirrors": ["…

『亚马逊云科技产品测评』活动征文|AWS 数据库产品类别及其适用场景详细说明

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 目录 前言、AWS 数据库产品类别 01、Amazon Aurora 02、Amazon Docum…

基于STM32的手势识别算法研究与应用

基于STM32的手势识别算法在人机交互和智能设备控制中具有重要的应用价值。本文将介绍基于STM32的手势识别算法的研究原理和实现步骤&#xff0c;并提供相应的代码示例。 1. 手势识别概述 手势识别是一种通过分析人体的手部动作和姿势来识别和理解人的意图的技术。基于STM32的…

【PHP】PHP生成全年日历

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

5-8输出水仙花数

#include<stdio.h> int main(){int i,j,k;int n;for(n100;n<1000;n){in/100;jn/10-i*10;kn%10;if(ni*i*ij*j*jk*k*k)printf("%d ",n);}printf("\n");return 0; }