【论文精读】The Devil is the Classifier: Investigating Long Tail Relation Classification with Decoupling

这篇文章是浙江大学2020年9月15号推到Arxiv上的。

文章的初始出发点应该是来自,关系抽取数据集由于数据存在长尾特征,因此直接从数据中学习语义,必定是不均衡的【样本多的语义容易过拟合某个类别中的头部样本,样本少的语义容易过拟合某个类别中的单个样本】。

因此采用引入外部预训练的词向量来进行语义embedding就说得通。
同时又知道,我们有三种采样的方式,来进行长尾数据集的再平衡,即将长尾数据集变成某种意义上的平衡数据集。分别是instance balance, class balance和re-weighted loss。Ok,那么我们通过这三个方法,结合bert可以训练出三种representation。

由于Bert模型同时包括预训练的词向量,这个预训练词向量经常为人们拿来做预训练模型。还包括一个分类器,即一个全连接层去给词进行分类预测。由于本文场景是关系抽取,因此最后的全连接层用来根据样本预测关系。【自己要实现要给bert-base-uncased】

那么究竟是预训练的词向量作用大,还是分类器(分类矩阵)的作用大?
整篇文章的分析建立在一个解耦实验上。该文章将解耦实验分成了两个step:
1. 用三种方式训练出表示层:instance-balance sampling, class-balance sampling, re-weighted loss。
2. 然后固定表示层的参数,再去训练分类器。在这里插入图片描述

上图就是九组实验,采用了控制变量的思想:
1. 如果在第一步使用IBS的representation,那么可以看到使用REL和CBS的分类器效果好于使用IBS的分类器。
2. 固定第二步的分类器为RWL,那么可以看到无论使用哪种表示方法,其实对模型的影响都不大。

通过如上的解耦实验,我们可以得出本文题目给出的结论,即:

分类器是个魔鬼啊!就是这个魔鬼导致我们的模型无法去给有长尾特征的关系抽取数据集进行分类!

注:评价指标是macro F1值。

原本我以为这篇文章到这里就已经反映出了标题中的全部信息。没想到啊,作者还给了个解决方案,提出了一个更好的分类器叫做Attentive relation routing(ARR)来boost模型的表现。他的motivation来自[2017 Dynamic routing between capsules. ][ 2020Capsules with inverted dot-product attention routing ] (which is able to assign soft weights via route-by-agreement )。

之前focal loss和dice loss是采用hard weight使分类器匹配测试集的分布。而motivation采用了soft weight,方法是route-by-agreement。方法本身并不是熟悉的网络拼接,还需要再看一下参考文献[2017 Dynamic routing between capsules. ][ 2020Capsules with inverted dot-product attention routing ]。

证明该文方法效果好的主实验就是使用bert-base-uncased的表示层,然后把该文提出的ARR作为分类器,进行关系分类。

该文在数据集方面有一个设计:通过FewRel平衡数据集构建了一个长尾数据集,基于公式:
在这里插入图片描述
其中 n i n_i ni的意思是第i个类别的削减后的训练样本数目, n m a x n_{max} nmax是样本最多的类别的样本数目, y i t a yita yita 是最大样本数除以最小样本数作为不平衡率。
验证集合和测试集合平均从每个RelRel的每个类别种抽取100个样本。最后构建出的FewRel-LT(long tail),以及原本有长尾特征的Tacred数据集样本统计如下:
在这里插入图片描述
文章还做了进一步的分析,对于样本数量不同的类别,模型对每个类别的分类能力又是什么样子呢?

那么将FewRel-LT所有的类别根据样本数目分成三组:样本数大于100为一组;样本数处在20到100为一组;样本数目小于20为一组。(为了避免信息泄露,作者移除了train和test种具有相同实体对的样本)。
在这里插入图片描述

从该图中可以看到,class-balance对比base(instance balance)提升了尾部,但是中部降低。
Focal loss 提升了头部但是后面两个部分降低。而本文方法在各个组内都有所升高.

自己还要补充学习:
1. 最后都分组对比了,为什么不直接比较一下各个类别上的分类能能力.
2. macro F1的深度理解.
3. 文章将来还要结合neural architecture search来辨别更好的表示和分类器.

猜你喜欢

转载自blog.csdn.net/xiangduixuexi/article/details/109254462