【Pytorch神经网络理论篇】 29 图卷积模型的缺陷+弥补方案

同学你好!本文章于2021年末编写,获得广泛的好评!

故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现,

Pytorch深度学习·理论篇(2023版)目录地址为:

CSDN独家 | 全网首发 | Pytorch深度学习·理论篇(2023版)目录本专栏将通过系统的深度学习实例,从可解释性的角度对深度学习的原理进行讲解与分析,通过将深度学习知识与Pytorch的高效结合,帮助各位新入门的读者理解深度学习各个模板之间的关系,这些均是在Pytorch上实现的,可以有效的结合当前各位研究生的研究方向,设计人工智能的各个领域,是经过一年时间打磨的精品专栏!https://v9999.blog.csdn.net/article/details/127587345欢迎大家订阅(2023版)理论篇

以下为2021版原文~~~~

 

图卷积模型在每个全连接网络层的结果中加入了样本间的特征计算。其述质是依赖深度学特征与缺陷。

1.1 全连接网络的特征与缺陷

多层全连接神经网络被称为万能的拟合神经网络。先在单个网络层中用多个神经元节点实现低维的数据拟合,再通过多层叠加的方式对低维拟合能力进行综合,从而在理论上实现对任意数据的特征拟合。

图10-12左侧的两幅图表示前一层的两个神经元节点将数据在各自的直角坐标系中分成了两类。

图10-12中右侧的图表示后一层神经元将前一层的两个神经元结果融合到一起,实现最终的分类结果。

1.1.1 缺陷①:容易过拟合

从理论上来讲,如果全连接神经网络的层数和节点足够多,那么可以对任意数据进行拟合。然而,这一问题又会带来模型的过拟合问题。全连接神经网络不但会对正常的数据进行拟合,而且会对训练中的批次、样本中的噪声、样本中的非主要特征属性等进行拟合。这会使模型仅能使用在训练数据集上,无法用在类似于训练数据集的其他数据集上。

1.1.2 缺陷②:模型过大且不容易训练

目前,训练模型的主要方法都是反向链式求导,这使得全连接神经网络一旦拥有过多层数,就很难训练出来(一般只能支持6层以内)。即使使用BN分布式逐层训练等方式保证了多层训练的可行性,也无法承受模型中过多的参数带来的计算压力和对模型运行时的算力需求。

1.2 图卷积模型的缺陷(依赖于全连接网络的图模型的通病)

图卷积只是按照具有顶点关系信息的卷积核在每层的全连接网络上额外做一次过滤。

因为在图卷积模型中,也使用反向链式求导的方式进行训练,对图卷积模型深度的支持一般也只能到6层。

图卷积模型在层数受限的同时,也会存在参数过多且容易过拟合的问题。该问题也存在于GAT模型中。

1.3 弥补图卷积模型缺陷的方法(与全连接网络相同)

1.3.1 图卷积模型的层数受限

使用BN、分布式逐层训练等方法

1.3.2 图卷积模型容易出现过拟合

可以使用Dropout、正则化等方法,BN也有提高泛化能力的功能。

1.3.3 参数过多

使用卷积操作代替全连接的特征计算部分,使用参数共享来减小权重。

1.3.4 使用更好的模型

在图神经网络领域,还有一些更好的模型(例如SGC、GfNN和DGl等模型)。它们利用图的特性,从结构上对图卷积模型进行了进一步的优化,在修复图卷积模型原有缺陷的同时,又表现出了更好的性能。

1.4 从图结构角度理解图卷积原理及缺陷

图卷积模型的缺陷,其思路是将图结构数据当作矩阵数据,在规整的矩阵数据基础之上融合深度学习的计算方法。

在DGL库中实现的图卷积方法是基于图结构(空间域)的方式进行处理的。从效率角度来看,这样做有更大的优势,也更符合图计算的特点。

从基于图顶点传播的角度来看,图神经网络的过程可以理解为:基于顶点的局部邻居信息对顶点进行特征聚合,即将每个顶点及其周围顶点的信息聚合到一起以覆盖原顶点。

1.4.1 图神经网络的计算过程

如下图所示,描述目标顶点A在图神经网络中的计算过程:对于每一次计算,目标顶点A都对周围顶点特征执行一次聚合操作(任意深度)。

 1.4.2 图卷积神经网络无法搭建过多层的原因

图卷积神经网络可以理解为每次执行聚合操作时都要对特征进行一次全连接的变换,并对聚合后的结果取平均值。层数过深会导致每个顶点对周围邻居的聚合次数过多。这种做法会导致所有顶点的值越来越相似,最终会收敛到同一个值,无法区分每个顶点的个性特征。

1.4.3 图注意力机制也存在无法搭建过多层的情况

图注意力机制中与图卷积的结构几乎一致,只不过是在顶点聚合的过程中对邻居顶点加入了一个权重比例。

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

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

相关文章

【Pytorch神经网络实战案例】22 基于Cora数据集实现图注意力神经网络GAT的论文分类

注意力机制的特点是,它的输入向量长度可变,通过将注意力集中在最相关的部分来做出决定。注意力机制结合RNN或者CNN的方法。 1 实战描述 【主要目的:将注意力机制用在图神经网络中,完成图注意力神经网络的结构和搭建】 1.1 实现…

用OC和Swift一起说说二叉树

前言: 一:在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。二&#xf…

【Pytorch神经网络理论篇】 30 图片分类模型:Inception模型

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

mtk pwmlinux timer

pwm控制还是有很多要注意的地方 附上驱动的代码 /** drivers/leds/leds-mt65xx.c** This file is subject to the terms and conditions of the GNU General Public* License. See the file COPYING in the main directory of this archive for* more details.** Hydrodent …

【Pytorch神经网络理论篇】 31 图片分类模型:ResNet模型+DenseNet模型+EffcientNet模型

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

CentOS7 编译安装golang和rpm安装golang

编译安装 1、下载golang二进制安装包: https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz 2、解压安装包到指定目录,此处以解压到/usr/local目录下为例: 1 tar -C /usr/local -xzf ../packages/go1.8.linux-amd64.tar.gz 3、在…

Class_fileAndroid应用调用方法

java代码调用 fos.write这里面是byte类型的 + private static final String LEDBLPATH="/sys/class/hdyrodent_charger_led/brightness"; + private final void SetChargerLedBrightness(String path,int brightness) + { + try{ + …

【Pytorch神经网络理论篇】 32 PNASNet模型:深层可分离卷积+组卷积+空洞卷积

1 PNASNet模型简介 PNASNet模型是Google公司的AutoML架构自动搜索所产生的模型,它使用渐进式网络架构搜索技术,并通过迭代自学习的方式,来寻找最优网络结构。即用机器来设计机器学习算法,使得它能够更好地服务于用户提供的数据。该…

s5k5e2ya MIPI 摄像头调试

1、驱动移植的话按照我之前的文章来做 驱动里面注意是几路的lane,一般mipi的话是差分信号,2路和4路是比较常见的。2、mipi波形 很明显上面的波形是不正确的。dp dn有一个都成了正弦波了。 首先,我们要找一下正确的波形 正确的波形应该是DP和DN不会同时…

css那些事儿4 背景图像

background:背景颜色,图像,平铺方式,大小,位置 能够显示背景区域即为盒子模型的填充和内容部分,其中背景图像将会覆盖背景颜色。常见的水平或垂直渐变颜色背景通常使用水平或垂直渐变的背景图像在水平或垂直方向平铺&a…

用Android UEventObserver监听内核event

很多时候我们在框架上层需要知道内核中某些事件的状态,用设备的show属性是可以供上层来查询,但是这需要上层设定一个较耗资源的循环。如果用UEventObserver就可以监听内核event,它是android Java层利用uevent与获取Kernel层状态变化的机制。 …

【Pytorch神经网络实战案例】23 使用ImagNet的预训练模型识别图片内容

1 案例基本工具概述 1.1 数据集简介 Imagenet数据集共有1000个类别,表明该数据集上的预训练模型最多可以输出1000种不同的分类结果。 Imagenet数据集是目前深度学习图像领域应用得非常多的一个领域,关于图像分类、定位、检测等研究工作大多基于此数据…

杂谈转载

一、什么是运行时(Runtime)? 运行时是苹果提供的纯C语言的开发库(运行时是一种非常牛逼、开发中经常用到的底层技术)二、运行时的作用? 能获得某个类的所有成员变量能获得某个类的所有属性能获得某个类的所有方法交换…

Linux中的工作队列

工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。 工作队列是2.6内核开始引入的机制,在2.6.20之后…

【Pytorch神经网络实战案例】24 基于迁移学习识别多种鸟类(CUB-200数据集)

1 迁移学习 在实际开发中,常会使用迁移学习将预训练模型中的特征提取能力转移到自己的模型中。 1.1 迁移学习定义 迁移学习指将在一个任务上训练完成的模型进行简单的修改,再用另一个任务的数据继续训练,使之能够完成新的任务。 1.1.1 迁…

linux工作队列

这里对Linux的工作队列(work_queue)不做深层次的挖掘,只对如何使用它以及一些简单的结构做简单地介绍。 Linux源代码(3.0.8)中和工作队列(work_queue)相关的结构主要在 include/linux/workqueue.h这个头文件中,这里就不摘抄了。这里就直接给出例子代码…

【Pytorch神经网络理论篇】 33 基于图片内容处理的机器视觉:目标检测+图片分割+非极大值抑制+Mask R-CNN模型

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

linux inputuevent使用

input 输入子系统 在应用层使用的时候,容易出现找不到UEventObserver.java 这时候就要导入jar包 导入classes.jar这个jar包 weiqifaweiqifa-Inspiron-3847:~/weiqifa/tm100$ ls out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/ classes classes…

linq中给字段添加别名

linq 是我们在查询中经常回用到的一种形式,比如我们创建一个类,然后List<添加> 并绑定到表格中public class Modeltest{string id;public string Id{get { return id; }set { id value; }}string pwd;public string Pwd{get { return pwd; }set { pwd value; }}string…

报错 ValueError: too many values to unpack (expected 2)

enc_output,enc_slf_attn self.slf_attn(user_embedding,item_input,item_input,mask slf_attn_mask) 实际上只有一个返回值&#xff0c;但是却写了两个返回值&#xff0c;所以报错。 改正为 enc_output self.slf_attn(user_embedding,item_input,item_input,mask sl…