CNN的复习 + 初探GNN图神经网络

目录

  • 卷积神经网络的复习
  • GNN图神经网络
    • 输入
    • 输出
    • 图神经网络本身
  • Recurrent GNN (循环GNN)

卷积神经网络的复习

就是我们用同一个函数,去在不同的位置和原图进行乘积再相加,得到了一个新的值,这就是卷积的概念

卷积通常用来降维,有时候输入的维度太大,我们不想要这么多维,就卷积一下
在做卷积的时候,有对边界的处理
CNN的复习 + 初探GNN图神经网络_第1张图片
补多少的话,这里有个公式
CNN的复习 + 初探GNN图神经网络_第2张图片
如果想让输入输出维度相同的话,就把这里的设成W,就可以算出要补多少0

接下来就是池化,池化其实 就是资源整合,池化之后 再次进行卷积时,卷积核的个数与第一次卷积不一定相同。

池化后将之扁平化,然后进入全连接层,全连接层就是我们上一篇说的普通的前馈神经网络

CNN的复习 + 初探GNN图神经网络_第3张图片
特别值得注意的是,这里有一个with dropout
大家都知道神经网络在特征加多了之后,很容易出现过拟合的问题,过拟合就是,你在训练的时候效果很好,当你去验证的时候,就会发现新的数据是没有办法得到很好的结果的。为了防止过拟合的现象,大家通常会使用所谓的正则化的方法。
dropout就是一种针对神经网络的正则化方法

就比如我的dropout rate是0.5,就是说我在训练中有百分之五十的这一层输入我是不看的,也就是在做参数训练的时候,我是不看百分之五十的输出的(如下图),等我训练完之后,我是所有的输入都看得,但是我会降一下训练出的权值大小,如果我的dropout rate是0.5的话,最后训练出来的所有weight都降二分之一最后就可以得到一个正确的拟合输出。
举个不太恰当得栗子,就是假设大家都去公司上班,我每天早上投硬币来决定自己今天去不去上班,这个居然对公司有好处。这个听上去很奇怪。就是说,如果我随机让一些神经元不工作,反而会对我的训练结果有好处
解释一下的话就是,如果公司里的每一个人都是可以随时请假随时走的话,其实说明这个公司所有东西的知识都不只掌握在一个人手里,没有缺哪一个人就没有办法运行的情况。所以它的鲁棒性比较好。那么,有dropout的神经网络在训练当中,就在强迫每一个神经元都可以承担更多的责任。因为它不太能依赖其他的神经元。因为其他的神经元有时候时在时不在,所以独立性就更好,这样就导致每一个神经元,其实能够更快得被训练到一个有价值的状态,

CNN的复习 + 初探GNN图神经网络_第4张图片
后来,人们就感觉神经网络可能会越深越好,但是过了不久,发现 不行,要有一些新的变化,就出现了resent
CNN的复习 + 初探GNN图神经网络_第5张图片
其实就是用两个卷积神经网络之后,我再加一个跳了之后的输入也就是我可以把直接输入和输出连起来,中间把它跳掉。
如图
CNN的复习 + 初探GNN图神经网络_第6张图片

感觉上好像把神经网络架构变潜了。但是神奇的是,这样的网络会训练起来更快更好。生物的神经网络其实本来就没有这么整齐,而且也不像我们人工的神经网络这么可靠,所以可能我们天然的神经网络就自然地实现了所谓的resent,就是它有跳跃层。就是它有的神经可能连到下一层去了,不是严格地一层一层连地,也就是它层的概念没有这么明显。
它可能也没有多么可靠它可能并不是每一次的信号强度一样,或者是结果一定,所以一定层度上它也去实现了dropout。

最后再来回忆一下CNN训练的过程

其实卷积神经网络的训练跟之前普通神经网络的训练没有什么本质上的区别,需要特别注意的就是它对内存的需求,卷积神经网络听上去比普通的前馈神经网络好像要容易一些,因为好像只有卷积核的参数需要训练,并不是用一个全连接层从头到尾。
但是图像通常都比较大,就算是用了卷积核,实际上的存储需求也是非常高的
CNN的复习 + 初探GNN图神经网络_第7张图片

GNN图神经网络

其实神经网络的 输入就是一个tensor,一个张量,用张量来表示的这些问题,有时候也是可以被表示成一个图的。图像的话,通常我们认为它是一个二维数据,当然,像是RGB的话,可能是一个三维数据,我们之前是把它表示成一个张量的形式。但是实际上这个图像本身也能当作一个图,就是每个像素点都是一个顶点,如下图
CNN的复习 + 初探GNN图神经网络_第8张图片
那更常见的现实中的图,比如社交图,交通运输图,大脑中神经网络,网页和网页之间的链接

输入

一般图神经网络的输入除了这个图本身(就是我们刚刚说的二元组之外),它通常还加入了一些东西,比如说边上的信息,或者是节点本身的信息(节点本身信息是一种更常见的输入), 比如说我做一个社交图,除了我和这个人的关系之外,我自己本身有一些特性,比如说我的年龄,性别,喜好等等,这些都可以作为我这个节点本身的一些附带的这些特征。

输出

图神经网络它的输出是什么样子的呢?
节点层面
不同的问题会有不同的输出,最常见的一个就是做节点的表示学习,我们可以利用图这个关系,来对节点这个本身做一个表示学习。换句话说就是,因为我跟这个人的互动,这个互动本身也对我这个人,产生了一定特征上的变化(近朱者赤,近墨者黑)。

边层面
我们可以利用图神经网络去看边存不存在。
比如说推荐算法,可能你想知道我这个节点和另一个节点之间存不存在互动关系,我现在没有观察到,但是根据对两个东西的理解,认为他们存在互动关系的可能性是非常非常大的,这个也是图神经网络的一个应用

应用于图本身

也就是说,我们对于网络结构本身这个图整体,也可以进行一个表示学习,我们可以对图进行分类。
以上三种就是图神经网络主要的运用方法

图神经网络本身

图神经网络分为四类
1.recurrent GNN, 就是循环的图神经网络
2.convolutional GNN, 就是卷积图神经网络
3.Graph Auto Encoder(GAE)基于图的自编码器
4.Spatial Temporal GNN时空图网络

我们主要就先说一下前两种图神经网络,第三个概括一下,第四个跟其他的本质上有许多不同,它主要应用在交通,专业性较强

Recurrent GNN (循环GNN)

你可能感兴趣的:(#,深度学习,算法,图论,c++)