【Graphormer阅读笔记、实验与刷榜】《Do Transformers Really Perform Bad for Graph Representation?》
Graphormer阅读笔记 —— Huixuan Chi (AML@ByteDance)
- paper:https://arxiv.org/abs/2106.05234
- code:https://github.com/microsoft/Graphormer (main分支)
Graphormer主要策略
1. Transformer结构
主要有Transformer layer组成,每一层包括MHA(多头自注意)和FFN(前馈)模块,并增加了LN。
h ′ ( l ) = MHA ( LN ( h ( l − 1 ) ) ) + h ( l − 1 ) h ( l ) = FFN ( LN ( h ′ ( l ) ) ) + h ′ ( l ) h^{'(l)} = \text{MHA}(\text{LN}(h^{(l-1)})) + h^{(l-1)}\\ h^{(l)} = \text{FFN}(\text{LN}(h^{'(l)})) + h^{'(l)} h′(l)=MHA(LN(h(l−1)))+h(l−1)h(l)=FFN(LN(h′(l)))+h′(l)
Graphormer主要是在MHA模块内进行了改动,Transformer原始的self-attention如下:
Q = H W Q , K = H W K , V = H W V , A = Q K ⊤ d K , a t t n ( H ) = s o f t m a x ( A ) V , Q = HW_Q,\quad K = HW_K,\quad V = HW_V,\\ A = \frac{QK^\top}{\sqrt{d_K}}, \quad attn(H) = softmax(A)V, Q=HWQ,K=HWK,V=HWV,A=dK
原始的 H ∈ R n × d H \in R^{n \times d} H∈Rn×d,最后算出来的 a t t n ( H ) ∈ R n × d attn(H)\in R^{n \times d} attn(H)∈Rn×d。
缺点,Transformer是全局视野,不能有效的使用图的结构信息。
2、图结构信息编码
2.1 degree centrality
在输入层中,将节点特征x和由入读和出度索引的可学习的embedding相加。
h i ( 0 ) = x i + z deg − ( v i ) − + z deg + ( v i ) + , h_i^{(0)} = x_i + z^-_{\text{deg}^{-}(v_i)} + z^+_{\text{deg}^{+}(v_i)}, hi(0)=xi+zdeg−(vi)−+zdeg+(vi)+,
# init
self.in_degree_encoder = nn.Embedding(512, hidden_dim, padding_idx=0)
self.out_degree_encoder = nn.Embedding(512, hidden_dim, padding_idx=0)
# degree encoder
# in_degree, out_degree = batched_data.in_degree, batched_data.in_degree
node_feature = node_feature + self.in_degree_encoder(in_degree) + self.out_degree_encoder(out_degree)
所有节点的度embedding是共享的,由度的数值进行索引。
2.2 spatial encoding
self-attention模块内,公式里面A可以视为节点相互之间的边权重(相似程度)。元素值 A i j A_{ij} Aij代表节点i到节点j之间的边权重。
A i j = ( h i W Q ) ( h j W K ) T d + b ϕ ( v i , v j ) , A_{ij}=\frac{(h_iW_{Q})(h_jW_{K})^T}{\sqrt{d}} + b_{\phi(v_i,v_j)}, Aij=d
Spatial encoding是 b ϕ ( v i , v j ) b_{\phi(v_i,v_j)} bϕ(vi,vj),它作为bias加到原始值上面。 ϕ ( v i , v j ) \phi(v_i,v_j) ϕ(vi,vj)表示节点i到节点j之间的最短路径(SPD), b ϕ ( v i , v j ) b_{\phi(v_i,v_j)} bϕ(vi,vj)有所有层共享,由SPD索引,输出一个可学习的标量。这样做的优点是可以自适应的和不同距离的节点进行消息传递。
多源最短路径使用Floyd算法求解,得到shortest_path矩阵。
2.3 edge encoding
对edge feature进行编码,
A i j = ( h i W Q ) ( h j W K ) T d + b ϕ ( v i , v j ) + c i j , where c i j = 1 N ∑ n = 1 N x e n ( w n E ) T , A_{ij}=\frac{(h_iW_{Q})(h_jW_{K})^T}{\sqrt{d}} + b_{\phi(v_i,v_j)} + c_{ij},\ \text{where}\ c_{ij}=\frac{1}{N}\sum_{n=1}^{N} x_{e_n}(w^{E}_{n})^T, Aij=d
编码信息 c i j c_{ij} cij(标量)的计算,取节点i到节点j的最短路径SPD上所有(edge feature ⊙ \odot ⊙ 可学习的embedding)的平均值,可学习的embedding由序号n来索引。
3. 图分类Tricks
3.1 Virtual Node (VN)
新增一个虚拟节点和所有节点相连,最终图表示的结果就是虚拟节点的嵌入表示。
3.2 FLAG
对抗性数据增强方法(Adversarial Train)。
实验
主要在化学分子图数据集中进行。
- PCQM4M-LSC
- OGBG-MolPCBA
- OGBG-MolHIV
Graphormer消融实验
1. OGB-LSC(PCQM4M-LSC)
200个epoch,OGB-LSC的test没有对外公布,只有valid数据。
Degree Encoding | Spatial Encoding | Edge Encoding | Valid MAE |
---|---|---|---|
---- | ✅ | ✅ | 0.1298 |
✅ | ---- | ✅ | 0.1279 |
✅ | ✅ | ---- | 0.1361 |
✅ | ✅ | ✅ | 0.1294 |
✅ | Adj. | Adj. | 0.1297 |
---- | Adj. | Adj. | 0.1307 |
SPD换成Adj.好像差的不是很大。去掉Spatial Encoding效果居然还要好一点?
官方给出的LSC上的简化版(为节省计算资源)Graphormer消融实验结果。
2. OGBG-Molhiv
- 在OGB-LSC上进行预训练,保存checkpoints (seed=1,
../../checkpoints/epoch=200-step=298886.ckpt
)- 预训练模型包含3种encoder
- 为节省时间和磁盘空间,每个run跑200个epoch,(实际应该跑300个),和原文结果有一些偏差
- Tesla V100 * 8
- 在OGBG-Molhiv上进行fine-tuning (seed=1)
- 对3种encoder进行消融实验
- 5个epoch进行微调
- Tesla V100 * 1
2.1. Version 1 (在LSC上正常预训练,实际上是不对的)
Degree Encoding | Spatial Encoding | Edge Encoding | Valid AUC (%) | Test AUC (%) |
---|---|---|---|---|
---- | ---- | ---- | 78.49 | 67.43 |
✅ | ---- | ---- | 72.39 | 63.40 |
---- | ✅ | ---- | 61.62 | 36.88 |
---- | ---- | ✅ | 78.11 | 77.31 |
---- | ✅ | ✅ | 76.56 | 75.53 |
✅ | ---- | ✅ | 76.49 | 78.35 |
✅ | ✅ | ---- | 46.01 | 30.12 |
✅ | ✅ | ✅ | 79.70 | 79.68 |
✅ | Adj. | Adj. | 79.78 | 77.14 |
一个有趣的现象,有Spatial Encoding、无Edge Encoding,效果要比什么都不加差。
用Adj替换SPD矩阵,test auc下降不是很多,但是减少了Floyd( O ( N 3 ) O(N^3) O(N3))的计算量。从消融实验中可以发现,基于SPD的edge encoding与spatial encoding配合使用是比较有用的,单独使用degree encoding是比较有效的。edge encoding对于auc的提升影响是很大的。
2.2. Version 2 (预训练时就进行消融)
Degree Encoding | Spatial Encoding | Edge Encoding | Valid AUC (%) | Test AUC (%) |
---|---|---|---|---|
---- | ✅ | ✅ | ||
✅ | ---- | ✅ | 78.19 | 77.80 |
✅ | ✅ | ---- | 83.97 | 74.89 |
✅ | ✅ | ✅ | 79.70 | 79.68 |
✅ | Adj. | Adj. | ||
---- | Adj. | Adj. |
2.3. GCN/GIN + Degree Encoding
Model | Test ROC-AUC | Valid ROC-AUC |
---|---|---|
GCN+Vn+FLAG | 76.83 | 81.76 |
GCN+VN+FLAG+DE | 71.28 | 81.83 |
GIN+Vn+FLAG | 77.48 | 84.38 |
GIN+VN+FLAG+DE | 76.29 | 82.24 |
加上Degree Encoding (DE),Test auc震荡的很厉害,并且表现也并不好。
2.4. Graphormer + FPs
https://ogb.stanford.edu/docs/leader_graphprop/#ogbg-molhiv
代码和具体做法:https://github.com/ytchx1999/Graphormer/tree/main/examples/ogb
处理得到 MorganFingerprint 和 MACCSFingerprint ,拼接后得到feat
使用Random Forest进行分类训练任务,保存训练结果
作为平滑项,和Graphormer学到的graph_pred进行加权求和
o u t p u t = ( 1 − α ) ⋅ S i g m o i d ( o u t p u t ) + α ⋅ m g f _ m a c c s _ p r e d output = (1-\alpha)\cdot Sigmoid(output) + \alpha \cdot mgf\_maccs\_pred output=(1−α)⋅Sigmoid(output)+α⋅mgf_maccs_pred
Model | Test ROC-AUC | Valid ROC-AUC | Parameters | Hardware |
---|---|---|---|---|
Graphormer (without pre-train) | 72.60 | 72.94 | 47085378 | Tesla V100 (32GB) |
Graphormer | 80.51 ± 0.53 | 83.10 ± 0.89 | 47183040 | Tesla V100 (16GB) |
Graphormer + FPs | 82.25 ± 0.01 | 83.96 ± 0.01 | 47085378 | Tesla V100 (32GB) |
OGB冲榜
test auc提升2%左右,榜三(但标准差更小),前三名差距比较小。
3. MLP+C&S复现和OGB冲榜
代码:https://github.com/ytchx1999/PyG-ogbn-products/tree/main/spectral%2Bmlp%2Bcs
论文:https://arxiv.org/abs/2010.13993
排行榜:https://ogb.stanford.edu/docs/leader_nodeprop/#ogbn-products
【Graphormer阅读笔记、实验与刷榜】《Do Transformers Really Perform Bad for Graph Representation?》相关推荐
- Do Transformers Really Perform Bad for Graph Representation 阅读笔记
Task 利用transformer进行图预测,即给出一个图,预测出其类别,其中图由来表示,代表结点,代表边.在阅读这篇论文之前,回顾一下经典的GNN和Transformer. GNN 一般的图神经网 ...
- 阅读笔记(Every Document Owns Its Structure: Inductive Text Classification via Graph Neural Networks)
Every Document Owns Its Structure: Inductive Text Classification via Graph Neural Networks (每个文档都有自己 ...
- 论文阅读笔记(一)——铁饼鱼的面部识别:使用数字模型的实验方法
论文阅读笔记(一)--铁饼鱼的面部识别:使用数字模型的实验方法 论文简介 期刊情况 摘要 研究背景 正文 动物实验对象的制备 社交展示的描述 实验过程 实验1 实验2 道德声明 结果 商量 论文简介 ...
- Swin Transformer升级版来了!30亿参数,刷榜多项视觉任务
©作者 | 杜伟.陈萍 来源 | 机器之心 微软亚洲研究院升级了 Swin Transformer,新版本具有 30 亿个参数,可以训练分辨率高达 1,536×1,536 的图像,并在四个具有代表性的 ...
- 收藏 | 图像处理Transformer:华为诺亚、北大等IPT模型,刷榜
点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习> ...
- Gated Mechanism for Attention Based Multi Modal Sentiment Analysis 阅读笔记
GATED MECHANISM FOR ATTENTION BASED MULTIMODAL SENTIMENT ANALYSIS 阅读笔记 最近在跟进多模态的情感分析发现多模态榜一又被刷下来了,这篇 ...
- PolyFormer: Referring Image Segmentation as Sequential Polygon Generation 论文阅读笔记
PolyFormer: Referring Image Segmentation as Sequential Polygon Generation 论文阅读笔记 一.Abstract 二.引言 三.相 ...
- AI科举制扼杀创新!你眼中的好模型只是「刷榜机器」
关注公众号,发现CV技术之美 本文转自新智元. 编辑:LRS 好困 [导读]基准测试堪称人工智能领域的「科举制」,但这种应试教育唯分数论输赢,能训练出真正的好模型吗? 2010年,基于ImageNet ...
- Swin Transformer升级版来了!30亿参数,刷榜多项视觉任务,微软亚研原班人马打造...
视学算法报道 编辑:杜伟.陈萍 微软亚洲研究院升级了 Swin Transformer,新版本具有 30 亿个参数,可以训练分辨率高达 1,536×1,536 的图像,并在四个具有代表性的基准上刷新纪 ...
最新文章
- python中文读音ndarray-Python中Numpy ndarray的使用详解
- 20211231 使用windows 10代理时,快捷设置“手动设置代理”的“不使用代理”条目
- OpenStack概念架构简述
- 解决阿里云postfix无法发送邮件问题
- 异星工厂 自动机器人_刚刚,ABB机器人全球最大机器人超级工厂在康桥动工! 投资10亿元,用机器人造机器人...
- java 拖放文字_myeclipse2014如何实现jsp中的html代码的文字拖放
- php扩展包安装了为啥没加载,已安装PHP扩展但未加载
- OJ1038: 绝对值最大
- 【Spark】Spark ML 机器学习的一个案例
- java 6789的10000次方,用MSSQL计算2的10000次方
- 四元素与欧拉角之间的转换
- 应聘时计算机水平怎么说,计算机能力怎么填_计算机水平怎么写_简历
- HTML中关于使用 innerHTML 动态创建DOM节点时,相关事件(如onclick等)失效的解决方案
- android usb投影win10,分享win10投影到安卓平板上的方法
- 一仓库失窃,四管理员被传讯_如何找到丢失或失窃的Android手机
- Apache Kafka的流式SQL引擎——KSQL
- Vue前端项目-登录组件-登录功能(上)
- 【稳定性day4】美团外卖高可用的演进之路 - 日活两千万的挑战
- 搭建导航网站赚钱,小白也能躺赚!
- 开源网络管理软件-RANCID【新任帮主】
热门文章
- php x20有啥用,vivoX20使用评测:看完就知道vivoX20值不值得买
- javascript集合的使用 new Set()使用
- VFB组件:VisualFreeBasic主程序
- 曝切尔西3000万清洗奥斯卡 一举动证他定离队
- Getbuffer ReleaseBuffer Cstring
- T4M插件放入unity后怎么找不到_【Unity俯视角射击】我们来做一个《元气骑士》的完整Demo(五)...
- Scratch中的全局变量,私有变量与克隆体变量(一)
- office:如何查看并下载office账户的订阅软件
- 一招解决linux下latex生僻字问题
- 《安富莱嵌入式周报》第243期:2021.12.06--2021.12.12