图聚类到图卷积神经网络(一)
图数据(0,1板块)
目录:
0、引入
1、图数据
1.1 何为图数据
1.2 图相关的理论铺垫
1.2.1 线性代数——从矩阵的乘法到以特征向量为基的线性变换
1.2.2 谱图理论
1.3 图数据应用——谱聚类
第1板块 总结
2、图卷积神经网络综述
3、图卷积神经网络的实践
0.引入——卷积神经网络到图数据
卷积神经网络的发展极大促进了深度学习的发展,广泛应用于图像识别和自然语言处理领域,卷积神经网络几乎能做到将很多问题毕其功于一役,以下特点可谓功不可没:
1、利用平移不变性抽取局部的特征——局部不变性
2、通过多层的卷积来实现低级到高级抽象特征的抽取
3、权重共享,降低训练成本
卷积神经网络已经为很多种数据类型的深度学习任务,诸如图像、文本等领域带来了飞跃式的发展,而机器学习中一类广泛而特殊的数据——图数据,具备典型的局部连接特征,人们开始思考卷积神经网络应用于此可行性。
1.图数据
1.1 何为图数据
重点是节点、边、邻接矩阵、度矩阵、拉普拉斯矩阵的概念
何谓图?图由节点和边构成,节点和边都带有自己的特征信息。下面是大头之前做过的一个国际贸易额可视化图:
图数据主要包含以下构成:
- 节点的特征数据,假设有个节点,不妨记为,其中为来自节点的维特征,。看图来说,节点数据可以是国家进出口贸易总额、国家GDP、国家人口数等等
- 节点的邻居关系。对于无向图来说,邻接矩阵由表示,,表示节点和之间存在边连接,反之表示两点之间无连接。看图来说,就是两个国家之间是否有贸易往来。
- 节点之间的关系信息。常见于含权重的邻接矩阵,此处我们单独定义节点之间关系权重矩阵,权重矩阵描述的是边的特征信息。看图来说可以是国家之间的进出口贸易额,表示中美贸易额。
- 节点的度信息。用矩阵表示,这是一个对角阵。对于无向图来说,第个节点节点与节点相连,那么其节点的度就是。
- 节点的加权度信息,用矩阵表示,也是对角阵,
图数据具有典型的局部连接结构,适用于抽取多尺度的局部特征,再组合成具有强表示能力的特征。但是图数据由于其本身特性,传统的CNN的卷积核并不适用,主要原因是图数据不具备规则的欧几里得空间结构,节点之间不具备稳定的局部位置关系。类比图片随着节点index排序的变化,相同的图会呈现完全迥异的欧几里得空间结构,并且每个节点周围的邻居节点数也是不一样的,因此直接的CNN到GCN是无法迁移的。
1.2 图相关的理论铺垫
1.2.1 线性代数——从矩阵的乘法到以特征向量为基的线性变换
首先从矩阵的乘法说起,我一直是这样理解一个矩阵的乘法的,无论是矩阵还是向量左乘以一个矩阵时候,其结果都是以矩阵的列向量作为基(或者坐标轴),以右乘的对象作为坐标,在这组基张成的线性空间里构造一个对象。以我们常见的向量为例,向量并不只是单纯的一个向量,而是,其中是规模合适的单位阵,也就是说我们的向量是某个不露面的向量在基于单位矩阵列向量这组正交基下的一组坐标。
更进一步,做给定矩阵,规模合适的列向量,我们令,其实基于上文所述,可改写为,关于这个矩阵乘法,可以理解为我们在矩阵的列向量作为基,以向量各维度标量的数值作为坐标,生成的线性空间中的对象,该对象在单位矩阵列向量的正交基下的坐标表示为。
再进一步,对于一个向量,其本质上是某个线性空间的对象在单位矩阵正交基下的坐标表示,那么我们如何将这个对象转化为以某个可逆矩阵为基下的坐标表示呢?下面填空题就来了:,答案是,如果一个向量在单位矩阵为基下的坐标表示为,那么其在的列向量为基之下的坐标表示就为:。如果这个矩阵恰好是一个正交阵,那么自然有,某向量在单位矩阵为基下的坐标表示,那其在正交阵下的表示为.
举个不是那么雅观的例子,线性空间里面的某个对象,就像是现实中的一头猪,猪的坐标就像是我们在给猪拍照,猪的官方照——也就是这个线性空间的对象在单位矩阵为基下的坐标表示,是最常用的也是约定俗成的即,然后我们可以调整镜头,在不同的坐标系下去看这头猪,拍下形色各异的照片,但是猪就是这一头猪,不管在什么样的视角——矩阵左乘,拍出什么样的照片——该组基下的坐标,这头猪都是同一头猪,从头到尾都是这一头猪——
基于以上叙述,让我们再换一个更深入的视角来重新审视矩阵的乘法,矩阵乘法带来了什么样的线性变换。我们针对一个可以特征对角化的矩阵来说,,矩阵乘法可以通过特征对角化分解为:,据前文所述,是将单位阵为基下向量的坐标基变换到了矩阵之下的坐标,随后我们通过特征对角阵对基变换后的坐标逐个维度根据矩阵的特征值做了拉伸,拉伸过后的坐标,依旧是在矩阵为基下的坐标,最后我们左乘矩阵,将拉伸后的坐标基变换到单位矩阵坐标系下。至此我们将某个矩阵乘以一个向量分解为:
- ——基变换到坐标系S下
- ——新坐标系下的坐标根据矩阵特征值逐维度做拉伸
- ——逐维度拉伸后再将拉伸后坐标转移回单位阵坐标系下
由此我们可以看到,左乘以某个矩阵,作为一个线性变换,对变换的对象做了如上的一些操作,这里我们需要注意,只是更换坐标系是不会从本质上对变换对象产生影响的——换个角度去看猪,猪还是那头猪,真正对变换对象产生影响的是特征对角阵。这里我们不妨把特征对角阵换成一个单位矩阵,言外之意是我们对基变换后的向量各维度不做拉伸保持原样,变换如下:
向量看破一切地表示,我还是原来那个我,只要你不拉伸,左乘的矩阵的特征对角阵是个单位阵,那经历这个变换后,注定还是那个我。这也暗含了一个讯息:如果一个矩阵的特征值全为1,那么这个矩阵必然为单位阵,即。
最后我们来探讨一个问题,如果一个向量多次左乘同一个矩阵回来带什么样的效果?
可见当k趋于无穷时,若矩阵的最大特征值,会无限趋近于矩阵最大特征值的特征向量方向,其他方向的拉伸相较于最大特征向量方向的拉伸将会不值一提。这也很明白的解释了在马尔科夫转移阵里面,如果存在一个稳定状态,那么稳定状态也一定是马尔科夫阵最大特征值得特征向量方向。
1.2.2 谱图理论
(1)矩阵的乘法意味着线性变化,节点特征向量左乘以邻接矩阵、拉普拉斯矩阵都意味对节点特征进行怎样的变换?
由于我们在进行图卷积神经网络相关的分析时候,面对的对象都是诸如邻接矩阵、度矩阵、拉普拉斯矩阵等,因此在介绍图卷积神经网络之前,先对谱图理论展开介绍。
首先,对于一个无向图,节点数据为,度矩阵,邻接矩阵,邻接矩阵和度矩阵满足关系
定义拉普拉斯矩阵满足。
节点数据左乘邻接矩阵或者是拉普拉斯矩阵,都是在做将节点邻居的数据汇总到中心节点的变换。具体来看,对于标准化后的邻接矩阵:
即经过左乘邻接矩阵,将节点数据更新为与节点相连的节点的数据的平均值。对于标准化后的拉普拉斯矩阵,拉普拉斯矩阵的标准化,常用的标准化方法有两种,一种是对称标准化,另一类是做成度矩阵的逆来做标准化。此处我们采取第一种标准化,有:
即经过左乘拉普拉斯矩阵,将节点数据更新为中心节点和周围节点的加权平均差异。这也是在拉普拉斯算子用于图像分割的主要原理,图像上的拉普拉斯算子是围绕中心节点和周围节点的二阶差分,如果中心节点和周围节点和差异很大,这意味着中心节点位于不同的色块的交界处。
(2)拉普拉斯矩阵的谱分解
这里的谱分解是从信号角度去理解拉普拉斯矩阵,就其本质就是对拉普拉斯矩阵做特征对角化,特征向量类比信号处理中的频率,是某个基,类似小波基、傅里叶基等;特征值就是频谱,反映了这个频率或者基的重要性程度,绝对值最大的特征值的绝对值就是矩阵的谱半径。这些都是很直观的概念,只是换了个说法。
关于拉普拉斯矩阵的特征值,对于标准化以后的拉普拉斯矩阵,将其特征值从小到大排序,,则有:
1. ,拉普拉斯矩阵满足半正定性
[证明]意味着拉普拉斯矩阵是半正定的,对任意向量,满足:
由二次型的非负性,易得半正定性。且由拉普拉斯矩阵满足:
易得拉普拉斯矩阵存在一个特征向量[1,1,1...1]^T,其对应的特征值为0,即拉普拉斯矩阵最小的特征值
- 当且仅当图有k个联通区域,特征值为零的数量对应着联通区域的数量。此处不加证明地说明,拉普拉斯矩阵具有k重0特征值的时候,说明图中有k个独立的联通分量,0特征值对应的特征向量即为各个联通分量的节点组合,例如该特征值意味着第4,6,7个节点彼此联通且不和其他节点联通
1.3 图数据应用——谱聚类
在介绍过谱图理论的基本内容之后,我们来看一些应用的内容,在无向图上基于拉普拉斯矩阵的谱聚类。
1. 聚类的两种思路
聚类方法一般有两种思路:
- 样本点在空间中的距离,根据节点的特征取值,即节点在特征空间中的位置进行聚类,例如k-means,层次聚类,GMM(高斯混合模型),SOM(自组织映射神经网络)等,其定义的等距离关系都是一个高维空间的低维球面。
- 节点之间的关系强度,可以不必给出节点在特征空间的位置,只依据节点之间的关系(距离)来实现聚类,这类聚类以谱聚类为代表。
基于空间重点的位置的第一种思路只能处理特征空间中的凸集,基于节点之间的关系的聚类方法却没有这个限制,在数据的适用性上更广泛一些,下面两幅图片分别是特征空间的凸集数据和非凸集数据,谱聚类的方法两种情况下都会适用。
注:其实这里我们还会有一类思路,我们可以利用SNE或者t-SNE的方法将原本不满足非凸的数据,转换为凸集,这样很多是适用于凸集的方法便可以派上用场。SNE和t_SNE选择高斯分布或者t分布作为拟合的分布,天然就带来了转换非凸的效果。由此看来,t-SNE的方法不仅仅可以实现数据的降维,还可以进行数据形态的变换。
2、谱聚类时距离的定义
谱聚类根据节点之间的距离关系来聚类,距离的定义可以是样本特征空间的欧氏距离,也可以是样本特征向量的夹角余弦值,也可以是径向基函数等定义的特殊距离。给定无向图,节点,边数据,记录样本间距离的矩阵为加权的邻接矩阵,其元素表示的是节点、之间的距离。在加权的邻接矩阵下,我们定义度矩阵为,其中
3、对图做切分
进行图聚类时,我们要做的是对图中的节点进行切分,这样的切分势必会切断节点之间边的联系,如果我们能够根据这个切断的联系来构造一个损失函数,那我们追求的就是是切断损失最小的图的切分,下面我们以二切分为例,再说明下这个问题。
如上图,加入我们要把一整个图一分为二,那么理应选择一个切分,只截断最少的边,切分生成如上图的两个子图,两个子图之间的连接尽可能少,连接尽可能保留在子图内部。我们定义子图之间的的连接权值:
其中为带权重的邻接矩阵,我们要追求对于AB最优划分,令子图之间连接,即最小,问题转化为:
将问题推广到寻找一张图最优的K个子图的最优划分,那么我们追求的就是子图之间的连接权重的最小化,下面定义这k个子图之间的连接权重为:
其中表示子图在图上的补集,这样我们就把划分问题转为了一个优化求最小值的问题。但是直接这样处理会带来一些问题,我们没有对划分的损失函数针对子图的规模做加权平均处理,因此不可避免地子图越大损失函数越大,算法更倾向于将单独的点划分为独立的图,为了避免这个问题,我们对子图之间的连接权重做加权处理,该方法称为Normalized cut。
4、Normalized Cut
相较于之前的划分方式,此处我们计算子图之间的连接权重时,通过子图内部的节点的度数据之和进行加权,记节点的度为,Normalized Cut计算方式如下:
谱聚类的模型便是:
引入指示变量矩阵:
其中y_{i,j}表示第i个样本属于第j个子图划分。指示矩阵满足性质:
对于y_iy_i^T,若y_i属于k类,则仅在对角线的位置上为1,其他位置均为零,由此可知累加为对角阵,若记为属于第k个划分的节点数,则
为方便书写,我们记,所以:
将Ncut写成矩阵的形式:
下面我们尝试给矩阵、换一个表达,由于,由前文关于的叙述,我们可以将矩阵P写作:
对于矩阵O,我们记全部节点的图为V:
其中第一项我们已经给出过了,等于,第二项可以写成,这是因为:
矩阵对角线元素为:
即对角线元素和矩阵O是相同的,故我们这里进行迹运算,结果是一样的。综上所述,在对矩阵列向量仅有一维度为1其他维度为0的约束下,求解最优化问题:
以上形式刚好是广义瑞利商的形式,我们不加证明来看下广义瑞利商的性质:
由此我们可以确定我们的矩阵Y的行向量为拉普拉斯矩阵的n个特征向量中的k个,由瑞利商的性质可知,除了特征向量之外,当我们选定特征值最小的其他k个对应的特征向量来构成我们的矩阵Y时,我们的求和式目标函数取得最小值。这里的思路和我们通过过定义损失函数来逐个求解主成分分析的主成分时一样。
至此我们已经说明了谱聚类的完整过程,谱聚类的运用很简单,只需要围绕拉普拉斯矩阵做特征对角化求解特征值和特征向量即可,但是求解谱聚类的过程蕴含的思想对于理解图数据很有意义。
注:关于瑞利商的推导和应用我们另写文章
总结
关于图数据的分析集中在围绕反映图结构的拉普拉斯矩阵的分析中,核心对象是拉普拉斯矩阵的特征值、特征向量,从信号处理的角度审视,将矩阵线性空间的基和变化拉伸程度转换为频率和频率的重要性程度,但是换汤不换药,其本质还是矩阵的特征分解,还是落脚在对于矩阵运算的理解上。因此我们在这个版块里花了大量的笔墨去讲述理解矩阵乘法的全新视角,这是很有意义的一件事。
关于图卷积神经网络的思想,一言以蔽之,空域卷积是基于权重矩阵非零元素的整体的一个卷积操作,参数很多,缺少权重共享降低运算量;频谱方法下的卷积,从信号处理角度理解,是对频率的一个滤波操作,通过构建不同的频率滤波器来提取不同特征,简单说就是通过给拉普拉斯矩阵换个特征对角阵来实现滤波操作;其他的基于切比雪夫不等式的方法,都是为了提升运算的效率而采用的频谱方法的简化。关于图卷积神经网络的内容我们将在下一个板块里详细展开。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律