欢迎关注公众号:DeepL Newer

MENU

LLD: 内部数据指导的标签去噪方法

December 11, 2021 • Read: 265 • Deep Learning阅读设置

很多数据集中的标签都存在错误,即便它们是由人来标注的,错误标签的存在会给模型训练带来某些负面影响。目前缓解这种影响有诸如删除错误标签、降低其权重等方法。ACL2022有一篇名为《A Light Label Denoising Method with the Internal Data Guidance》的投稿提出了一种基于样本内部指导的方法解决这个问题

先前有研究表明同一类别的样本在本质上是相似和相关的,不同类别的样本存在明显差异。在文本分类任务中,两个有着相似内容的句子应该被预测为同一个类别,但是实际情况并不总是这样。当训练数据面临一定程度的噪声时,这个问题可能会更加严重,因为模型只受到标签的指导/监督。这就自然而然提出了一个问题:除了标签之外,我们能否从训练样本之间的关系寻求指导?

以文本分类数据为例,有$n$个样本的数据集可以被定义为

$$ D = \{(x_1, y_1),...,(x_n, y_n)\} $$

其中,$y_i\in \{c_1, c_2,...,c_m\}$表示共有$m$类

Contextual Representation

我们首先需要一个指标判断两个句子是否相似。目前有两大类文本相似度计算方法,第一种是基于传统的符号表征,例如编辑距离、Jaccard Similarity Coeffieient以及Earth Mover's Distance;第二种是将文本映射为稠密的向量,然后计算它们的向量相似度。第一种方法过于依赖token的表面信息,第二种方法需要使用外部数据对模型进行预训练,而这个外部数据和我们的任务数据可能不是同一领域的。因此作者基于Postive Pointwise Mutual Information (PPMI)提出了一个新的上下文表征方法

首先,我们用一个长度为2的滑动窗口统计数据集中所有token的共现矩阵$C$。$C_{w_i, w_j}$表示前一个词是$w_i$,后一个词是$w_j$出现的次数,然后我们计算$C$的PPMI矩阵$E$:

$$ E_{ij} = \max (\log \frac{P(w_i, w_j)}{P(w_i)\cdot P(w_j)}, 0)\tag{1} $$

其中,$P(w_i), P(w_j), P(w_i, w_j)$分别是从共现矩阵$C$中计算得到的。最终,向量$E_{w_{i}}$是词$w_i$的表示

Word Weight

由于不同的词对于句子含义的贡献不同,我们更关注那些对分类更有帮助的词,而不是一些常见的词(例如a, the, of)。作者提出一个计算词$w_i$权重的算法:

$$ q_{w_{i}} = \log \frac{(p_c^{w_i} + \alpha) / ||p_c||_1}{(p_\tilde{c}^{w_i} + \alpha) / ||p_\tilde{c}||_1}\tag{2} $$

其中,$c$是词$w_i$出现频率最高的类别,$p_c^{w_i}$是类别$c$中单词$w_i$的样本数,$p_\tilde{c}^{w_i}$是除了类别$c$之外所有类别中单词$w_i$的样本数,$||p_c||_1$是类别$c$的样本数,$\alpha$是一个小的平滑值(例如0.1)。

Guiding the Training

给定包含$d$个单词的句子$a$,以及包含$e$个单词的句子$b$,它们的相似度为:

$$ T_{\text{sim}}(a,b) = \cos (\sum_{i=1}^d q_{w_i}E_{i}, \sum_{j=1}^eq_{w_j}E_j)\tag{3} $$

很明显,$T_{\text{sim}}(a,b)$总是大于0的,因为$q_{w_i}$一定大于等于0,向量$E_{i}$中的元素根据计算公式也都是大于等于0的,$\cos(A,B)$中,当向量$A$和$B$中的元素都大于等于0时,结果一定大于0

在含有$m$个类别的文本分类任务中,模型对于第$i$个样本的预测概率分布可以记为

$$ l_i = [l_{i1}, l_{i2},...,l_{ik},...,l_{im}] $$

其中,$l_{ik}>0$并且$\sum_{k=1}^m l_{ik}=1$。因此模型对于样本$a$和$b$预测概率分布的相似度为

$$ L_{\text{sim}}(a, b) = \cos (l_a, l_b)\tag{4} $$

在训练过程中,损失函数定义为:

$$ \begin{aligned} \mathcal{L} = &\sum_{k=1}^s \text{CE}(y_k, l_k)\\& + \sum_{i=1}^s \sum_{j=1}^s \gamma(T_{\text{sim}}(i,j) - L_{\text{sim}}(i,j))^2 \end{aligned}\tag{5} $$

其中

$$ \gamma = \begin{cases}1, \quad {\text{if }}T_{\text{sim}}(i,j) > \beta\\ 0,\quad \text{otherwise} \end{cases} $$

换言之,当两个句子的相似度大于阈值$\beta$时,我们就认为它们非常相似,那么它们的标签大概率应该是相同的,反映到预测概率分布上,它们预测概率分布向量的余弦相似度应该接近于1才对,如果单纯这么考虑的话,实际上我们有如下定义的损失函数

$$ \begin{aligned} \mathcal{L} = &\sum_{k=1}^s \text{CE}(y_k, l_k)\\& + \sum_{i=1}^s \sum_{j=1}^s \gamma(1- L_{\text{sim}}(i,j))^2 \end{aligned}\tag{6} $$

极端情况下,当$L_{\text{sim}}(i,j)=1$时,加法后面所带来的损失就为0了;当$L_{\text{sim}}(i,j)=0$时,后面是有损失的

Result

论文的实验阵容还算豪华,某种程度上来说让人比较意外的地方是这种简单修改损失函数的办法居然超过了R-Drop。其中LLD-DW将矩阵$E$用Word2vec进行替换,其他步骤保持不变,结果发现用Word2vec反而没有作者提出的简单统计方法好

个人总结

这篇文章本质上来讲,可以看作是多目标联合训练,除了传统的分类任务,引入了一个新的任务,这个任务的目标是希望两个句子的相似度与它们预测概率分布的相似度比较接近。反映到损失函数中来看就是在传统损失的后面添加了一项。阅读完这篇论文之后,说实话我不太确定它能否被ACL录用

Last Modified: January 11, 2022
Archives Tip
QR Code for this page
Tipping QR Code