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

图卷积网络(Graph Convolutional Network, GCN)

图卷积网络(Graph Convolutional Network, GCN)是一种用于处理图结构数据的深度学习模型。GCN编码器的核心思想是通过邻接节点的信息聚合来更新节点表示。

图的表示

一个图 G通常表示为 G=(V,E),其中:

  • V 是节点集合,包含 N个节点。
  • E是边集合,包含图中所有的边。

节点特征矩阵

假设每个节点 i有一个特征向量 x_i(维度为 F),所有节点的特征可以表示为矩阵 \mathbf{X} \in \mathbb{R}^{N \times F}

邻接矩阵

图的邻接矩阵 \mathbf{A} \in \mathbb{R}^{N \times N}表示图中节点之间的连接关系,其中 \mathbf{A}_{ij} = 1表示节点 i和节点 j之间有边,反之为 0。

度矩阵

度矩阵\mathbf{D} \in \mathbb{R}^{N \times N}是一个对角矩阵,其中 \mathbf{D}_{ii}表示节点 i的度,即节点 i的邻居数量: \mathbf{D}_{ii} = \sum_{j} \mathbf{A}_{ij}

图卷积层

GCN编码器由多个图卷积层组成,每一层的运算可以描述为:

\mathbf{H}^{(l+1)} = \sigma\left( \mathbf{\tilde{D}}^{-\frac{1}{2}} \mathbf{\tilde{A}} \mathbf{\tilde{D}}^{-\frac{1}{2}} \mathbf{H}^{(l)} \mathbf{W}^{(l)} \right)

其中:

  • \mathbf{\tilde{A}} = \mathbf{A} + \mathbf{I},即在邻接矩阵A中加上自环(self-loop),其中 I是单位矩阵。
  • \mathbf{\tilde{D}} 是对应的度矩阵,计算方式与度矩阵 D类似,只不过这里考虑了自环。
  • \mathbf{H}^{(l)}是第 l层的节点表示矩阵,初始表示 \mathbf{H}^{(0)} = \mathbf{X}
  • \mathbf{W}^{(l)}是第 l层的权重矩阵。
  • σ 是非线性激活函数(例如ReLU)。

归一化的邻接矩阵

\mathbf{\hat{A}} = \mathbf{\tilde{D}}^{-\frac{1}{2}} \mathbf{\tilde{A}} \mathbf{\tilde{D}}^{-\frac{1}{2}}

因此,图卷积层的更新规则可以简化为:

\mathbf{H}^{(l+1)} = \sigma\left( \mathbf{\hat{A}} \mathbf{H}^{(l)} \mathbf{W}^{(l)} \right)

GCN通常由多层图卷积层堆叠而成。假设有 L层,那么经过 L 层图卷积后,最终的节点表示为 \mathbf{H}^{(L)}

聚合和更新

每一层的图卷积操作本质上是对每个节点的邻居节点信息进行聚合,然后通过线性变换和非线性激活函数进行更新。具体过程如下:

  1. 聚合邻居信息:使用归一化的邻接矩阵\mathbf{\hat{A}}对节点表示进行线性变换,得到聚合后的邻居信息。
  2. 线性变换:通过权重矩阵 \mathbf{W}^{(l)}对聚合后的邻居信息进行线性变换。
  3. 非线性激活:应用非线性激活函数 σ进行非线性变换。

最后

GCN编码器的结构可以通过如下递归公式表示:

\mathbf{H}^{(l+1)} = \sigma\left( \mathbf{\hat{A}} \mathbf{H}^{(l)} \mathbf{W}^{(l)} \right)

初始状态下 \mathbf{H}^{(0)} = \mathbf{X},经过 L层图卷积后,得到最终的节点表示 \mathbf{H}^{(L)}。每层的图卷积通过聚合邻居信息、线性变换和非线性激活来更新节点表示。

相关文章:

  • 一文详解扩散模型
  • 王思聪隐形女儿曝光
  • Centos离线安装Python3
  • 人工智能—美国加利福尼亚州房价预测实战
  • Ribbon与Nginx的区别
  • 华为IPD体系中三大流程之IPD流程的六个阶段和七个评审点介绍
  • object类教程
  • 图像的高频和低频细节
  • [C#]winform使用onnxruntime部署LYT-Net轻量级低光图像增强算法
  • 宏任务与微任务
  • 对于补码的个人理解
  • Python考前综合练习-第六章[python123题库]
  • 人工智能和机器学习的应用日益广泛,在医疗健康领域的具体应用是什么?
  • 机器学习_SVM支持向量机
  • 【Android面试八股文】你能说一说线程池管理线程的原理吗?
  • 网络传输文件的问题
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • cookie和session
  • eclipse的离线汉化
  • Java IO学习笔记一
  • yii2权限控制rbac之rule详细讲解
  • 利用DataURL技术在网页上显示图片
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 如何学习JavaEE,项目又该如何做?
  • 数据结构java版之冒泡排序及优化
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 移动端唤起键盘时取消position:fixed定位
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • Java总结 - String - 这篇请使劲喷我
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • # 利刃出鞘_Tomcat 核心原理解析(二)
  • #565. 查找之大编号
  • #NOIP 2014# day.2 T2 寻找道路
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $.proxy和$.extend
  • (02)Hive SQL编译成MapReduce任务的过程
  • (10)STL算法之搜索(二) 二分查找
  • (13)DroneCAN 适配器节点(一)
  • (31)对象的克隆
  • (AngularJS)Angular 控制器之间通信初探
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (一)Docker基本介绍
  • (原)本想说脏话,奈何已放下
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)程序员疫苗:代码注入
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET Micro Framework初体验(二)
  • .NET 解决重复提交问题