GCN公式中特征矩阵和邻接矩阵的处理

https://mp.weixin.qq.com/s?__biz=MzI0ODcxODk5OA==&mid=2247509797&idx=4&sn=0f356b8f6397ad6e0743e192ed182ede&chksm=e99e94dcdee91dcad9bc842ed129b27e7cfe649fc3407e21e7e0c05060c7f6daf346d628f189&mpshare=1&scene=23&srcid=0617GtNIERqCMkhtX86AYoQT&sharer_sharetime=1592462563389&sharer_shareid=e86114a67c6fd4cc487612c2aee2695b#rd
通俗易懂:图卷积神经网络入门详解——阅读学习,李社蕾老师荐
作者开篇导读,正中心痛。怀着崇拜和必胜的信念尝试融入,结果不断地给数学跪,给公式跪,给算法跪。正在放弃的边缘不甘心,看到这句——尝试一次放弃一次,尝试一次放弃一次,终于,慢慢理解了。
好吧,期待,我得慢慢理解早日到来。
GCN,首次提出于2017年。
深度学习经典模型:CNN卷积神经网络,RNN递归神经网络。
————————————————————————————————
——引【深度学习】CNN与RNN有什么不同?
https://blog.csdn.net/weixin_42137700/article/details/83241774
CNN如同眼睛一样,是目前机器用来识别对象的图像处理器,RNN则是用于解析语言模式的数学引擎,就像耳朵和嘴巴。CNN迎来快速发展,已成为当今自动驾驶汽车、石油勘探和聚变能研究领域的“眼睛”。在医学成像方面,它们可以帮助更快地发现疾病并挽救生命。
如今,数十亿人也在不知不觉中享受着CNN带来的便利:在Facebook上发布朋友的照片,使用自动标记姓名的功能,同时也让自己的社交活动变得更加顺畅。
RNN正在加速基于语音的计算革命。它们是自然语言处理大脑,可为Amazon Alexa、Google Assistant和Apple Siri提供听力和语音。它们为Google的自动完成功能提供预见性,可以自行填写搜索查询中的行。

卷积层:
在数学中,卷积是一种分组函数。就CNN而言,卷积发生在两个矩阵(以列和行排列的矩形数组)之间,它可以形成第三个矩阵作为输出。
CNN在卷积层中使用这些卷积来筛选输入数据并查找信息。起着数学过滤器的作用,帮助计算机查找图像边缘、明暗区、颜色及其他细节(例如高度、宽度和深度)。一张图像上通常会应用多种卷积层过滤器。
…池化层:池化层通常夹在卷积层之间。它们将用于缩减卷积层所创建的表示的大小,同时减少内存需求,从而实现更多的卷积层。
…归一化层:归一化是一项用于改进神经网络性能和稳定性的技术。它通过将所有输入都转换为均值为0且方差为1,从而使每个层的输入更便于管理。可以将其视为数据的规范化调整。
…全连接层:全连接层用于将一层中的各个神经元连接到另一层中的所有神经元。
CNN可以在这些隐含层中使用一系列过滤器(或神经元),从而优化图像识别效率。CNN 被称为“前馈”神经网络,因为信息是从一层馈送至下一层。

以下是一个简单RNN的典型例子。自助餐厅对每周同一天供应的菜品有严格的时间表,RNN的目的是追踪供应主菜的日期。不妨设想如下:周一为汉堡,周二为炸玉米饼,周三为披萨,周四为寿司,周五则为意大利面。
对于RNN而言,如果将“寿司”(输出)反馈至网络以确定周五的菜品,那么RNN就会知道序列中的下一个主菜是意大利面(因为它知道会有一个顺序,而周四的菜品刚刚完成,因此接下来就应该是周五的菜品)。
另一个示例是句子:我刚跑了10公里,需要来一杯____。人类可以根据过去的经验来猜想如何填空。得益于RNN的记忆功能,它可以预测接下来会发生什么,因为它对类似这样以“水”结束的句子已有足够的训练记忆,完全可以做出解答。
RNN的应用不仅限于自然语言处理和语音识别。它们还可用于语言翻译、股票预测和算法交易。
如今,CNN和RNN已经让应用程序、网络和机器远远超越了视觉和语音能力。没有这两个AI主力军,我们的机器就会无聊之至。


可见,CNN——计算机视觉CV领域的成就,RNN——自然语言处理NLP领域的成就。GNN呢?解决CNN和RNN无法解决或者难以解决的问题:图结构的数据。
基于欧式空间的二维图片或者一维语言序列,结构规则。比如卷积核小窗口在图片上平移卷积提取图片特征,无论移动到哪里,内部结构不发生变化,这样就可以实现参数共享。
而现实中,不规则的拓扑结构、社交网络、知识图谱、化学分子等,语言结构中复杂的树形结构等,微二维图片上的关键点形成的,都是图结构,是无限维度的不规则图结构,这类图结构的数据处理方法之一就是 GCN。
类似于 CNN,GCN作为特征提取器,设计从图数据中提取特征的 方法,提取并使用特征进行图数据的各种利用,比如——节点分类(node classification)、图分类(graph classification)、边预测(link prediction),还可以顺便得到图的嵌入表示(graph embedding)。————————————————————————
GCN的本质:
已知一批图数据有N个节点,每个节点有自己的特征值。可以获得两个矩阵
1.提取N个节点的特征形成NxD的矩阵X
2.邻接矩阵,节点之间的关系形成的NxN维矩阵A
GCN神经网络层,每一层的特征H,对于输入层的话,H就是X。根据邻接矩阵A和单位矩阵I做A+I,得到A波浪。再用A波浪和它的度矩阵D波浪得出一个公式。用这个公式和输入层节点特征的矩阵X以及赋予一定的权重,作为参数赋给非线性激活函数在这里插入图片描述
就可以提取到下一层的特征。经过若干层后,特征从X变成Z,但是节点之间的关系即邻接矩阵经过多层后依然是共享的。

构造一个两层的GCN,介入某一损失函数,就可以做节点分类、图分类、边预测等训练。
————————————————————————
带标签的节点——海量论文数据,每篇论文为一个节点,都有自己的关键词,视为节点特征;同时每篇论文都有自己的研究领域如教育类、机器学习类、医学类等,这些可视为标签。论文之间有相互的引用关系视为邻接矩阵。通过对引用关系和关键词进行多层训练,最后可训练得出节点标签的相关模型。最终拿出一篇论文就知道它是那个领域的。
————————————————————————
为什么GCN的公式是这样子
tkipf.github.io/graph-c
推导解释——GCN每一层的输入都是节点特征矩阵H和邻接矩阵A,直接将这两个做内积,再乘以一个参数矩阵W,用激活函数激活,就形成一个简单的神经网络层。

对邻接矩阵的处理1——但是因为邻接矩阵的对角都是0,和特征矩阵内积相当于将邻接矩阵做了加权和,节点特征的值成为了邻接矩阵的权,自身的特征被忽略。为避免这种情况,可以先给A加上一个单位矩阵I,单位矩阵。它是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为1。除此以外全都为0。这样,使得邻接矩阵的对角元素变成1。
对邻接矩阵的处理2——就算如此,因为邻接矩阵A没有经过归一化处理,这样难以将数据限制在我们需要的范围内。通过归一化处理,可以将数据变得具有可比性,但又相对保持数据之间的关系。使得原来很难在一张纸上做出的图更方便给出图上的相对位置。因此,为了避免邻接矩阵和特征矩阵内积相乘改变特征原本的分布,需要我们对A做一个标准化处理。首先,给A乘以度矩阵上标-1,进一步将其拆为两个度矩阵的上标-1/2,得到对称且归一化的矩阵——(度矩阵D上标-1/2)乘以(对称矩阵A)乘以(度矩阵D上标-1/2)。

通过以上处理后,即使不训练,完全用随机初始化的参数W,GCN提取出来的特征就十分优秀了。
——————————————————————————
图的一些基本知识:图,邻居,度矩阵,邻接矩阵
https://blog.csdn.net/luzaijiaoxia0618/article/details/104718146/
关联矩阵,拉普拉斯矩阵
https://blog.csdn.net/luzaijiaoxia0618/article/details/104720948
opencv笔记(二十八)——OpenCV中矩阵的归一化
https://blog.csdn.net/qq_37764129/article/details/82313507

你可能感兴趣的:(GCN公式中特征矩阵和邻接矩阵的处理)