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

你的 GNN,可能 99% 的参数都是冗余的
文章图片
文|iven
自从图卷积神经网络(GCN)面世以来 , 图神经网络(GNN)的热潮一瞬间席卷NLP 。 似乎在一切NLP任务上 , 引入一个图结构 , 引入一个GNN , 就能让模型拥有推理能力 。 更重要的是 , 似乎在实验结果上 , 也能证明GNN+NLP的有效性 。
具体地 , GNN+NLP可以分成以下两类任务:
在本来就需要图的任务上 , 比如知识图谱问答(KBQA) , 大家从问题和答案中抽取关键实体 , 从知识图谱中将这些实体 , 以及及所有路径提取出来 , 作为知识图谱针对这个问题提取出的子图 , 在这上使用GNN进行推理 。
在本来没有图的任务上 , 比如文档级的抽取或者理解任务 , 大家将文档中的关键实体作为节点 , 并用一些简单的规则连边(比如 , 在同一个句子里的实体连边、指代同一个概念的实体连边 , 等等) , 得到一张文档对应的图 , 在上面用GNN推理 。
看起来建图是有用的 , 可接下来 , 为啥一定要用GNN呢?最近的文章里 , 人们都说GNN有“推理能力” , 即GNN在图上的信息传播过程相当于在图上找路径 , 这些路径可以解释答案得到的推理步骤 。
在KBQA任务里 , GNN能在图中挑选出从问题实体到答案的推理路径 。 比如:
你的 GNN,可能 99% 的参数都是冗余的
文章图片
这里提问:哪里能找到有电梯的地下室呢?衣柜、教堂、办公楼 , 三选一 , 答案显然是办公楼 。 在这个case里 , 模型预测出了elevator→building→officebuilding和basement→building→officebuilding两条路径 , 这看起来都能解释答案的选择逻辑 。
在文档级关系抽取任务里 , GNN的推理路径就表示了关系的传递 。 比如:
你的 GNN,可能 99% 的参数都是冗余的
文章图片
图中右边是文本 , 大概讲的是二战中几个国家军队的故事 , 下划线的是实体;左边是WorldWarII这个实体 , 在两层GNN中 , 分别对所有实体的注意力权重 。 这样我们也能得到与前一个例子相似的一些推理路径:WorldWarII→NewIreland→Japan和WorldWarII→NewIreland→ImperialJapanesaeArmy 。 这也解释了为什么Japan与WorldWarII是“参与者”的关系 。
但是 , 问题来了!推理的必要条件其实只有一张图 , 我们真的需要GNN中复杂的节点与边的表示、复杂的信息聚集和传播 , 才能“推理”吗?
今天我们带来一篇杨迪一老师领衔的文章GNNisaCounter?RevisitingGNNforQuestionAnswering 。 这篇文章表明 , GNN被我们滥用了 , 推理真的不需要GNN!简简单单的一个计数器就足够!
论文题目:GNNisaCounter?RevisitingGNNforQuestionAnswering
论文链接:https://arxiv-download.xixiaoyao.cn/pdf/2110.03192.pdf
GNN真的有用吗
在介绍这篇文章之前 , 我们还是先来回顾下在KBQA问题上 , 大家用GNN的做法 。
KBQA的主要知识来源有两个方面:预训练模型中隐含的知识、知识图谱中显式的知识 。 为了用上预训练模型的知识 , 大家用预训练模型作为encoder , 得到实体和问题的表示;为了用上知识图谱中的知识 , 大家从知识图谱中抽取问题相关的子图 。 接下来将节点表示、边的表示作为输入 , 过几层GNN , 得到优化的节点表示 , 最后送给分类器分类 。
为了探究有没有必要使用GNN , 作者使用SparseVariationalDropout(SparseVD)给GNN的网络结构解剖 。 SparseVD原本是用来寻找网络结构中 , 哪些参数是不重要的 , 以此对模型进行剪枝和压缩 。 在这篇文章中 , 作者使用SparseVD探寻GNN中各层对推理过程的贡献 , sparseratio越低 , 代表这些参数越没用 。