1、概念提出:
在国际学习表征会议-ICLR2017,深度学习顶会:
2、GCN做什么:
DL的经典模型CNN、RNN在CV和NLP领域都取得了优秀的结果,但是两者在图结构的数据中处理并不理想。
CNN:做图像识别,图像是一个二维的结构,CNN使用Kernel和Stride在图片上平移,通过卷积的方式来提取特征。关键在于图片结构的平移不变性,一个kernel小窗口无论移动到图片的哪个位置,它的内部结构都是一样的,所以CNN可以实现参数共享。
RNN:处理对象是自然语言这种序列信息,它是一种一维结构,RNN通过各种门的操作,使序列前后的信息互相影响,从而捕获序列的特征。
所以,CNN和RNN处理的图片和语言数据都是欧式空间的数据,所以才有维度的概念,其特点就是数据结构很规则,但是在现实生活中,还是以不规则的数据为主,典型的是图结构,又称栝拓扑结构,比如:
1、社交网络
2、化学分子结构
3、知识图谱等
对于图片和语言:
图片:做目标检测识别时,我们关注的是图片上的需要识别的关键点,把这些点连接组成也是一种图
语言:语言内部也有着复杂的树结构,也是图结构
3、图结构数据特点:
1、数据不规则,无限维度
2、不存在平移不变性,CNN、RNN瞬间无效
所以,GCN的发明和提出,是为了处理图结构这种数据的
(为了处理这种数据,从上个世纪人们就开始研究了,也有一些其他方法:GNN、DeepWalk等)
4、GCN作用领域:
GCN实际和CNN一样,都是一个特征提取器,只不过对象是图数据,GCN巧妙的设计了一种从图数据中提取特征的方法,从而让我们可以对图数据进行:
1、节点分类(node classification)
2、图分类(graph classification)
3、边预测(link prediction)
4、还可以顺便得到图的嵌入表示(graph embedding)
GCN及其变体在交通运输、视觉关系检测、用户推荐、文本分类等均有应用
5、GCN公式图解:
5.1、GCN层与层之间的传播公式:
假设,图数据有N个节点,每个节点都有自己的特征,有:
N个节点的特征矩阵X = N * D
N节点之间的邻域矩阵A = N * N
拓扑结构数据正是通过构建邻域矩阵A来计算节点之间的特征,X和A正是我们GCN模型的输入
A波浪 = A+I(单位阵E)
D波浪 = A+I的度矩阵(degree matrix)
H = 每层GCN的特征
注:
度矩阵是一个对角阵,对角上的元素是各个顶点的度,例:
1,3,3,2,3分别对应v1,v2,v3,v4,v5节点的相邻节点个数
5.2、GCN图解:
以A节点为例,搭建计算图:
左侧为原图,右侧是每个节点的各阶邻域
A节点的一阶邻域:B、C、D
B节点一阶邻域:A、C(C、D的依次类推)
此图GCN有三层,另有两层神经网络
每一个节点都可以分别构建自己的计算图,有多少个节点计算图,就有多少个训练样本数据:
6个节点计算图 = 6个GCN训练样本
每个节点计算图之间:
黑色小盒子之间共享一套参数,代表一层卷积
灰色盒子之间共享一套参数,代表第二层卷积
我们要做的就是训练这两层神经网络
注意:
GCN训练的是节点计算图中的各阶邻域,而不是黑色、灰色的神经网络。其中黑色、灰色包含的神经网络可以随意设置,在Layer-1中设置100层卷积、或者在Layer-2中设置512层卷积
其中,输入的节点属性特征是训练数据自己带的,例如EEG-MI数据的左、右属性,不需要特征提取得到,
说到这里,对于处理EEG数据:
我们可以把EEG-MI数据的每个样本当作节点,计算每个样本(节点)计算图,通过GCN的消息表征结构, 最终得到每个样本(节点)的低纬度的表征特征,最后用于分类。
5.3、直观表示GCN节点与层数的关系:
GCN计算图层数越多,则节点能够连接的相邻节点就越多,感受野就越大,一般2-3层即可,过大则最后每个节点计算的表征特征都集合到一个数值
5.4、GCN每层提取特征公式:
1、第一层,hv表示最开始的图卷积,v代表输入的原始特征数据
2、第二层,篮筐内,以C节点为例,u表示C的所有领域节点A,B,E,F,篮筐分子表示4个领域节点之和,分母表示个数四,也就是领域求平均值,再*参数矩阵W,再非线性激活,作为特征值
3、Zv表示之后的更深的卷积,步骤和第二层一致
蓝框矩阵表达:
A = 邻域矩阵
D = 对角阵
Hk = 所有节点嵌入特征的集合,一行是一个节点所有的嵌入表征
H左 * A = 获得该行节点所有的邻接节点
再左 * D的逆 = 求表征平均
也就完成了一开始GCN公式的推导式
5.5、GCN在处理EEG数据的潜在优势:
GCN原论文无非是设计了一个巧妙地数学公式,用来提取图数据,其余的公式是为了讲解说明这个核心公式的,使得在数学逻辑上贯通,但论文附录中,作者做了一个实验,完全使用随机初始化参数W,用于提取一个俱乐部会员的关系图数据,得到各个节点的嵌入特征,然后可视化结果如下:
可以发现,在原数据中同类别的node,经过GCN的提取出的embedding,已经在空间上自动聚类了。
而这种聚类结果,可以和DeepWalk、node2vec这种经过复杂训练得到的node embedding的效果媲美了。
也就是说GCN还没有训练,结果就已经超过别的训练好的模型了,若GCN在处理EEG信号上表现也如此强大,那就太好了。