当前位置: 首页 > article >正文

Graph Convolutional Networks(GCN)图卷积网络

1.前言

许多问题本质上都是图表,在我们的世界里,我们看到很多数据都是图,比如分子、社交网络和论文引用网络。
在这里插入图片描述

2.图上的任务分类

1.节点分类:预测给定节点的类型
2.链接预测:预测两个节点是否链接
3.社区检测:识别密集链接的节点集群
4.网络相似性:两个子网络的相似程度

在图中,我们有节点特征(节点的数据)和图的结构(节点的连接方式)。
对于前者,我们可以轻松从每个节点获取数据,但当涉及结构时,从中提取有用的信息并非易事。例如,如果两个节点彼此靠近,我们是否应该将他们与其他节点区别对待?度数高的节点和度数低的节点怎么样?事实上,每个特定的任务都可能消耗大量的时间和精力来进行特征工程,例如将结构提炼成我们的特征。
在这里插入图片描述
所以,面临的问题是 如何将节点特征和结构作为输入,让机器自己找出哪些信息是有用的,那就更好了,从而去掉了人工特征的步骤。
在这里插入图片描述

3.图卷积神经网络的过程

GCN是一种卷积神经网络,可以直接处理图形并利用其结构信息。
在这里插入图片描述

3.1 图卷积过程及主要思想

在这里插入图片描述
GCN的一般思路:对于每个节点,我们从它的所有邻居那里获取特征信息,当然还有它自己的特征。假设我们使用average()函数,我们将对所有的节点执行相同的操作,最后,我们将这些平均值输入神经网络。
具体的过程例子如下图:(包括中心节点都执行了average操作)
在这里插入图片描述
在实践中,我们还可以堆叠更深的GCN,层的输出被视为下一层的输入。
在这里插入图片描述

3.2 背后的数学原理和直觉感受

图中A是邻接矩阵,D是图的度数矩阵,X是节点的特征信息。
在这里插入图片描述
用邻接矩阵A和特征矩阵X相乘,就相当于将邻居节点的特征信息,给提取到特征矩阵,但是很直观的也可以发现,就是虽然提取到了邻居节点的特征信息,但是同样也失去了自身节点的特征信息。
另外一个潜在的问题就是我们得使用加权平均值,而不是sum(),为什么呢?因为使用sum()函数 ,对于度数较多的中心节点,其特征信息就可能值特别大,度数较少的则反之,容易造成梯度消失或者梯度爆炸,此外,由于神经网络似乎对输入数据的规模很敏感,因此需要对这些向量进行归一化。
在这里插入图片描述
1、对于节点自身特征信息丢失的问题
λ的值通常取1
在这里插入图片描述
更新后的A矩阵:
在这里插入图片描述
2、如何缩放/归一化向量?
D是度数矩阵,D的逆矩阵就是对角线元素取倒数。
在这里插入图片描述
通过D的逆矩阵和X的成绩,我们就可以实现取所有特征向量的平均值。
右乘D的逆矩阵,实现对应列也缩放
在这里插入图片描述
完整的特征信息聚合更新流程:
在这里插入图片描述
另一种计算公式,因为行列都进行了归一化,所以取-1/2次,就相当于只归一化了一次。
在这里插入图片描述

3.3 GCN流程公式

在这里插入图片描述

4、GCN另外的一些问题

1、GCN的层数不应该设置得太大,一般2-3层取到最好的结果。
在这里插入图片描述
2、GCN的主要思想:取所有邻居节点的加权平均值,低度节点获得较大的权重,然后,我们将生成特征向量通过神经网络进行训练

3、该框架目前仅限于无向图 (加权或未加权)。但是,可以通过将原始有向图表示为无向二分图,并使用表示原始图中边的附加节点来处理有向边和边特征。

4、对于多关系的edge我们需要使用R-GCN。

参考链接:
https://ai.plainenglish.io/graph-convolutional-networks-gcn-baf337d5cb6b


http://www.kler.cn/a/566940.html

相关文章:

  • 解释 Node.js 中的异步编程模型,如何使用回调、Promise 和async / await 处理异步操作?
  • PyCharm Python 环境配置指南
  • HTTP3.0 和 HTTP2.0,HTTP1.0区别
  • 前端存储方案全面对比:localStorage、sessionStorage、cookies与IndexedDB
  • 【 开发知识点 一 】 随机数生成器 /dev/urandom 和 /dev/random
  • 第一届启航杯-web-misc(全)
  • 如何查看react的版本号
  • 如何长期保存数据(不包括云存储)最安全有效?
  • 决策树:机器学习中的分类与回归利器
  • LabVIEW 无法播放 AVI 视频的编解码器解决方案
  • Unclutter for Mac v2.2.12 剪贴板/文件暂存/笔记三合一 支持M、Intel芯片
  • jenkins使用插件在Build History打印基本信息
  • DeepSeek 开源周五个开源项目,引领 AI 创新?
  • leetcode---LCR 123.图书整理1
  • LabVIEW中交叉关联算法
  • ‘ts-node‘ 不是内部或外部命令,也不是可运行的程序
  • vue3中展示markdown格式文章的三种形式
  • 阿里云oss文件上传springboot若依java
  • 25新闻研究生复试面试问题汇总 新闻专业知识问题很全! 新闻复试全流程攻略 新闻考研复试调剂真题总结
  • 深度解读 AMS1117:从电气参数到应用电路的全面剖析