从深度学习顶会ICLR投稿主题来看,2022年和2023年强化学习、深度学习、表征学习、图神经网络等都是最热门的方向。
将芯片的每一个单元的联通看成一个图,实现AI设计芯片
结构化的数据的特征可能并不是独立的,而是具有关系。通过点和边可以组成一个个关系图。比如说警察破案
推荐系统本质上来说可以看做一个关系图,点和点之间肯定存在着关系
对个人信息进行测评,从而将贷款用户加入到图模型中,构建出用户和海量用户的关系,从而进行风险评估。
知识图谱,现在最大的应用是做智能客服,知识图谱也可以看做是一个关系图
比如说做动态的红绿灯调整。根据人流量、车流量动态调整红绿灯。但是,一个十字路口红绿灯的改变肯定会影响到其他红绿灯。
比如自动驾驶领域的激光雷达,扫描的各个物体肯定也是存在一定的关系的。
科学家做的实验是有限的,而计算机可以快速的大量的对比分析实验。
对于不同的任务,我们有针对与点去做,也有针对与边去做,还有针对于整个图去做。
从本质来说,图神经网络也是在做特征提取,整合特征,类似于word2vec利用词与词之间的关系去学习词向量。图神经网络也是利用点于点的关系去重构点和边的向量表示,进而重构整个图的特征。
以图像为例子,假如说我们认为,一个点跟他相邻的8个点有关系,但是这件事怎么让计算机知道呢?因此我们定义一个领接矩阵表示点与点之间的关系。需要注意的是,假如图像大小为H,W。那么邻接矩阵 的size应该为HW*HW,表示每一个像素点与其他像素点的关系。
文本数据也可以表示图的形式,邻接矩阵表示的连接关系
为什么我们一般不在图像和文本中使用图神经网络呢?那是因为我们的图像和文本的输入都很固定,对于图像我们可以resize成固定大小 ,对于文本我们可以固定长度和词向量大小。不需要特殊的邻接矩阵。
因此,图神经网络的优势主要为非结构化的数据,比如分子结构、社交网络等等。
我们可以为每个边训练一个权重,聚合操作可以当作全连接层,但是更新的方法有很多,可以自己设置
GNN的本质就是更新各部分特征,其中输入是特征,输出也是特征,邻接矩阵也不会变的。但是,经过一层GNN的更新后,每个点的特征受到了该点邻居的直接影响。在第二层GNN中,我们是使用更新后的特征进行更新,不仅能够受到邻居的直接影响,还能传递邻居的邻居的间接影响。
各个点特征组合,可以图分类:
各个节点也可以分类:
边也是如此:
图卷积和卷积具有根本上的图,图卷积是根据图来做的,处理的数据也是一些非结构化的数据,
节点分类,对每个节点进行预测,不同点是否有连接预测
整个图分类,部分图分类等,不同子图是否相似,异常检测等
GCN归根到底还是要完成特征提取操作,只不过输入对象不是固定格式
处理方式还是和神经网络一样,通常交给GCN两个东西就行:1.各节点输入特征;2.网络结构图
这个也是GCN优势,不需要全部标签,用少量标签也能训练,计算损失时只用有标签的
针对橙色节点,计算它的特征:平均其邻居特征(包括自身)后传入神经网络
GCN也可以做多层,每一层输入的还是节点特征,然后将当前特征与网络结构图继续传入下层就可以不断算下去了
G是整个图
A是邻接矩阵
D是各个节点的度,表示与几个节点相连
F是每个节点的特征
其实就是邻接矩阵与特征矩阵进行乘法操作,表示聚合邻居信息
但是,上面的做法只考虑了邻居的特征,没有考虑自己的特征,因此,我们将邻接矩阵对角线置1,表示在邻接矩阵加上自己的信息。同时相应的度也有加1.
但是还有一个问题,这样的计算结果会使邻居越多的值越大,这怎么解决呢?我们构建了一个度矩阵,我们乘以就相当于做了归一化操作了。
目前公式为: 即,左乘的最终结果会作用到每一行上,相当于对行做了归一化,但是没有对列考虑
但是,这样对行列进行归一化让特征值太小了。因此,行列进行归一化首先取根号。即
比如说图中的小绿和小蓝,小绿只与小蓝有关系,度为1,而小蓝与多个节点都有关系,度很大,小绿对小蓝的影响有限。假如我们只对行进行归一化(即只对小绿的度进行归一化),那么就很可能认为小绿与小蓝极为相似,实际上小蓝受到很多节点的影响与小绿的关系不是特别紧密。因此,在归一化时,不仅用小绿本身的度,还用小蓝的度进行归一化, ,将其权重参数变小。