AAAI-18
圣路易斯华盛顿大学计算机科学与工程系
代码:https://github.com/muhanzhang/DGCNN
内容:常见的文本和图能够进行卷积,是因为隐含有顺序结构。比如说图上的CNN,如果将图上的像素点进行打乱的话,再好的CNN也无法处理了
那么怎么样才能处理无序的图结构数据呢?答案很简单,让它有序就行了。怎么有序?排序啊。
步骤:
- 先使用多层聚合函数进行节点信息的聚合,更新节点信息
- 将得到的节点特征排序
- 将排完序的节点特征继续拼接成一维,然后直接一维卷积走起
1 模型的实现
图卷积层
- 跟GCN差不多,就是邻接矩阵归一化的方法不一样
- 使用多层进行聚合
- 最后将h次迭代得到的特征向量全部拼接到一起
排序层 SortPooling
- 首先用𝑧h的最后一个维度的值进行排序,相同的话就比较倒数第二个,依次类推
- 注意,这么操作的话,最后同构的图,排完序之后的表示就会是一样的了
- 此时需要记住排完序之前各个特征的顺序,用于最后的梯度更新进行训练
- 然后就需要保留𝑘个特征,如果节点数𝑛<𝑘,空余部分补0,大于否则就截断
卷积层
- 这个时候将得到的矩阵重新拼接为一维的向量,直接使用一维卷积就可以了
- 然后使用全连接层进行分类
2 两个相关方法
论文举了两个相关的方法,旨在说明自己方法的有效性
Weisfeiler-Lehman(WL) subtree kernel
- 这个方法常常用于进行两个图的同构检验,主要思路:
- 首先对各个节点,进行一阶邻居聚合,作为新的特征
- 然后排序,比较两个图的节点特征,看是否相同
- 重复上述两个步骤h次。如果两个图的节点特征不同,说明不同构;但如果两个图的节点特征相同,不一定是同构的
- 可以表示如下(𝛿𝑥,𝑦=1 𝑖𝑓 𝑥==𝑦 𝑒𝑙𝑠𝑒 0,c为节点的颜色(用int编码),即节点特征):
- 而DGCNN的卷积层可以表示如下(Y≔XW):
- 可以将中间的
- 看成是一种聚合的方式,因而可以看成是一种“软的”WL算法
propagation kernel(PK)
- 比较两个图之间的标签分布,而不是对整数节点标签进行操作
- 具有与WL相似的图分类性能,甚至更高的效率
- DGCNN的卷积层和PK十分相像
3 实验
- 论文先后和图核的方法(图1),神经方法(图2)进行比较
- 为了证明排序工具优于求和,DGCNN(sum)用求和层替换了DGCNN中的排序层和随后的一维卷积层。在大多数情况下,性能会恶化很多
4 感想
- 本文的想法是比较符合直觉的。既然图无法直接卷积的原因是没有顺序,那么就直接给其顺序。
- 卷积层其实就是GCN,随着层数的加深,肯定会出现过平滑问题的。但是排序的时候需要用最后一层卷积的输出,理由是需要更高级的特征,原文是“most refined continuous WL colors”。可能作者也知道这一点,于是将前几层的特征保留下来,参与到后续的卷积中。这么做既防止了过平滑,也能够得到更好的结果。这与JK网络有点像了。