该论文Do Transformers Really Perform Bad for Graph Representation探索了使用Transformer Encoder进行图神经网络的编码时,一些可以用到的技巧,包括:
- 在节点本身的特征基础上,添加入度和出度特征,论文称之为集中度编码(Centrality Encoding)
- 为了添加空间信息,计算每个节点和其他节点的attention score时,加入两节点最短路径长度信息(Spatial Encoding)
- 对于节点间连线包含了不同类型的情况,如分子间的化学键,加入对边类型的编码,两节点间最短路径上所有边的类型编码,点乘权重矩阵,求均值作为两节点间边类型的特征(Edge Encoding)
原始的Transformer Encoder公式:
节点表示加入出度和入度:
将节点间最短距离作为bias项加入:
将节点间边的编码也作为bias项加入:
同时实现过程中适用pre-norm替换transformer encoder默认的post-norm,这也是业界通用的方式:
为了获得一个整个图的表示,加入了一个虚拟加点VNode,该节点和图里面所有节点都相连,这种方式类似Sentense Embedding中的CLS节点。
同时,论文还测试了把Edge的信息求平均后直接累加到节点特征里的效果,如下表,结果显示不如放在attention bias中效果好。