对于论文Semi-Supervised Classification with Graph Convolutional Networks,小白的学习理解

参考笔记:论文笔记:Semi-Supervised Classification with Graph Convolutional Networks_hongbin_xu的博客-CSDN博客

论文笔记:SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS_semi supervised classification_饮冰l的博客-CSDN博客

拉普拉斯矩阵与正则化_拉普拉斯正则化_solicucu的博客-CSDN博客

图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导_详细给出图卷积网络推导过程_不务正业的土豆的博客-CSDN博客

如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧 - 知乎

前言

卷积神经网络:灵感来源于人类的大脑,在识别一个物体时,首先识别边缘,再识别形状,最后确定物体的类型。卷积神经网络利用大脑识别的特点,建立多层神经网络,较低层识别物体的特征,若干底层特征组成更高一层特征,最终通过多层特征组合来进行分类。

典型的卷积神经网络CNN由卷积层、池化层和全连接层组成。卷积层用来提取特征,池化层用来降维和降低过拟合,全连接层用来输出最后的结果。研究的对象通常是有规则的空间结构,比如有序的语句,对于猫狗的分类。这些特征都可以用矩阵来表示。对于具有平移不变性的图片,一个小窗口移动到任意位置都不影响内部结构,可以使用CNN来提取特征。而RNN通常用于NLP这种序列信息。但是生活中还具备很多没有规则的空间结构数据,比如分子结构等,可以认为是无限维的数据,不具有平移不变性,这些不规则的空间结构难以用固定的卷积核来表示特征。每一个节点都是独一无二的,会让CNN,RNN失效.而GCN设计了一套从图数据中提取特征的办法,本质是个特征提取器。论文(Semi-Supervised Classification with Graph Convolutional Networks)使用谱图理论,利用拉普拉斯矩阵的特征值和特征向量来研究图的性质。

半监督学习是指样本集只有部分数据含有标签 ,通过已有标签的数据推断出没有标签数据的分类。给定一个数据集,可以映射成一个图,数据集中每个数据对应一个结点,由于一个图可以对应一个矩阵,这使得我们可以基于矩阵来进行半监督学习算法的分析。但是这有两个问题,一是假设有n个样本,复杂度就是n^2,这使得如此大规模的数据很难处理。二是构图过程只能使用样本集,再加入新的样本需要对原图进行重构并重新标记。

该论文的目标是解决半监督学习的问题。本文使用神经网络f(X,A)对图结构进行编码,对带有标签的节点在监督目标上进行训练。

 1 介绍

我们考虑在图中对节点进行分类的问题,其中标签只适用于一小部分节点。这个问题被定为半监督学习,其中标签信息通过某种形式基于图的显示正则化在图上平滑。例如公式(1),在损失函数中使用拉普拉斯正则化项:

  • L_{0}表示图中有标签的监督损失
  • f(.)表示类似神经网络的可微函数
  • λ 是个权重因子
  • X是节点特征向量X_{i}的矩阵
  • A表示图的邻接矩阵
  • D_{ii}=\sum_{j}^{}A_{ij}表示A的度矩阵,是个对角矩阵
  • ∆=D-A表示无向图的非归一化图拉普拉斯算子

这有两个好处,我们为图神经网络引入了一个简单且行为良好的前向传播公式,并展示了它是如何从谱图卷积的一阶近似中被激发。其次,我们演示了这种形式的基于图的神经网络模型如何用于图中节点的半监督分类。缺点是依赖于假设:相连接的节点可能共享相同的标签。这个假设可能会限制建模的能力,因为图边不一定需要编码节点相似性,而是可能包含附加信息。

2 图上的快速近似卷积

这节考虑多层图卷积网络(GCN):

  • A是图的邻接矩阵
  • \tilde{A}=A+I_{A},是A加上自环
  •  \tilde{D_{ii}}\tilde{A}的度矩阵 \sum j \tilde{A}ij,是一个对角矩阵
  • W^{(l)}是用于特定层可训练的权重矩阵
  • σ(.)是激活函数,例如ReLU(.)=max(0,.)
  • H^{l}R^{N*D}是l层的激活矩阵可以认为是第l-1层的输出,且H^{0}=X

下面将证明这种前向传播形式可以通过图上的局部谱滤波器的一阶近似来激发。

2.1 谱图卷积

我们考虑图上的谱卷积。对于一个输入信号x∈R^{N},在傅里叶领域中取参数θ∈R^{N},设置一个过滤器g\theta =diag(\theta )

  • U是图的标准化拉普拉斯的特征向量矩阵
  • 拉普拉斯矩阵:L=I_{N}-D^{-1/2}AD^{-1/2}=U\Lambda U^{T}
  • Λ特征值是对角矩阵,U^{T}x就是图上的傅里叶变换
  • 可以将g\theta理解成为L的特征值函数,即g\theta (\Lambda )

计算公式(3)成本很昂贵,复杂度是O(N^{2}),此外,计算L的特征分解代价很高。为了避免这个问题,g\theta (\Lambda )可以使用切比雪夫多项式T_{k}(x)的截断展开式很好的近似到k阶。

  •  \tilde{\Lambda }=\frac{2}{\lambda _{max}}\Lambda -I_{N}\lambda _{max}代表拉普拉斯矩阵L最大的特征值
  • {\theta}'\epsilon R^{K} 是一个切比雪夫系数
  • 切比雪夫多项式定义:
  1. T_{0}(x)=1
  2. T_{1}(x)=x
  3. T_{k}(x)=2xT_{k-1}(X)-T_{k-2}(x)

回到信号x和滤波器g\theta (\Lambda )卷积的定义,可得:

  •  \tilde{L }=\frac{2}{\lambda _{max}}L -I_{N}
  • (U\Lambda U^{T})^{k}=U\Lambda ^{k}U^{T}
  • k是拉普拉斯函数的k阶多项式,它只依赖于距离中心点步长最大为k步的节点

2.2 分层线性模型

可以通过叠加公式(5)来构建基于图卷积的神经网络。当K=1,即为拉普拉斯L上的线性函数。论文提到,通过这种形式的GCN,可以缓解具有非常宽节点度分布的图的局部邻域结构的过拟合问题。可以通过堆叠多个这样的层来提取特征。

在GCN的这个线性公式(K=1)中,进一步假设\lambda _{max}\approx 2.可以预测到神经网络参数能在训练过程中适应这种变化。在这些近似下,公式(5)化简为:

证明过程:

拉普拉斯矩阵L=D(度矩阵)-A(邻接矩阵)

拉普拉斯矩阵正则化证明:L^{sym}= D^{-1/2}LD^{-1/2}= D^{-1/2}(D-A)D^{-1/2}= D^{-1/2}DD^{-1/2}-D^{-1/2}AD^{-1/2}= I_{N}-D^{-1/2}AD^{-1/2}

在这里插入图片描述

  •  这里有两个过滤器参数\Theta ^{0}\Theta ^{1},可以在整个图上共享。
  • k是卷积层的数量
  • 进一步限制参数的数量有助于减少过拟合

  •  \Theta =\Theta ^{0}=-\Theta ^{1}

此时I_{N}+D^{-1/2}AD^{-1/2}特征值范围是[0,2],当神经网络使用该公式可能造成数值不稳定和梯度爆炸/消失。为了解决这个问题,引入了以下归一化技巧。

  • I_{N}+D^{-1/2}AD^{-1/2}->\tilde{D}^{-1/2}\tilde{A}\tilde{D}^{-1/2}(即加上图中自环)
  • \tilde{A}=A+I_{N}
  • \tilde{D}_{ii}=\sum_{j}^{}\tilde{A}_{ij}

在加上激活函数σ(.),可以得到H^{l+1}=f(H^{l},A)=\sigma(\tilde{D}^{-1/2}\tilde{A}\tilde{D}^{-1/2}H^{l}W^{l}),也就是公式2.

可以将这个定义推广到信号X\epsilon R^{N*C},它有C个输入通道(即每个节点有一个C维特征向量)和F和滤波器或特征映射,如下图所示

  • \Theta \epsilon R^{C*F}是滤波器参数矩阵
  • Z\epsilon R^{N*F}是卷积后输出的信号矩阵

3 半监督节点分类

前面介绍了在图上有效的传播信息的模型f(X,A),现在回到半监督节点分类问题。通过调节模型f(.)使得在邻接矩阵包含了一些X中不存在的信息的情况下更有用,例如引用网络中文档之间的引用链接或知识图中的关系。如图是整体模型用于半监督学习的多层GCN:

3.1 样例

下列例子中考虑在一个对称邻接矩阵A的图上使用两层GCN进行半监督节点分类。我们首先计算\tilde{A}=D^{-1/2}\tilde{A}D^{-1/2},前向传播模型采用:

左图用于半监督学习的多层网络GCN的示意图,在输入层有C个输入,若干个隐藏层和F个输出特征。右图是在Cora数据集上训练的双层GCN的隐藏层可视化结果,颜色表示文档分类。

在这里,我们定义属于输入层到隐藏层的参数,属于隐藏层到输出层的参数。softmax激活函数定义为e^{x_{i}}/\sum_{i=1}^{N}e^{x_{i}},按行应用。用交叉熵误差来评估所有有标签数据。

其中Yl是带有标签节点的集合。神经网络对W0和W1采用梯度下降法进行训练。使用dropout引入训练过程的随机性。

4 总结

利用切比雪夫公式作k阶近似拟合滤波器,依赖于周围步长最长为k的节点,进一步考虑周围节点对其影响,即取K=1,\lambda_{max} \approx 2,并进一步优化,取\Theta =\Theta ^{0}=-\Theta ^{1},为了防止梯度爆炸做了改进,得到最终定义。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux CentOS安装抓包解包工具Wireshark图形化界面

1.Wireshark介绍 Wireshark 是一个开源的网络协议分析工具,它能够捕获和分析网络数据包,提供深入的网络故障排除、网络性能优化和安全审计等功能。它支持跨多个操作系统,包括 Windows、macOS 和 Linux。 2.Wireshark主要使用方法 捕获数据…

K8S容器OOM killed排查

背景 数据服务平台南海容器k8s设置的内存上限2GB,多次容器被OOM killed。 启动命令 java -XX:MaxRAMPercentage70.0 -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/apps/logs/ ***.jar排查过程 1 当收到实例内存超过95%告警时,把jvm进程堆dump下…

htmx-使HTML更强大

‍本文作者是360奇舞团开发工程师 htmx 让我们先来看一段俳句: javascript fatigue: longing for a hypertext already in hand 这个俳句很有意思,是开源项目htmx文档中写的,意思是说,我们已经有了超文本,为什么还要去使用javascr…

三、原型模式

一、什么是原型模式 原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效&a…

模拟实现应用层协议

模拟实现应用层协议 文章目录 模拟实现应用层协议应用层再谈协议 序列化和反序列化 网络版计算器自定义协议利用Json进行序列化和反序列化json库的安装条件编译 应用层 应用层(Application layer)是OSI模型的第七层。应用层直接和应用程序接口并提供常见…

Unity 状态机

Enemy状态以及切换图 程序架构 接口 public interface IState {void OnEnter(); //进入状态时void OnUpdate();//执行状态时void OnExit(); //退出状态时 }接口实现及状态切换类 public class IdleState : IState {private FSM manager;private Parameter parameter;public…

开源且强大的网络嗅探分析工具——Wireshark

Wireshark是一款强大的开源网络协议分析工具,旨在帮助用户深入了解网络通信的细节。通过捕获、解析和展示网络数据包,Wireshark能够帮助工程师诊断问题、优化性能,以及解决各种网络难题。无论是深入分析还是快速调试,Wireshark都是…

C++ 多重继承

所谓多重继承就是一个儿子有好几个爹&#xff0c;然后一个人继承了这几个爹的财产。只需注意构造顺序即可&#xff0c;反正析构的顺序也是一样的。 #include <iostream> #include <string.h> using namespace std;class base_a { public:base_a(const char *str){…

华硕笔记本摄像头倒置怎么办?华硕笔记本摄像头上下颠倒怎么调整

笔记本电脑相较于台式电脑&#xff0c;更易携带&#xff0c;解决了很大一部分人的使用需求。但是笔记本电脑也存在很多不足&#xff0c;比如华硕笔记本电脑就经常会出现摄像头倒置的错误&#xff0c;出现这种问题要如何修复呢&#xff1f;下面就来看看详细的调整方法。 华硕笔记…

opencv 案例05-基于二值图像分析(简单缺陷检测)

缺陷检测&#xff0c;分为两个部分&#xff0c;一个部分是提取指定的轮廓&#xff0c;第二个部分通过对比实现划痕检测与缺角检测。本次主要搞定第一部分&#xff0c;学会观察图像与提取图像ROI对象轮廓外接矩形与轮廓。 下面是基于二值图像分析的大致流程 读取图像将图像转换…

C/C++ 个人笔记

仅供个人复习&#xff0c; C语言IO占位符表 %d十进制整数(int)%ldlong%lldlong long%uunsigned int%o八进制整型%x十六进制整数/字符串地址%c单个字符%s字符串%ffloat&#xff0c;默认保留6位%lfdouble%e科学计数法%g根据大小自动选取f或e格式&#xff0c;去掉无效0 转义符表…

LeetCode第6~10题解

CONTENTS LeetCode 6. N 字形变换&#xff08;中等&#xff09;LeetCode 7. 整数反转&#xff08;中等&#xff09;LeetCode 8. 字符串转换整数-atoi&#xff08;中等&#xff09;LeetCode 9. 回文数&#xff08;简单&#xff09;LeetCode 10. 正则表达式匹配&#xff08;困难&…

Flutter 混合开发调试

针对Flutter开发的同学来说&#xff0c;大部分的应用还是Native Flutter的混合开发&#xff0c;所以每次改完Flutter代码&#xff0c;运行整个项目无疑是很费时间的。所以Flutter官方也给我们提供了混合调试的方案【在混合开发模式下进行调试】&#xff0c;这里以Android Stud…

VUE笔记(四)vue的组件

一、组件的介绍 1、组件的作用 整个项目都是由组件组成 可以让代码复用&#xff1a;相似结构代码可以做成一个组件&#xff0c;直接进行调用就可以使用&#xff0c;提高代码复用性 可以让代码具有可维护性&#xff08;只要改一处&#xff0c;整个引用的部分全部都变&#xf…

Java8实战-总结17

Java8实战-总结17 引入流流操作中间操作终端操作使用流 小结 引入流 流操作 java.util.stream.Stream中的Stream接口定义了许多操作。它们可以分为两大类。再来看一下前面的例子&#xff1a; List<String> names menu.stream() //从菜单获得流 .filter(d -> d.get…

SpringBoot - Google EventBus、AsyncEventBus

介绍 EventBus 顾名思义&#xff0c;事件总线&#xff0c;是一个轻量级的发布/订阅模式的应用模式&#xff0c;最初设计及应用源与 google guava 库。 相比于各种 MQ 中间件更加简洁、轻量&#xff0c;它可以在单体非分布式的小型应用模块内部使用&#xff08;即同一个JVM范围…

xml和json互转工具类

分享一个json与xml互转的工具类&#xff0c;非常好用 一、maven依赖 <!-->json 和 xm 互转</!--><dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3</version></dependency&g…

图形化管理工具ossbrowser

文章目录 一、OSS介绍二、通过工具管理OSS三、安装四、使用-通过AK五、免责声明摘抄 一、OSS介绍 云对象存储OSS&#xff08;Object Storage Service&#xff09;是一款海量、安全、低成本、高可靠的云存储服务&#xff0c;可提供99.9999999999%&#xff08;12个9&#xff09;…

Javaweb入门

Spring Spring发展到今天已经形成一种开发生态圈&#xff0c;Spring提供若干个子项目&#xff0c;每个项目用于完成特定的功能。 Spring Boot可以帮助我们非常快速的构建应用程序、简化开发、提高效率 SpringBootWeb入门 需求&#xff1a;使用Spring Boot开发一个web应用&a…
最新文章