THUDM / GraphMAE

GraphMAE: Self-Supervised Masked Graph Autoencoders in KDD'22
468 stars 75 forks source link

重构Loss设计 #57

Closed StefanIsSmart closed 11 months ago

StefanIsSmart commented 1 year ago

您好,您的工作非常棒,非常有参考价值。 我想请问:

  1. 您的重构loss为什么没有重构全部的 node / edge fearures 而是仅仅重构mask部分的呢? 因为encoder将input features 维度压缩后还原高维特征,本身不也是一种重构难度吗?是否可以逼着样本在hidden space尽可能保存有用信息?您是否尝试过这两种方法的异同?
  2. 为什么Noise选择其他节点的信息作为Noise而不是完全random的随机噪音呢?有做过相关探索吗?
  3. 为什么您没有直接用PyG的GATconv而是自己重写呢,主要的修改点和原因是什么呢?我网络经验较少,想请教一下您。
  4. 将一部分mask作为可学习的参数,是否会加重训练推理失配的问题?因为推理过程中不做mask,可能训练过程中做得好是因为学到了好的mask参数呢?

非常期待您的指点。

另外您文章里的21级的邮箱是否还可用呢?

THINK2TRY commented 1 year ago

Hi @StefanIsSmart ,非常感谢对 GraphMAE 的关注!

  1. 正如在paper中提到的,使用 mask 是为了让模型重建输入中未见过的特征,提升训练的难度,同时避免模型陷入 identity mapping 的平凡解,所以只重建 mask 的节点特征。关于 edge feature,在我们的实验中发现在分类任务上对结果并无增益。
  2. 这个问题可否更清楚地解释一下呢?如果是说论文中提到的非常少量的“选取其他节点特征来替换当前节点特征”的话,主要是考虑使用其他节点的特征符合当前graph的特征分布,随机噪声一般是来源于其他的分布。
  3. 由于我们之前有基于 pyg 和 dgl 实现过 GCN / GAT 相关的 conv,所以直接就使用了。
  4. 使用 mask 确实会造成训练和推理存在一定的不一致性,在 NLP / CV 中也是类似的情况。不过目前看,使用 mask 进行训练带来的效果赠一是大于这种不一致带来的损失的。同时由于 mask 本身不参与推理,所以 mask 的参数不会对推理造成直接的影响。

希望有帮助!