深度学习模型--图神经网络复杂度分析

目录

神经网络复杂度概念

复杂度计算方法

时间复杂度计算方法

空间复杂度计算方法

分析图神经网络模型复杂度

一. GAT的模型复杂度

二.HAN异质网络的模型复杂度

三.GraphSAGE模型复杂度

四.HGAT模型复杂度

五.LSTM模型复杂度

总结


神经网络复杂度概念

  1. 时间复杂度(计算量/FLOPS)

模型运算的次数,衡量模型运行速度的快慢

  1. 空间复杂度(访存量/Bytes)

模型的参数量、衡量模型占用内存空间的大小;

复杂度计算方法

时间复杂度怎么计算? - 知乎

时间复杂度和空间复杂度及其计算方法详解

时间复杂度计算方法

一般都使用大O表示法来简化表示时间复杂度。算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))

1、复杂度为常数,如23,9999,等等 都表示为O(1)

2、复杂度包含n时,省略系数与常数项,只取n的最高阶项

如:2n+45 为 O(n) ; 4n^3+6n^2+n 为O(n^3)

3、复杂度为对数时:如log5(n)、log2(n) 等等 都表示为 O(logn)

4、省略低阶,只取高阶 (即取最大的)

如:logn+nlogn 表示为O(nlogn)

复杂度的大小

O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)

复杂度越小,则说明你的代码越好

空间复杂度计算方法

其实我们在做算法分析时,往往会忽略空间复杂度,可能是因为现在计算机的空间已经越来越便宜了,成本很低,而一台计算机的 CPU 的性能始终很难得到太大的提升。但是空间复杂度作为另一个算法性能指标,也是我们需要掌握的,这能够让程序在时间和空间上都得到优化,成为一个好的算法。

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度 。空间复杂度不是程序占用了多少bytes的空间,所以空间复杂度算的是变量的个数。空间复杂度计算规则基本跟实践复杂度类似,也使用大O渐进表示法。记做S(n)=O(f(n))。

  • 如果申请的是有限个数(常量)的变量,空间复杂度为 O(1)。
  • 如果申请的是一维数组,队列或者链表等,那么空间复杂度为 O(n)。
  • 如果申请的是二维数组,那么空间复杂度为 O(n²)。
  • 如果是在循环体中申请的数组等,可能就需要取嵌套的乘积来作为空间复杂度,这种就需要具体的进一步分析。

分析图神经网络模型复杂度

一. GAT的模型复杂度

GAT(原理、实现及计算复杂度) - 知乎

下面来推导一下GAT模型的计算复杂度,为了与主流文献中的介绍保持一致,用 |V| 表示图中的顶点数, |E| 表示图中的边数, F 表示原始的特征维度, F′ 表示输出的特征维度。

计算复杂度是由运算中的乘法次数决定的,GAT的运算主要涉及如下两个乘法运算环节:

  • 顶点的特征映射,即WhiF维的向量hi映射到F′维的空间, W 是 F×F′ 维的参数矩阵。因此, Whi 的计算复杂度是 O(F×F′) 。对于所有顶点的特征都需要进行映射,则计算复杂度为O(|V|×F×F′)
  • 计算注意力系数过程中的 a(⋅) 映射,从公式(1)可以看出,a()是将2×F维的向量映射到一个实数上,则其计算复杂度为 O(F′) 。在计算注意力系数的过程中,图有多少条边,就需要计算多少次(因为每个顶点计算与其邻居顶点的相似系数),则其计算复杂度为O(|E|×F′)

结合上面两个环节,GAT模型首先计算所有顶点的特征映射,然后计算注意力系数,后续的aggregate环节中主要都是加权求和运算,不再涉及高复杂度的乘法运算了。因此,GAT模型的计算复杂度为 O(|V|×F×F′)+O(|E|×F′)

二.HAN异质网络的模型复杂度


注意力的计算可以跨所有节点和元路径单独计算。给定元路径Φ,节点级注意的时间复杂度为O(VΦF1F2K + EΦF1K),其中K为注意头数,VΦ为节点数,EΦ为基于元路径的节点对数,F1和F2为分别是变换矩阵的行和列。总体复杂度与节点和基于元路径的节点对的数量呈线性关系。

三.GraphSAGE模型复杂度

相比之下,GraphSAGE的每批处理空间和时间复杂度固定在O(QK i=1 Si),其中Si, i∈{1,…, K}和K是用户指定的常数。在实际应用中,我们发现当K = 2且S1·S2≤500时,我们的方法可以获得较高的性能

四.HGAT模型复杂度

与GAT相比,计算注意力时候多了一个类别注意力,不过是加的关系。

  • 顶点的特征映射,即WhiF维的向量hi映射到F′维的空间, W 是 F×F′ 维的参数矩阵。因此, Whi 的计算复杂度是 O(F×F′) 。对于所有顶点的特征都需要进行映射,则计算复杂度为O(|V|×F×F′)
  • 计算注意力系数过程中的

  • 最终是讲2×F′维的向量(拼接)映射到一个实数上,则其计算复杂度为 O(F′) 。在计算注意力系数的过程中,图有多少条边,就需要计算多少次(因为每个顶点计算与其邻居顶点的相似系数),则其计算复杂度为O(|E|×F′)

结合上面两个环节,HGAT模型首先计算所有顶点的特征映射,然后计算双重注意力权重,后续的aggregate环节中主要都是加权求和运算,不再涉及高复杂度的乘法运算了。因此,HGAT模型的计算复杂度为 O(|V|×F×F′)+O(|E|×F′)

举例为啥和GAT是一样的:

[1,1,1,2,2,2,3,3,3]直接相加 和 先把1、2、3分别相加,再加一起是一样的复杂度

五.LSTM模型复杂度

序列长度*向量长度²

O ( n ⋅ d 2 ) )

总结

图网络的一些算法给出了时间复杂度的计算方法,基于注意力的主要参考GAT,对于依赖注意力衍生出来的相关模型HGAT、HetGNN、HAN等可以参考其进行计算。MAGNN和GATNE等可能是另外的计算方法(这两个模型没看过听大佬讲的)

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 深度学习是一种以模型来了解数据的机器学习技术,它利用多层神经网络来学习复杂的数据,从而实现自动的特征提取和分类等功能。卷积神经网络是一种深度学习技术,它利用卷积运算来学习像和视频信息,实现对像和视频的自动分析、识别和分类等功能。 ### 回答2: 深度学习是人工智能领域中的一种学习方法,旨在模拟人脑神经网络的工作原理。它通过建立多层的神经网络结构,利用大量数据进行训练,自动提取和学习特征,从而实现对复杂数据的分析和处理。深度学习的目标是通过不断优化网络结构和参数,使得网络能够自动地从数据中学习到更加高层次、抽象的特征表示。 而卷积神经网络(Convolutional Neural Network,CNN)是深度学习中的一种重要网络结构。CNN主要用于处理具有网格结构的数据,例如像、视频等。它通过卷积操作和池化操作,对输入数据进行特征提取和降维处理。卷积操作通过滑动的卷积核对数据进行卷积运算得到感知层,用于提取局部特征。而池化操作则通过降采样的方式减少数据维度,提高计算效率。 卷积神经网络的优势主要体现在以下几个方面:首先,卷积操作使得网络能够有效地利用输入数据的空间结构信息,从而减少参数数量,提高网络的泛化能力;其次,卷积神经网络通过多层结构,逐渐提取抽象的特征表示,能够处理具有复杂结构和高维度的数据;最后,卷积神经网络像识别、目标检测、语音识别等任务上表现出色,并在多个领域取得了重大突破。 总的来说,深度学习是一种模拟人脑神经网络的学习方法,通过建立多层网络结构从数据中获取高层次、抽象的特征表示。而卷积神经网络作为深度学习中的一种网络结构,在处理具有网格结构数据时具有重要作用,通过卷积和池化操作能够从像等数据中提取特征、降维处理,广泛应用于像识别、目标检测等领域。 ### 回答3: 深度学习是一种机器学习的方法,通过多层次的神经网络来学习和提取数据的特征。它模拟了人脑中神经元之间的信息传递和处理过程,具有优秀的自适应能力和泛化能力。 深度学习的核心是神经网络,而卷积神经网络(Convolutional Neural Network, CNN)是深度学习中的一类神经网络结构。它专门应用于处理像和语音等具有结构化数据的任务。 卷积神经网络的特点是层次化的结构,通常由输入层、卷积层、池化层和全连接层等组成。其中,卷积层通过卷积操作对输入像进行特征提取,可以捕捉到不同位置的局部特征。而池化层则通过降采样的方式减少计算量,提高特征的不变性。 卷积神经网络通过反向传播算法进行训练,不断调整网络参数以使得网络输出与真实标签之间的误差最小化。训练过程中需要大量的标注数据和计算资源,但是在训练完成后,卷积神经网络可以快速地对新的输入进行预测。 深度学习和卷积神经网络计算机视觉领域取得了很大的成功,例如像分类、目标检测、人脸识别等任务。它们不仅可以自动地提取出像中的关键特征,还可以学习到更加复杂的特征表示。此外,深度学习和卷积神经网络也在自然语言处理、语音识别等领域得到广泛应用。 尽管深度学习和卷积神经网络在很多任务上表现出色,但是其模型复杂度高、计算资源需求大,且对标注数据的依赖程度较高。因此,研究者们一直在努力寻求更高效的算法和更好的架构来解决这些问题,以进一步提升深度学习和卷积神经网络的性能和应用范围。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值