那介绍了完了g n n 的一个兴起历程之后呢
我们进正式的进入今天的学习内容
那今天就是分为两个主要是讲两个算法
g c n 和g a t
首先对之前讲解过的内容做一个简单的回顾
那在第一节课的时候呢 我们说过
图是一种统一描描述复杂事物的语言
然后实际生活当中呢也有很多事物可以用图来表示
比如说社交关系 化学分子
知识图谱推荐系统等等
那这些事物在我们图当中的节点和边是什么含义
相信大家已经非常清楚了 这里就不再多说
而我们图网络的目的呢
当然就是希望可以在呃这张图上面做一些相关的任务
假如说我们想要做节点相关的任务呢
都可以利用我们的图模网络模型
然后在图上进行一个建模学习节点特征
进而在节点特征的基础上做一些相关的任务
比如说节点分类 那呃还有关系预测等等
那呃有的同学呃想问说
那如果我想做图相关的任务要怎么做呢
那这个时候我们可以在节点特征的基础上
做Graph pooling的操作
这个Graph pooling呢就是在节点特征的基础上
比如说我们可以对这些特征取一个平均
或者说取一个加权求和
或者说指尖相加等等
从而得到整张图的一个图特征
那在得到图特征之后呢
就可以做图相关的任务
比如说图匹配 图分类等等
同时呢我们在上一节课也讲解了这个图游走类模型
并且呢在课程当中提到了
图游走类模型它的一个主要目的就是
我们先训练得到了节点的embedding
然后得到embedding 之后呢
在利用这个embedding 来做下游的任务
可以看到我们的这个图游走类模型
它是区分了两个阶段
把训练以及你的下游任务区分开来了
那对于我们这节课要讲解的这个图神经网络算法来说呢
它则是一个端到端的训练过程
不需要对这个 过程进行一个区分
也就是说你是边训练节点embedding边做你的任务
那这样做其实可以更加针对性的根据我们的这个具体任务
来进行图上的学习 和一个训练
为了方便我们后续的这个g c n 算法的一个讲解呢
我们先来回顾一下d n n
或者说更加具体的就是一个卷积网络在文本以及图像上的发展
那卷积网络大家有深度学习基础的同学应该都不陌生了
这里我就假设大家都会了
然后如果对整机的概念不太清楚的
也可以到博客上搜搜 有很多相关的资料
那这里再简单的讲一下
图像上的一个二维卷积是什么意思呢
那它的实质就是呃卷积核在我们的二维图像上进行一个平移
将卷积核的每个元素
那这里我们用右边的这个猫咪的图像来做一个解释
将卷积核的每一个元素与它的被卷积的对象对应的位置相乘
那这个时候我们的w 其实就是我们的卷积核
然后相乘再相加
得到一个更新的结果
那其实这这就有点类似于将我们当前的这个像素点
周围的像素点进行一个某种程度的转换
然后再得到当前像素点更新后的一个值
那这就是图像上的一个二维卷积
那在文本上又是怎么做卷积的呢
那它的本质是利用了一个一维卷积的概念
他呃理解起来其实和图像卷积没有什么太大的差别
那因为文本是一个一维的数据
在我们已知一个文本的词表示之后呢
然后我们就在词级词级别上做一维的卷积
那这就是呃文本上的一个一维卷积的概念
前面我们所讲的文本和图像呢
他们其实都是排列整齐的数据
也就是规则性的数据
那对于这一类 规则数据
其实有非常多的方法可以对它们建模了
比如对于图像而言呢
我们就经常用卷积网络来对它进行一个建模
而对于文本呢 我们除了可以
我们除了可以用刚刚的英文卷积以外呢
也可以用循环神经网络r n n 来进行一个建模
那对于不规则的数据
比如说数图
我们又应该怎么建模比较好呢
因此就是我们接就是我们接下来要讲的这个算法
图卷积网络
好了 我要喝水
那这里我想先提前说明一下
就是我们今天要讲的这个图卷积网络的内容呢
并不会涉及到谱分解 这这部分的概念
因为首先我们觉得现在大部分的这个图神经网络其实都可以用
我们之后要讲的这个
思维的方式来进行思考
所以说我们而对于这些谱分解的概念呢
其实可以作为我们后续课程
如果大家想要去了解的话
可以作为一个 理论的补充
那因此呢我们这一节课的内容相对于谱的那些概念呢
就不会涉及了
就会更加关注于
用更加 简单易懂的方式来帮助大家理解这个算法
那下面我们就开始今天的这个讲解
首先图卷积网络 它的一个英文名称就是这个
graph convolution network 呃
我们通常就简写成g c n
那对于这个算法呢 我们会讲解三个部分的内容
一个是我们要如何从图像卷积类比到图结构卷积
还有一个是怎么用消息传递的方式来实现图卷积网络
最后就是我们要怎么用多层的图网络
来完成我们这个节点分类的任务
首先我们来看一下如何从图像卷积类比到图结构卷积
那前面其实我对图像卷积也做了一个基本的解释
那它的本质其实是比较简单的
还是用这个猫咪和 右边这个图来做一个解释
可以看到我们图像卷积
其实它就是将一个像素点周围的像素按照不同的权重叠加起来
那看到右边这个映射的方式
可以 这个就是我们的卷积核
然后我们将对应的值进行相乘再相加
得到中间这个更新的结果
那图结构上的卷积又是怎么理解的呢
我们可以简单的呃看一下我们的这个概念
那其实可以看到我们将像素点对应成了节点
然后一个像素点 它周围的这个像素都对应成了节点周围的邻居
那呃整个概念其实就可以进行一个类比了
那这就是我们这个图结构
中间这个点就是我们的节点
然后它周围的节点就是它的邻居
那按照不同权重叠加起来的意思就是
这个样子
可以看到我们的这个呃图截图
图像卷积和这个图结构卷积的理解起来是非常相似的
那我们这两者最大的一个区别就在于呢
对于图像的卷积来说
它的周围的像素点的数量通常是固定的就是固定的
但是对于图来说呢
节点的邻居数量是非常不固定的
这也是我们图的最大的一个复杂的最大的一个复杂的方面吧
那从卷积网络是怎么计算的呢
我们就直接从他的这个呃计算公式来入手 那看到这个公式
大家不要怕 我们现在一步一步的进行剖析
首先红框之内呢就是我们的这个图卷积网络的核心公式了
那在核心公式当中呢
我们可以看到它有它有三种不同的这个矩阵
那各自代表什么意思呢
其中第一个大A 就是邻接矩阵
那邻接矩阵我在第一节课解释概念的最后的时候呢
解释概念的时候讲清楚了
但是因为我们这个邻接矩阵添加了一个自环边的概念
那等一下还会继续再解释一下
而对于这个大D负二分之一次方的这个矩阵呢
它是和矩阵相关的一个概念
等一下你会讲一讲他是怎么计算的
然后大H
呢就是代表每一层的一个节点表示
右上右上角呢就是呃l
呢就是代表d l 层的这个节点特征的节点表示节点的特征表示
首先我们看一下这个邻接矩阵怎么计算的
我们对于右上角这个红色的这个图呢
然后它的连接矩阵是这么这么个样子
那我们进行一个小小的剖析
首先我们知道零号节点它与第一二号节点是相连的
我们看一下这个图
那我们对应的在邻接矩阵内的这个位置呢 就标为一
那我们这个第零行其实就代表了第 零号节点的一个连接关系的
同时呢
因为我们这一个图是一个无向图
那因此呢我们的这个邻接矩阵也是一个对称的矩阵
最后可以发现就是和我们之前讲的邻接矩阵不一样的概念
就是我们的对角线都标了一
我们 标了一
那因为这是我们对这张图的每一个节点都变添加了一个自环边
这也是这个公式中所使用的一个邻接矩阵的定义
那在其他一般情况下呢
我们是不包含这个自环的
那这就唔解释完了 邻接矩阵
下面我们看一下这个度矩阵要怎么获得
首先我们对连接矩阵的每一行进行一个求和
呃求和的结果后呢
就布置到我们的这个对角矩阵的对角线上
那这样其实就得到了一个度矩阵
度矩阵 它表示什么含义呢
比如我们看一下这个求和的结果
但它其实表示零号节点与之相连的那个节点的个数
与之相连的边的条数
因为我们包含了自环边那零号节点 它的度就是三了
这就是一个度矩阵
接下来呢我们对呃这个度矩阵进行一个求倒数
开根号结果
就得到我们求出来的这个度的负二分之一的矩阵的这个 结果
那我们基本就把我们的核心公式这个地方给讲清楚了
那呃有这个公式又怎么样呢
我们要怎么理解它的这个含义呢
那下面我们就对这样的一个公式进行一个简化
首先方便大家理解 我们先把这个度矩阵的这个概念给去掉
然后简化我们的公式
变成了这样的一个样子
那我们接下来剖析一下这个大a 大h 相乘是什么样的物理意义
它的物理意义是什么呢
那大a 就是一个连接矩阵 h
就是一个节点表示
那两者相乘的含义
我们先看一下这个具体的一个矩阵的表示方式
那首先为了得到零号节点的表示呢相信学过矩阵运算的同学都知道
我们得到d 零行的这个矩阵表示 那其实就相当于把a
矩阵的这个d 零行与我们的这个h 矩阵进行一个相乘
那如果不知道的 你的现金代数也需要补一补了
那得到这样的一个简化的结果呢
他最后矩阵运算就其实是把对应的结果进行一个相乘再相加的结果
然后我们就得到这样的一个计算的表达式
那看到这里是不是就有一点点和图像卷积那个概念有点类似了呢
我们就是把呃邻居的信息
进行了一个求和 只是这只是在这里暂时没有这个加权的概念
那就是有呃一个求和的地方
那刚刚呢我们就展示了这个大a d 零号节点这个大a h
的一个计算过程 那这个过程其实就类似于一个消息传递的方式
什么是消息传递呢 我们可以看一下
首先看一下这个右边的这个动图
那他是不是就很像是说我们把零号节点的邻居信息发送给了他自身呢
那这就是很简单的一个消息传递了
对 大h 大h 就是节点的特征矩阵
每一层的一个节点特征的表示
那接下来我们看一下怎么用这个相信传递的方式来实现我们的图卷积
首先通过这个呃动图呢
其实我们是把相对传递区分成了两个步骤
第一步呢我们把边的圆节点往它的目标节点传传递特征
那这里我们看一下这个箭头所指的方向
那箭头所指的方向呢就是目标节点
发送消息的节点呢就是原节点原节点它的英文就是source
然后呃目标节点它就是destination
那大家记住这个概念 那我们在作业的时候其实会
用到source death 这两个概念的
那第一步我们就呃边上的原节点往目标节点发送的特征
那其实用一个具体的例子来表示呢
它其实就非常类似于说呃我们往晋江当中 往某个地
目的地递出了我们的信件
消息传递的第二步呢则是目标节点接收到这个特征
然后进行一个聚合的过程 那这就是一个接收receipt
原来呢对应到我们刚才的那个例子
它就很像代表说我们对应的人收到了这个信件
那到这里呢 我们这个消息传递的两个步骤已经讲清楚了就是
对于这个零号节点来说 我们是把它的三个邻居 零号节点
一号节点以及二号节点的特征都发送给了他
然后将这些特征进行一个相加
然后更新这个零号节点的一个表示
那这里的相加其实也体现了这个目标节点是怎么处理他接收到的这个
过程的 接收到的信息的
那现在我们知道这个大a 乘以
刚刚讲的内容如果大家懂了的话 就扣个一吧
让我知道你们听懂了 好 那大家听懂了吗
那下面呢我们来看一下这个呃我们知道这个大a 乘以大h
相乘的结果呢 其实表示将邻居的特征进行一个接收和聚合
那接下来我们假设下面的这个场景
听懂了懂的都懂 大家都懂的 不用不用担心
接下来呢就可以假设这样的一个场景中间的这个人是你有一天你收到
包括你的两个朋友 还有一个日本女星
大家可能大家都是大家的老婆 新源结衣 然后以及我们的川普
那我们两个朋友对你进行评价是非常正常的
那同学们可能会感到疑惑 唉
我怎么会收到右边这两个人的评价呢
那我们再解释一下
再假设一下
假设新垣结衣说 我的粉丝都好可可爱呀 卡哇伊
那头条呢你就是他的粉丝
那这是不是对你的一个评价呢
再假设 川普有一天说
呃chinese people哦呃不啦不啦不啦
那你就是一个中国人 那这其实也是
相当于是对你的一个评价
但是是否这里所有的人对你的评价都是有用的呢
答案是不一定的 对于新源结衣和川普来说呢
他们评价了非常多的人
人那他们的评价对你而言并不一定是正确或者有帮助的
但是对于你的好朋友来说呢
他们更加的了解你对你的评价则是更加有用的
那我们就就是说这个时候我们就会觉得朋友是更加重要
因为他们对你的评价是更加中肯的
我们在这些人当中
我们要如何衡量邻居的重要性呢
那在这个图当中呢
可以看到情人节一和很多的人都有相连的这个边
同时呢汤姆也有很多相连的边
那问题的答案就是其实就是度
在矩形当中呢
它是用度来衡量这个呃我们这个边的权重信息
也就是节点的这个信息
因此呢我们就可以利用我们的这个度给我们的边加权
首先左边的这个部分就是我们刚刚讲的这个简单的一个简化版的公式
大a 乘大h 那可以发现呢对
对于每一个节点它发送过来这个信息 它的节点重要性都是一致的
也就是权重是一
那根据我们刚才所举的例子呢 我们可以用do 给边加权
那其实也就相当于说给节点的重要性进行加权了
那图卷积网络它一个原有的公式表示的含义呢就是
我的度越大 那我们的信息量就越小了 那对应的这个呃矩阵的值
也就是我们这个根号一分之一 它的值也就越小了
那可以看到实际的计算过程中呢
我们在临界矩阵的两边分别乘上了这两个呃度的负二分之一次方的这
个呃权值 然后就得到了这个计算结果 那这里我就
减 直接把我们的这个计算结果切了出来
同学们课下也可以自己进行一个验证
那有了这些计算结果之后呢 其实就相当于给这些边进行一个加权
那这个时候我们就可以把我们的这个课程矩阵发送过来
根据我们的这个权重进行一个放缩放缩之后呢
再把这个结果发送给我们的目标节点
那这就是我们这个呃大p 负二分之一 还有大h r
这个公式的一个物理含义了 以及它的一个计算的方式
核心公式讲完了 那下面我们看一下这个核心公式 在我们p g
幺当中的一个实现是怎么样的那
p p 幺当中我们信息传消息传递的实现方式是很简单的
我们分成了两个函数 一个是发送函数send
一个是receipt 函数 那在发送函数呢
我们就把原节点的信息发送到我们的目标节点
那现在他返回的其实就是你要传递的这个信息
而在接收函数呢
我们就要在呃目标节点处理这个接收函接收的到的信息了
大家可以看到
在梦recipe 当中呢就是c n
它其实是用了一个呃一个加和的聚合方式
那这里就非常讲简单的讲解我们p g
幺当中可以这样子实现我们这个图卷积网络
那这里是把两个关键的函数贴了出来
讲完了怎么用消息传递方式来实现图卷积网络呢
下面我们看一下呃怎么用多层的这个图卷积来完成节点分类的任务
下面我们就展示一下这个这些算法的一个全流程了
首先第一步我们在核心公式当中之间呢
我们就进行一个特征传递过程
那这里是一个动物化的展示 非常的形象
但是这个计算结果其实是并行的
这只是在图图中的动画显得好像是串行一样
好 快点快进 好 下一步 对每一个节点过一层d n n
那这个sigma 其实是一个激活函数 这个w
其实就是一个可学习的
沉沉重
每一个都过一层g n n n n n n n
接着呢同步我们刚才的这个步骤 比如说同步l 四的话
那我们就可以得到一个l 层的图卷积网络了
对 第零层的那个大h 呢 就是你原有的这个节点特征了
然后你就在这个g c n 网络里面
对这个节点特征不断的进行呃更新
最后呢我们将呃我们最后一层的这个获得的表示来做我们的这个呃最
终的节点表示 然后利用一个分类器就是
cut to fire cut fire
然后对我们的这个标签进行一个分类
那这就非常简单的把我们的这个公式给解释清楚了
最后总结一下呢 就是对于这个算法来说呢
我们不仅仅讲出了它与图像卷积的一个区别
然后还讲了我们要怎么和用消息的方消息传递的方式来理解这个过程
然后最后呢介绍了整个算法的一个流一个流程
那这其实是一个端到端的运行过程 所以和我们上一节课所讲的
所有种类算法是不一样的
所有种类算法是区分了两个过程先得到解决 embedding
在做下游任务 所以我们在做作业的时候
是呃分为了两个执行命令的 那对于g n n g c n
也就是g n n 后续的g n 算法来说呢
我们都是在可以端到端的训练的
