四十八.图卷积网络(GCN)

1.卷积神经网络

CNN 在图像识别等任务中具有重要作用,主要是因为 CNN 利用了图片(信号)在其域中的局部平移不变性。由于图结构不存在平移不变性,所以 CNN 无法直接在图上进行卷积。

1.1局部平移不变性

CNN 之所以能成为图像领域的明珠却很少应用于其他领域原因是:「图片是一个规整的二维矩阵」,无论卷积核平移到图片中的哪个位置都可以保证其运算结果的一致性,这就是我们所说的「局部平移不变性」。CNN 的卷积本质就是利用这种平移不变性来对扫描的区域进行卷积操作,从而实现了图像特征的提取。
而网络是不规整的关系型数据,所以其不存在平移不变形(每个节点的周围邻居数不固定),这就使得传统的 CNN 方法无法直接应用于网络中。
有了局部平移不变形,才能实现参数共享。
但是,图结构的数据不具备这些特性,那么怎么在graph进行卷积操作?
自我理解如下章。

2.傅里叶分析、图拉普拉斯和图卷积网络

傅里叶分析包含傅里叶级数和傅里叶变换,本质上是一种基坐标转换,即将我们通常的函数的基坐标从时域换成了频域。频域的基坐标有三个维度:频率,振幅,相位差。
傅里叶级数和傅里叶变换的区别?
傅里叶级数主要针对周期性的函数进行投影,傅里叶变换主要针对非周期(周期无限大)的函数。
傅里叶级数:时域是一个周期且连续的函数,而在频域是一个非周期离散的函数。
傅里叶变换:时域非周期的连续信号,而在频域是非周期的连续信号。
为什么要使用傅里叶分析?
可以将一个复杂函数看做多个函数的复合(将一个不规则波分解为多个正弦波和余弦波),便于处理(如滤波)。
傅里叶分析、图拉普拉斯和图卷积网络怎么柔和到一起的?
通过定义图上的傅里叶变换,就可以定义图上的卷积操作。
图拉普拉斯算子给出了图上的傅里叶变换的基,实现了图傅里叶变换,从而可以在图上进行卷积操作。

3.图卷积网络公式

f ( H ( l ) , A ) = σ ( D ^ − 1 2 A ^ D ^ − 1 2 H ( l ) W l ) f(H^{(l)},A)=\sigma (\widehat{D}^{-\frac{1}{2}}\widehat{A}\widehat{D}^{-\frac{1}{2}}H^{(l)}W^{l}) f(H(l),A)=σ(D 21A D 21H(l)Wl)
公式解析:
A A A:graph的邻接矩阵。
A ^ \widehat{A} A A ^ = A + I \widehat{A}=A+I A =A+I,邻接矩阵和单位矩阵的矩阵和,相当于将图中的每个节点添加了一个自相关的边。
D D D:graph的度矩阵。
D ^ \widehat{D} D D ^ = D + I \widehat{D}=D+I D =D+I,度矩阵和单位矩阵的矩阵和,为了标准归一化。
D ^ − 1 2 A ^ D ^ − 1 2 \widehat{D}^{-\frac{1}{2}}\widehat{A}\widehat{D}^{-\frac{1}{2}} D 21A D 21:对邻接矩阵做了一个对称的归一化。
H ( l ) H^{(l)} H(l):上一层的输出,本层的输入。
W ( l ) W^{(l)} W(l):权重矩阵,对输出做了线性变换。
σ \sigma σ():非线性激活函数。
为什么要给邻接矩阵加上单位矩阵?
只使用邻接矩阵的话,由于A的对角线上都是0,所以在和特征矩阵H相乘的时候,只会计算一个node的所有邻居的特征的加权和,该node自己的特征却被忽略了。加上单位矩阵后,相当于每个节点增加了一条自连接的边,邻接矩阵中增加了node的信息。
为什么要对邻接矩阵做对称归一化?
层级传播后,A的值会叠加累乘,产生类似于梯度爆炸或者梯度消失的效果。
为什么度矩阵的逆矩阵会对邻接矩阵产生归一化效果?
度矩阵的每一行的值等于邻接矩阵每一行的值之和,因此,其逆矩阵可以对
邻接矩阵进行归一化。

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

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

相关文章

类加载机制——双亲委派机制

类加载器分类 类加载器 类加载器(英文:ClassLoader)负责加载 .class 字节码文件,.class 字节码文件在文件开头有特定的文件标识。ClassLoader 只负责 .class 字节码文件的加载,至于它是否可以运行,则由 E…

kafka-事务

1. 事务的5个API // 1初始化事务 void initTransactions();// 2开启事务 void beginTransaction() throws ProducerFencedException;// 3在事务内提交已经消费的偏移量&#xff08;主要用于消费者&#xff09; void sendOffsetsToTransaction(Map<TopicPartition, OffsetAn…

Vue-组件二次封装

本次对el-input进行简单封装进行演示 封装很简单&#xff0c;就给激活样式的边框(主要是功能) 本次封装主要使用到vue自带的几个对象 $attrs&#xff1a;获取绑定在组件上的所有属性$listeners: 获取绑定在组件上的所有函数方法$slots&#xff1a; 获取应用在组件内的所有插槽 …

成功解决Android设备adb连接后显示device unauthorized

一、提出问题 在电脑通过USB连接新的Android设备&#xff0c;想要通过adb来进行一些操作时&#xff0c;却发现命令提示符上在输入下面命令后显示设备未授权的信息也就是"unauthorized" adb devices二、不可行的解决方案 有人提出的解决方案是打开Android设备的开发…

测试开发(一) 使用Vue开发chrome插件

目录 一、引言 二、功能说明 三、【配置】操作演示 四、【请求拦截】演示 不断访问博客&#x

检测前端是否可以ping通后端返回的ip地址

检测前端是否可以ping通后端返回的ip地址 前端检测是否可ping通ip地址&#xff08;PC端&#xff09;前端检测是否可ping通ip地址&#xff08;uniapp小程序端&#xff09; 前端检测是否可ping通ip地址&#xff08;PC端&#xff09; // 前端检测是否可ping通ip地址 ping…

2023年新手如何学剪辑视频 想学视频剪辑如何入门

随着短视频、vlog等媒体形式的兴起&#xff0c;视频剪辑已经成为了热门技能。甚至有人说&#xff0c;不会修图可以&#xff0c;但不能不会剪视频。实际上&#xff0c;随着各种智能软件的发展&#xff0c;视频剪辑已经变得越来越简单。接下来&#xff0c;一起来看看新手如何学剪…

【ChatGPT 指令大全】怎么使用ChatGPT来帮我们写作

在数字化时代&#xff0c;人工智能为我们的生活带来了无数便利和创新。在写作领域&#xff0c;ChatGPT作为一种智能助手&#xff0c;为我们提供了强大的帮助。不论是作文、文章&#xff0c;还是日常函电&#xff0c;ChatGPT都能成为我们的得力助手&#xff0c;快速提供准确的文…

MySQL — MVCC

文章目录 MVCCMVCC 实现原理隐藏字段undo logundo log的用途undo log类型 版本链ReadView MVCC InnoDB是一个多版本的存储引擎。它保留有关已更改行的旧版本的信息&#xff0c;以支持并发和回滚等事务性特性。这些信息存储在undo表空间中的数据结构称为回滚段。InnoDB使用回滚…

培训报名小程序报名功能完善

目录 1 修改数据源2 修改表单3 支付成功时修改状态4 创建报名成功页5 最终的效果总结 目前我们的报名功能已经搭建了一个基础版&#xff0c;后续需要展示用户已经报名的信息&#xff0c;需要添加一个状态来显示用户是否成功付费。 1 修改数据源 打开我们的报名数据源&#xff…

mysql大量数据导入记要

需求描述 在工作中经历过两个项目要对数据库中的数据做大量数据的导出&#xff0c;转换和导入的工作。对于不涉及数据格式转换的导出导入工作&#xff0c;一般都是数据的备份。这个工作一般都由DBA搞定。对于要进行格式转换的工作&#xff0c;一般还是要由程序员参与。除非DBA…

解决ubuntu22卡死问题

解决ubuntu22卡死问题 最近用ubuntu2204做odoo开发&#xff0c;经常卡死&#xff0c;不清楚是什么原因&#xff0c;后来无意中发现pycharm占了50%内存&#xff08;公司电脑&#xff0c;一共8G&#xff09;&#xff0c;然后看了一下交换分区&#xff0c;总共2G&#xff08;默认…

前端中常见的设计模式

1.单例模式 描述&#xff1a;保证一个类仅有实例&#xff0c;并提供一个可以全局访问他的点&#xff0c;它通常用于管理应用程序的全局状态或资源&#xff0c;例如一个唯一的状态管理器。 代码示例&#xff1a; class Singleton {constructor() {if (!Singleton.instance) {…

【基础类】—前端算法类

一、排序 1. 排序方法列表 2. 常见排序方法 快速排序选择排序希尔排序 二、堆栈、队列、链表 堆栈、队列、链表 三、递归 递归 四、波兰式和逆波兰式 理论源码

机器学习笔记之优化算法(十一)梯度下降法:凸函数VS强凸函数

机器学习笔记之优化算法——梯度下降法&#xff1a;凸函数VS强凸函数 引言凸函数&#xff1a;凸函数的定义与判定条件凸函数的一阶条件凸函数的梯度单调性凸函数的二阶条件 强凸函数强凸函数的定义强凸函数的判定条件强凸函数的一阶条件强凸函数的梯度单调性强突函数的二阶条件…

redis的主从复制,哨兵和cluster集群

目录 一、redis的高可用 1&#xff09;redis高可用的概念 2&#xff09;Redis的高可用技术 二、redis主从复制 1&#xff09;主从复制的作用 2&#xff09;主从复制流程 三、redis一主二从的部署 实验组件 实验步骤 环境准备 修改内核参数 安装 Redis 创建redis工…

前后端分离式项目架构流程复盘之宿舍管理系统

文章目录 &#x1f412;个人主页&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;【&#x1f387;前端】先创建Vue-cli项目&#xff08;版本2.6.10&#xff0c;仅包含babel&#xff09;&#xff0c;请选择此项目并创建 【整理简化项目模板】【&#x1f380;创建路由】…

k8s 终止pod

cat test.yaml apiVersion: v1 #必选&#xff0c;版本号&#xff0c;例如v1 kind: Pod #必选&#xff0c;Pod metadata: #必选&#xff0c;元数据 name: string #必选&#xff0c;Pod名称 namespace: string #必选&#xff0c;Pod所属的命…

git clean 命令

git clean -n //显示要删除的文件&#xff0c;clean的演习&#xff0c;告诉哪些文件删除&#xff0c;只是一个提醒。 git clean -dn //显示要删除的文件和目录 git clean -f //删除未追踪的文件 git clean -dff //删除未追踪的目录 git clean -df //清除所有未跟踪文件&#xf…

缩略图更清晰了:imagecopysampled代替imagecopyresized

之前用 imagecopyresized() 生成缩略图,但是效果不是太理想,后来把 imagecopyresized() 换成 imagecopysampled() ,效果好太多了,图片变得更加清晰了。 通过对比图,很明显看出,imagecopysampled()生成的缩略图,清晰度高很多。 下面是imagecopysampled()生成缩略图的代…