博主曾经整理过一篇图预训练的文章,此后有很多在Graph上做Pretraning的文章层出不穷,但基本上万变不离其宗,都是在node-level和graph-level上做自监督学习。
为什么自监督策略有效?
- 多层结构,下层固定了再去train上层
- 多任务,可以去bias更泛化
- 同领域预训练,学到更多相关信息
但是预训练和微调之间总有差距,如何解决这个gap变成为一个棘手的问题,本篇博文博主将整理几种解决方案。
Learning to Pre-train Graph Neural Networks
这篇文章来自AAAI 2021。其核心的思想其实就是:如何缓解GNN预训练和微调之间的优化误差?
首先作者论证了 GNN 预训练是一个两阶段的流程:
- Pre-traning。先在大规模图数据集上进行预训练。即对参数theta进行更新使其最小化: θ 0 = a r g m i n θ L p r e ( f θ ; D p r e ) \theta_0=argmin_{\theta} L^{pre}(f_{\theta};D^{pre}) θ0=argminθLpre(fθ;Dpre)
- Fine-tuning。在下游数据上进行微调。用上一步训练好了的 θ 0 \theta_0 θ0上进行微调,即做梯度下降: θ 1 = θ 0 − η ∇ θ 0 L f i n e ( f θ 0 ; D t r ) \theta_1=\theta_0-\eta \nabla_{\theta_0} L^{fine}(f_{\theta_0};D^{tr}) θ1=θ0−η∇θ0Lfine(f