浅谈如何培养孩子的注意力(浅谈GCN)
一:GCN与GNN的区别
GNN指的是图神经网络 ,而GCN指的是图卷积网络 。在本人另一篇文章中详细讲解了GNN的应用背景和工作原理 ,在此不再赘述 ,今天主要讲解GCN 。
有人一听到“卷积 ”就两眼冒金光 ,于是CNN中的卷积操作便涌上脑中 ,但在我看来此卷积非彼卷积
,完全不是一码事 ,只是说GCN也可以做多层罢了 。 。 。如下图:
话不多说 ,下面我将分步对GCN原理进行讲解 。
二:GCN原理
※※先附上GCN的核心计算公式:
接下来 ,我将带领大家分步骤理解该公式 。Step1: 求图模型的邻接矩阵和度矩阵
对于传统的GNN ,一个图网络需要节点特征矩阵和邻接矩阵的输入 ,这样才能进行节点的聚合操作 。但是GCN中还需要引入一个度矩阵
,这个矩阵用来表示一个节点和多少个节点相关联,对于后面的步骤有巨大的作用 ,如图所示:
Step2:进行特征计算
求得矩阵
A
,
D
,
X
A,D,X
A,D,X后 ,进行特征的计算,来聚合邻居节点的信息 。GCN中的聚合方式和传统GNN中的方式有较大差异 ,这里分解为几个细节点: ① 邻接矩阵的改变邻接矩阵
A
A
A 没有考虑自身的加权 ,所以GCN中的邻接矩阵实际上等于A
A
A +单位对角矩阵I
I
I。
② 度矩阵的改变首先对度矩阵的行和列进行了归一化(具体格式看下图) ,为什么这么做呢?行归一化系数代表着节点自身的一个变化程度 ,关联的节点越少 ,系数越大 ,越容易随波主流 ,更易受别人影响 。而列归一化系数 ,代表关联节点对当前节点的影响程度 ,关系网越复杂的节点 ,它对其他节点的作用就越小 ,比如我认识一个亿万富翁 ,但富翁认识很多人,我们也就是一面之缘 ,那么能说因为我和他认识 ,我就是个百万富翁了嘛,显然有点草率了 。通过行和列归一化系数 ,相互制衡 ,秒不可言。
同时 ,归一化的系数还开了根号 ,就是因为考虑到归一化后的行和列系数都加权给了节点特征 ,均衡一点 。
③ Attention机制在部分GCN中 ,还会引入注意力机制 ,根据关联节点的重要性来分配权重 ,最后乘到邻接矩阵上 。传统计算权重的方法有两种 ,第一种方法 ,两节点特征向量直接相乘 ,关联节点都算完后 ,经过softmax算出权重值。还有第二种方法
,就是将本节点和关联节点拼接成一个特征向量后 ,传入FC中 ,最后经过softmax算出权重值 。如图所示:
Step3:训练参数
w
w
w 的加权
进行完聚合操作后,新的节点特征向量再乘上
w
w
w,往往会改变一下特征的维度 ,具体见下图:
Step 4:层数的迭代
接下来重复step1~3 ,每重复一次算一层 ,GCN正常只需要3–5层即可 ,这里就和CNN 、RNN很不一样 。因为节点每更新一次 ,感受野就变大一些 ,如果网络太深 ,那么每个节点就会受无关节点的影响 ,效果反而下降 。
正如六度分割空间理论——“只需6个人 ,你就可以认识全世界
” ,见下图所示:
三:总结
可见 ,GCN中加入了许多不同于传统GNN的新元素,达到的效果也是很好的 。github上也有相关的GCN工具包 ,安装好后便可直接使用 ,附上链接工具包地址
至此我对GCN的基本概念和工作原理,进行了简单讲解 ,希望对大家有所帮助 ,有不懂的地方或者建议 ,欢迎大家在下方留言评论 。
我是努力在CV泥潭中摸爬滚打的江南咸鱼 ,我们一起努力 ,不留遗憾!
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!