图神经网络学习00--distill论文入手

distill

distill是网页形式的期刊,其中有许多非常棒的可视化讲解,力求把晦涩难懂的研究工作讲得通俗易懂。
非常适合初学者学习。

其中有两篇发布于Sept.2,2021的有关图神经网络的博客,文章脉络清晰。

  • A Gentle Introduction to Graph Neural Networks
  • Understanding Convolutions on Graphs

以下将参考这两篇论文展开。

A Gentle Introduction to GNN

Motivation

我们身边到处都是图,一系列对象以及他们之间的关系可以自然地表示为图。
图神经网络近期在能力和表现力上有了长足进步,应用有:细菌发现、物理模拟、虚假新闻检测、交通预测、推荐系统。

为什么要用图神经网络?
相对于传统的神经网络,GNN可以胜任更复杂的数据模型。在之后的文章中我们可以看到,图的结构更多变,输入没有固定的大小。图片和语言都可以看作是一类特殊的图数据。
应用在传统数据格式上的神经网络无法直接处理普遍格式的图数据。

概念说明

什么是图?
图表示了一系列实体以及实体之间的关系。通常包含点集和边集。在GNN语境下,图通常包含三个要素。

  • V:点集(点特征集)
  • E:边集(边特征集)
  • U:图整体(全局特征)

万物皆可图?

图是非常强大、普遍且灵活的数据结构,这里用两个例子来说明图的普遍型,加深对于图概念的认识。

  • 图像:基本的对于图像的认识就是具有固定位置信息的像素点的集合。我们也可以将每个像素点看作是一个node,将相邻关系看作是edge。由此就可以将图表示成图数据的形式。
  • 文本:文本是word序列,同样可以将单独的wordnode表示,将相邻word的连接关系用directed edge表示。

当然,用图结构来表示图像和文本是一种冗余的表示方式,它们都拥有regular structures正规结构,有各自更适合的相对精简的表示方式。
这里只是说明了图的强大表示能力。换句话说,图中元素个体之间的关系可以是随意组合的,而传统任务中元素个体之间的关系是单一不变的,可以理解图为更普遍的数据组织形式。

图表示实际应用的领域

有了上面对于图的认识,接下来我们就可以专注于一些其它类型的数据,这些数据结构更多变,每个结点的临边个数可能不同,能够胜任这些数据的表示的数据结构只有图。

  • 分子图:分子可以理解为由原子和电子构成的3D结构。我们用node表示原子,用edge表示原子间的距离(化学键类型)。
  • 用图表示的社交网络:用node表示人,用edge表示关系。聚类或分组。
  • 引用网络:论文引用网络。
  • 其它例子:机器学习模型、编程语言、数学等式…等很多神奇但又自然的表示方式。

解决问题的类型

图上的问题粗略来分有三类:图-级别、边-级别、点级别。分别对应了图的三要素。

  • 图-级别任务:目标是预测整个图的性质。
    可以类比到图像识别或是文字情感分析,只需要给出整体是否具备某个属性的预测结构。
  • 结点-级别任务:预测图中结点的身份或作用。
    最经典的问题是Zach's karate club。简单来说就是将图中的点分成两类。可以类比计算机视觉中的实例分割任务,需要对每一个像素属于的类别进行预测。
  • 边-级别任务:预测边的属性或边的有无。
    一个例子就是对于图像场景的理解,对于实例分割后的图像,用图的形式组织所有实例,并预测实例间的关系。从而能够理解图像。

机器学习中使用图面临的问题

在解决图相关问题以前,第一步是解决图和神经网络的兼容问题。
机器学习通常接收矩阵或网格阵列作为输入,需要想办法将图表示成这种格式。

图中蕴含四种我们可能用到的信息:结点、边、全局信息、连通性。

  • 前三者具有相当直白的表示,可以很容易地用矩阵表示出来。
  • 而连通性的表示就复杂一些。通常情况下使用的邻接矩阵在GNN中有一些缺点:
    • 边少时矩阵过于稀疏,造成空间浪费。
    • 同一个图可以对应多个邻接矩阵,邻接矩阵隐含了人为的结点排序,而不同的排序方式不能保证结果不变性。与结点无序要求相违背。

下一个部分提出了问题的解决方案。

Contribution

GNN前的准备

之前提到直接用邻接矩阵表示图的临界性信息会存在一些问题。为了方便解决图和神经网络的兼容性,构建可行的GNN,需要特殊处理邻接信息的表示。

采用邻接列表存储连通信息。解决了稀疏问题和顺序问题。

# Nodes
[0, 1, 1, 0, 0, 1, 1, 1]# Edges
[2, 1, 1, 1, 2, 2, 1]# Adjacency List
[[1, 0], [2, 0], [4, 3], [6, 2], [7, 3], [7, 4], [7, 5]]#列表存储特征信息,用序号对应关系绑定边和连通性。
#这里用标量表示特征信息,通常使用向量表示。

有了这些准备,就可以着手开始构建GNN了。

图神经网络

GNN是对于全图属性的优化转换,同时保持了图的对称性。
GNN的输入和输出时具有相同连通性的图,只是对于结点、边和全局信息的嵌入属性做了优化更新。

使用“消息传递神经网络”框架构建GNN。会用到图网络结构图表。

最简单的GNN

最简单的GNN中,只需要得到V E U的i虚拟的嵌入表示,不考虑连通性信息。
GNN使用独立的多层感知机(MLP)对所有的图的组成部分进行应用。输入是一个图,用MLP更新(U,V,E)后输出新图。

U n → f U n → U n + 1 U_n\rightarrow f_{U_n} \rightarrow U_{n+1} UnfUnUn+1
E n → f E n → E n + 1 E_n\rightarrow f_{E_n} \rightarrow E_{n+1} EnfEnEn+1
V n → f V n → V n + 1 V_n\rightarrow f_{V_n} \rightarrow V_{n+1} VnfVnVn+1

输入输出的信息规模完全相同,只是更新了嵌入信息的值。
注意这里(U, V, E)都是单独计算的,并没有用到连通性信息。

能汇聚信息的GNN

GNN的特点就是Pooling Inofrmation,上一个GNN实际过于简单。
假设目前需要对结点类型进行预测,最简单的方式就是使用上一种方法中输出的结点嵌入信息再过一次线性层得到分类结果。但这种方法过于直接,效果和适用范围受限。例如,当确实结点信息时,必要通过边信息的汇聚来得到缺失的结点的嵌入信息。

汇聚过程包括两步:

  • 将所有需要汇集的嵌入信息个体连接成一个矩阵。
  • 将这些嵌入信息聚合,通常通过一个求和函数。

上述过程: ρ 指汇聚函数, C 指最终分类层 \rho指汇聚函数,C指最终分类层 ρ指汇聚函数,C指最终分类层
V n ρ E n → V n → C V n → 结点预测值 E n ↗ V_n \quad \rho_{E_n\rightarrow V_n} \rightarrow C_{V_n} \rightarrow 结点预测值 \\ E_n \nearrow \qquad \qquad \qquad \qquad \qquad VnρEnVnCVn结点预测值En

汇集函数 ρ \rho ρ可以跨类型实现信息汇聚的过程,上述方法是从边到结点的汇聚,通过各种源--目标组合可以实现不同的汇聚类型。
但目前仍没有使用到连通信息,接下来将说明连通信息如何引入。

Passing message between parts of the graph

可以通过GNN层内的汇聚实现更为复杂的预测。为了引入连通信息,可以让相邻结点之间或边之间进行信息传递,互相影响,通过连通信息实现汇聚。

信息传递工作包括三步:

  • 获取所图中所有的邻居结点的嵌入信息。
  • 通过合计函数(like sum)合计所有信息
  • 所有汇聚的信息通过更新函数(usually a learned neaural network)向下传递。

U n → ρ V n → V n → f U n → U n + 1 U_n\rightarrow \rho_{V_n \rightarrow \ V_n}\rightarrow f_{U_n} \rightarrow U_{n+1} UnρVn VnfUnUn+1

以上过程类似于卷积,都是通过邻居信息来更新结点(像素)信息。但在GNN中,邻居的个数是不固定的。

有了以上的方法,可以实现(V, E, U)之间或自身的信息汇聚过程,可以任意组合。达到补全缺失信息或提高预测能力的目标。
汇聚的顺序对最终效果是有影响的。

有关全局信息的解释

这里可以解释为什么要用到全局信息U。有些时候通过邻居的汇聚很难得到整个图的一些信息,可以先将所有结点的信息汇集到全局信息U(也叫主结点、上下文向量),再将该信息汇聚到每一个结点,从而使结点获取到包含远端信息的全局信息。

最基础版GNN原理--大功告成

综上,所有的图属性都得到了学习的表示,我们可以在池化pooling过程中将我们感性趣的属性与其它信息相关联得到输出。
为了实现不同长度的嵌入信息之间的传递,可以利用线性层将所有信息映射到相同空间上。
(或使用特征调制层`feature-wise modulation layer, 可以被认为是一种特征调制注意力机制)

尽力日更ing…

Understanding Convolution on Graphs

Motivation

图相对于其它数据形式的优势

许多系统和相互作用的整体可以自然地用图来表示。

Contribution

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

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

相关文章

微软的TaskWeaver框架

微软的TaskWeaver框架是一个功能强大的工具,它的应用场景非常广泛。以下是几个具体的应用场景及其应用方式的简要介绍: 数据分析与可视化: 应用场景:企业需要对大量数据进行深度分析,以洞察市场趋势、优化业务决策。 …

Swift 结构化并发之全局 Actor 趣谈

概览 在 Swift 结构化并发构成的体系中,一个称为“演员”(Actor)的成员扮演了非常重要的角色,它被用来隔离和同步执行中的数据。 除了普通 Actor 以外,还有一个全局“演员”(Global Actor)的概念,它是做什么的?又有什么与众不同的长处呢? 在本篇博文中,您将学到如…

通过ETL工具快速实现单据同步

ETLCloud介绍 ETLCloud是一款旨在解决企业数据集成挑战的最新一代平台,它集成了离线数据集成ETL、ELT、CDC实时数据集成、编排调度和数据服务API等功能,形成了一体化的DataOps数据集成平台。该平台提供私有化部署以及云原生架构,能够满足企业…

二分查找 python

1.非递归写法 def binary_search(arr, target):left, right 0, len(arr) - 1while left < right:mid (left right) // 2if arr[mid] target: #如果相等return midelif arr[mid] < target:#当中值小于目标值 说明应该在右边查找了left mid 1 #把左索引 变成mid1els…

设计模式深度解析:适配器模式与桥接模式-灵活应对变化的两种设计策略大比拼

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 适配器模式与桥接模式-灵活应对变化的两种设计策略大比拼 探索设计模式的魅力&#xff1a;深入了…

nodejs的geoip-lite库

介绍 geoip-lite是一个用于获取IP地址地理位置信息的轻量级Node.js库。它使用MaxMind的GeoLite数据库&#xff0c;提供了方便的方式来查询IP地址对应的国家、省份和城市等地理位置信息。geoip-lite库的主要特点包括&#xff1a; 轻量级&#xff1a; geoip-lite是一个轻量级的…

ElasticSearch - 基本操作

前言 本文记录 ES 的一些基本操作&#xff0c;就是对官方文档的一些整理&#xff0c;按自己的习惯重新排版&#xff0c;凑合着看。官方的更详细&#xff0c;建议看官方的。 下文以 books 为索引名举例。 新增 添加单个文档 (没有索引会自动创建) POST books/_doc {"n…

Wpf-自定义控件波纹Button

使用用户控件&#xff0c;继承Button 前端代码 <Button x:Class"WpfApp1.SuperButton"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://sche…

(持续更新中)DRF相关

Resquests&#xff08;请求&#xff09; 属性 .data request.data 返回请求正文的解析内容。它包括所有解析的内容, 包括 文件或非文件 输入。 它支持解析除POST之外的HTTP方法的内容&#xff0c;这意味着你可以访问PUT和PATCH请求的内容。 它支持REST framework灵活的请求解…

Linux--Ubuntu安装

Linux操作系统时程序员必须要学的操作系统。接下来我们就来看一下Linux操作系统是如何安装的 我们在 Vmware 虚拟机中安装 linux 系统&#xff0c;所以需要先安装 vmware 软件&#xff0c;然后再 安装 Linux 系统。 一.所需安装文件&#xff1a; Vmware 下载地址(现在最新版的…

羊大师揭秘,孩子适不适合喝羊奶?

羊大师揭秘&#xff0c;孩子适不适合喝羊奶&#xff1f; 羊奶&#xff0c;这个古老而珍贵的营养饮品&#xff0c;近年来在家长们中间逐渐走红。它以其独特的营养价值和口感受到了众多家庭的青睐。但是&#xff0c;面对市面上琳琅满目的羊奶产品&#xff0c;家长们常常陷入选择…

三连杆滑块机构运动学仿真 | 【Matlab源码+理论公式文本】|曲柄滑块 | 曲柄连杆 | 机械连杆

【程序简介】&#x1f4bb;&#x1f50d; 本程序通过matlab实现了三连杆滑块机构的运动学仿真编程&#xff0c;动态展现了三连杆机构的运动动画&#xff0c;同时给出了角位移、角速度和角加速度的时程曲线&#xff0c;除了程序本身&#xff0c;还提供了机构运动学公式推导文档…

网络——入门基础

目录 协议 网络协议 OSI七层模型 网络传输基本流程 网络传输流程图 局域网通信 数据包的封装和解包 广域网通信 网络地址管理 IP地址 MAC地址 协议 关于什么是局域网&#xff0c;什么是广域网&#xff0c;我这里就不过多赘述了&#xff0c;我们直接来谈一下什么…

C#使用MD5算法对密码进行加密

目录 一、涉及到的知识点 1.MD5 2.使用基类的 Create 方法来创建 MD5 对象 3.对每个字节进行加密并将其转换为十六进制字符串 4.ComputeHash(Byte[]) 二、使用MD5算法对密码进行加密 一、涉及到的知识点 1.MD5 MD5(Message Digest Algorithm 5)是一种被广泛使用的“消息…

【链表】Leetcode 24. 两两交换链表中的节点【中等】

两两交换链表中的节点 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例1: 输入&#xff1a;head [1,2,3,4] 输出&#…

用连续自然数之和来表达整数 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C++ 题目描述 一个整数可以由连续的自然数之和来表示。给定一个整数,计算该整数有几种连续自然数之和的表达式,且打印出每种表达式。 输入描述 一个目标整数T (1 <=T<= 1000) 输出描述 该整数的所有表达式…

java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics

今天在使用springBoot连接influxdb报错 java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics 详细报错如下&#xff0c;提出我们缺少一个依赖 原因是由于创建influxdb客户端缺少Kotlin运行时库 解决办法就是 1.显示的添加okhttp的依赖 <dependency>…

蓝桥杯每日一题:接龙数列

题目来源&#xff1a;第十四届蓝桥杯软件赛省赛 B组 对于一个长度为 K K K 的整数数列: A 1 A_1 A1​, A 2 A_2 A2​ , … , A K A_K AK​ , 我们称之为接龙数列当且仅当 A i A_i Ai​ 的首位数字恰好等于 A i − 1 A_{i-1} Ai−1​ 的末尾数字 ( 2 ≤ i ≤ K 2 \le i \l…

my2sql —— go语言版binlog解析及闪回工具

之前学习过python语言版binlog解析及闪回工具 MySQL闪回工具简介 及 binlog2sql工具用法 最近听同事介绍有了新的go语言版的my2sql。优点是不需要安装一大堆依赖包&#xff0c;直接可以安装使用&#xff0c;并且解析更高效&#xff0c;试用一下。 一、 下载安装 1. 软件下载 …

5分钟教你使用idea调试SeaTunnel自定义插件

在用Apache SeaTunnel研发SM2加密组件过程中&#xff0c;发现社区关于本地调试SeaTunnel文章过于简单&#xff0c;很多情况没有说明&#xff0c;于是根据自己遇到问题总结这篇文档。SeaTunnel本地调试官方文档&#xff0c;希望对大家有所帮助&#xff01; 使用的引擎为Flink(不…