你的 GNN,可能 99% 的参数都是冗余的( 二 )


作者在之前的SOTAQA-GNN[1]上进行剪枝 , 得到的结果令人震惊:
你的 GNN,可能 99% 的参数都是冗余的
文章图片
随着训练的推进 , GNN前面节点的embedding层越来越没用 , 但边的表示一直对最后的预测准确率有很大影响 。
你的 GNN,可能 99% 的参数都是冗余的
文章图片
这张图表明 , 不仅节点embedding层参数没用 , 节点的初始化也没用 。 甚至作者在其他模型中也对节点初始化剪枝 , 发现所有方法里都没用!
你的 GNN,可能 99% 的参数都是冗余的
文章图片
在第二层GNN上 , 图注意力模块中的key和query完全没用 , 只有value比较有用 。 那么图注意力计算注意力权重不也就完全无效了吗?注意力模块注意不到任何元素 , 这和一个线性变换又有什么区别呢?
综上所述 , 似乎GNN里面很多部分都是不需要的?为了证明这一点 , 作者设计了一个GNN的简化版本——graphsoftcounter 。
简单的counter , 一样有效
通过上面的实验我们可以发现 , GNN中边的表示 , 以及信息传递和聚合 , 都是很重要的;其它诸如图注意力、节点表示 , 都可有可无 。 于是作者只留下两个结构:Edgeencoder用来构建边的表示 , GraphSoftCounterlayer用来做信息传递和聚合 。
Edgeencoder是最简单的两层MLP , 输入边的1-hot表示 。 其中表示四种节点类别 , 表示38种边的类别(这里的38种是17种关系类别 , 加上问题/答案的边 , 以及所有类别的反向) 。 MLP最后就输出一个[0,1]之间的float数字 , 作为边的表示 。
GraphSoftCounterlayer(GSC)完全遵照了MPNN信息聚合与传播的思路 , 并且这是无参数的!具体步骤如下图所示 , 一层GSC包含两步 , 即先将节点的值加到边上 , 再将边的值加到节点上 。
你的 GNN,可能 99% 的参数都是冗余的
文章图片
对 , 就是这么简单的一个模型!参数还不到GNN的1%!
边的表示的维度是1 , 因此这个表示就可以被看做边的重要性分数;GSC的信息聚集 , 因此也能被看做“数数”:数一数边两端的结点有多重要 , 数一数结点周围的边有多重要 。
实验
作者们在CommonsenseQA和OpenBookQA两个数据集进行了实验 。 CommonsenseQA需要模型对常识进行推理 , 而OpenBookQA需要对科学知识进行推理 。 作者们不仅在这两个数据集的leaderboard上进行了评测 , 还基于同一个预训练模型 , 与前人所有基于GNN推理的模型进行了对比 。
在CommonsenseQA上 , GSC(本方法)超过了所有基于GNN的方法 , 在dev和test上分别由2.57%和1.07%的提升 。
你的 GNN,可能 99% 的参数都是冗余的
文章图片
在CommonsenseQA的Leaderboard上 , GSC排名也非常靠前 。 这里排在首位的UnifiedQA , 其参数量是GSC的30倍 。
你的 GNN,可能 99% 的参数都是冗余的
文章图片
在OpenBookQA上 , GSC也有相似的惊人效果 , 甚至在leaderboard上超过了30倍参数的UnifiedQA!
你的 GNN,可能 99% 的参数都是冗余的
文章图片
你的 GNN,可能 99% 的参数都是冗余的
文章图片
怎么才能证明GSC也有推理的能力呢?作者们采用了这样的一个假设:如果GSC的预测结果和基于GNN推理的模型预测结果比较一致 , 那么就说明GSC也有与GNN差不多的推理能力 。 实验发现 , 两次GSC的结果与groundtruth的交集有69%的重合率(下图第一个) , 而GSC与前面不同baseline和groundtruth也有60%左右的重合率 , 且与基于GNN推理的模型重合率更大 。 这表明GSC与GNN有差不多的推理能力 。