RSG A Simple but Effective Module for Learning Imbalanced Datasets 论文学习

编程入门 行业动态 更新时间:2024-10-03 06:23:14

RSG A Simple but Effective Module for Learning Imbalanced Datasets <a href=https://www.elefans.com/category/jswz/34/1770125.html style=论文学习"/>

RSG A Simple but Effective Module for Learning Imbalanced Datasets 论文学习

Abstract

不均衡的数据集在实际操作中广泛存在,对神经网络的训练构成了一个巨大挑战,很难泛化到低频出现的类别上。本文作者提出了一个稀有类别样本生成器(rare-class sample generator, RSG)来解决该问题。RSG 在训练过程中会针对稀有类别,生成一些新样本,它具有以下几项优势:(1)使用很方便且多用途,可以很容易就整合到任意的 CNN 中,与不同的损失函数搭配使用效果很好。(2)它只在训练阶段使用,不会增加推理阶段的负担。作者进行了大量的实验来证明它的性能。作者在 Imbalanced CIFAR 数据集上取得了很棒的成绩,在 Places-LT、ImageNet-LT 和 iNaturalist 2018 数据集上实现了新 SOTA 的成绩。代码位于:。

1. Introduction

在过去几年得益于 CNN 的出现和高质量的大规模数据集的使用,计算机视觉取得了突飞猛进。但是这些大规模数据集通常都是精心设计的,每个类别中的样本个数都比较均衡,这和现实世界中的数据分布是不一致的。我们经常遇到一些类别的样本很难搜集的情况,造成数据分布极不均衡。根据数据的分布,不均衡的数据集通常可以分为两类:长尾不均衡分布和阶梯不均衡分布,本文对二者都做了研究。

在训练过程中,针对稀有类别生成一些新样本,这个想法是不错的,可看作为数据增广的一种方式。但是,这些方法各有缺陷,限制了模型性能。首先,一些框架并不是端到端训练的,梯度无法被反向传播,然而深度模型通常会从端到端的训练过程中受益。其次,一些方法利用了常见类别样本的变化信息(如不同的姿态或光照),学习常见类别的样本来生成稀有类别新的样本。但是,这些方法无法保证这些变化信息和类别无关。如果直接将变化信息和稀有类别的样本结合,然后产生稀有类别新下样本,再去训练分类器、调整决策边界,但这种方式会造成模型性能的下降,因为可能会造成“张冠李戴”、混淆(alias)不同类别的相关信息。Wang 等人使用随机的噪声向量来编码这些变化信息,这可能会产生不稳定的、质量差的样本,因为噪声向量太过随机,无法反映真实图像中的真实变化。


图1. CNN 中的 RSG。虚线框只在训练时使用。RSG 学习生成稀有类别的新样本,重塑决策边界、扩张稀有类别的特征空间。

为了弥补上述缺陷,本文提出了一个简单而高效的全参数化生成器,叫做 RSG,可以搭配任何主干网络端到端地训练。RSG 直接使用变化信息,这些变化信息反映了常见类别的样本所具有的各种姿态和光照,然后再生成新样本,而不是使用随机向量来编码这些信息。因此 RSG 能够生成更加合理的、稳定的样本。此外,RSG 引入了一个新模块,进一步过滤掉变化信息中可能存在的、与常见类别有关的信息,解决“张冠李戴”的问题。

图1展示了如何在 CNN 中加入 RSG 模块,来解决不均衡数据集的问题。RSG 只需要某一层的样本特征图,在训练过程中产生一些新样本,以此来调整稀有类别的决策边界,扩张其特征空间。测试时不使用 RSG,这样就不会增加计算负担。RSG 可以用在任何网络结构中,如 ResNet、DenseNet、ResNeXt 和 Inception。

2. Related Work

最近出现的用于解决数据不均衡的方法,大体可分为下面几类:基于重采样和重加权的、基于新的损失函数、基于元学习、基于未标注数据的,和基于样本生成的方法。

重采样方法包括对稀有类别进行过采样,对常见类别进行降采样,以此平衡数据的分布。重加权方法为常见类别和稀有类别赋予不同的权重,从而解决数据不均衡问题。另一类方法则设计新的损失,对常见和稀有类别直接施加约束,从而影响它们的决策边界。有人也提出了基于元学习的方法来解决该问题。Yang和Xu 分析了不均衡标签的问题,通过半监督和自监督策略,利用未标注数据来改善数据不均衡的学习。

样本生成方法与本文的方法要更加贴近。[36] 为生成稀有类别的新样本,提出了 hallucinator。它使用稀有类别中真实存在的样本以及噪声向量来产生稀有类别的新样本。[8]提出了一个 Δ − \Delta- Δ−编码器来生成新样本。它首先通过训练,针对常见类别的输入图像,重新构建其提前计算出的特征向量。然后和真实存在的稀有类别的样本结合,生成新样本,用这些新样本来训练分类器。[38]提出了一个特征迁移学习(FTL)框架,包括一个自编码器、特征滤波器和全连接层。一开始,在大规模数据集上训练自编码器几个 epochs,直到其收敛,学习隐含的表征。然后通过生成新的稀有类别样本,利用 PCA 将常见类别的类内变化迁移到稀有类别上。作者也提出了一个双阶段交替训练的策略,协同优化该编码器、特征滤波器和全连接层。

3. RSG

稀有类别样本生成器 RSG 由一个中心估计模块、对比模块和一个向量变换模块组成(参考图2)。为了优化 RSG 的参数,作者使用了2个损失函数,即中心估计的样本对比(CESC)损失和最大向量(MV)损失。

RSG 假设每个类的样本都服从单模态或多模态分布,在每个类都会有一个中心点或多个中心点来服从该分布。作者定义了特征位移,表示样本相对于某一类内对应中心点的位移,这可能是输入图片中同一目标在不同条件(如角度、姿态或光照)下造成的。因此,在理想状态下,特征位移不应该包含类别相关信息。

给定一个 mini-batch,包含常见和稀有类别样本,RSG 将它们的特征图作为输入,前向传进各个模块。中心估计模块会预测每个类别的一组中心点,作为 anchors 来获取每个样本的特征位移。对比模块确保在样本生成过程中,不会包含任何的常见类别的相关信息。向量变换模块根据预测的中心点,计算每个常见类别样本的特征位移,然后用于稀有类别的样本生成。将常见类别中得到的特征位移用于稀有类别的样本生成,应该可以减轻数据集不均衡的问题,因为稀有类别通常缺少输入变化。

中心预测模块的表达式如下:

γ l = f ( A l a v e ( x l ) + b l ) (1) \gamma^l = f(A^l ave(x^l) + b^l \tag{1}) γl=f(Alave(xl)+bl)(1)

其中 x l ∈ R D × W × H x^l\in \mathcal{R}^{D\times W\times H} xl∈RD×W×H 是输入样本的特征图, D , W , H D,W,H D,W,H分别是其通道维度、宽度和高度。 l l l是样本的类别标签, a v e ( ⋅ ) ave(\cdot) ave(⋅)表示全局平均池化, A l , b l A^l,b^l Al,bl是该模块对输入做线性变换的参数, f f f是 softmax 函数,输出将某样本赋给其相应类别最近的中心点的概率分布 γ l \gamma^l γl。

中心预测模块对每个类会预测一组中心点,而非一个点,因为类内数据分布是未知的。如果类内数据分布是多模态分布,使用一组点要更好一些。如果是单模态分布,这些点可能会距离很近或重叠,这和单个中心点相似。


图2. RSG 的图示,样本特征图作为输入。蓝色虚线表示决策边界。

对比模块的表达式如下:

γ ∗ = f ( A ∗ a v e ( h ( c a t [ x 1 , x 2 ] ) ) + b ∗ ) (2) \gamma^* = f(A^* ave(h(cat[x_1, x_2])) + b^*) \tag{2} γ∗=f(A∗ave(h(cat[x1​,x2​]))+b∗)(2)

其中 x 1 ∈ R D × W × H , x 2 ∈ R D × W × H x_1 \in \mathcal{R}^{D\times W\times H}, x_2\in \mathcal{R}^{D\times W\times H} x1​∈RD×W×H,x2​∈RD×W×H 是给定 mini-batch 中两个输入样本的特征图,其中 c a t ( ⋅ ) cat(\cdot) cat(⋅)表示 concat 操作,沿着通道维度执行。 h ( ⋅ ) h(\cdot) h(⋅)是通过两个256通道的 3 × 3 3\times 3 3×3卷积层实现的,并有一个 ReLU 层。 A ∗ , b ∗ A^*, b^* A∗,b∗是线性层的参数,得到概率分布 γ ∗ \gamma^* γ∗,表示两个样本是否来自于同一个类别。

向量变换模块 将常见类的真实样本和稀有类的真实样本的特征位移结合起来,生成稀有类别的新样本。如图1所示,不均衡数据集会造成决策边界的偏差,造成稀有类别的特征空间要小于常见类别。所以,作者提出使用向量变换模块来生成稀有类别的新样本,扩大特征空间,推开决策边界。

为了生成新样本,我们首先需要获得常见类的特征位移,这是通过常见类的样本和它们相应的中心点来实现的,这些中心点由中心预测模块得到:

x fd-freq = x freq l − u p ( C K l ) , (3) x_{\text{fd-freq}} = x_{\text{freq}}^l - up(C_\mathcal{K}^l), \tag{3} xfd-freq​=xfreql​−up(CKl​),(3)

其中 x freq l ∈ R D × W × H x_{\text{freq}}^l\in \mathcal{R}^{D\times W\times H} xfreql​∈RD×W×H表示常见类 l l l的一个样本。我们用 C i l ∈ R D C_i^l\in \mathcal{R}^D Cil​∈RD来表示 l l l类的第 i i i个中心点,其维度是 D D D, K \mathcal{K} K是 x freq l x_{\text{freq}}^l xfreql​最接近的中心点的索引,即 K = arg ⁡ max ⁡ f ( A l a v e ( x freq l ) + b l ) \mathcal{K}=\arg\max f(A^l ave(x_{\text{freq}}^l) + b^l) K=argmaxf(Alave(xfreql​)+bl)。 u p ( ⋅ ) up(\cdot) up(⋅)表示上采样操作,沿着宽度和高度维度复制 C i l C_i^l Cil​的值,得到一个中心点的特征图,它的大小和 x freq l x_{\text{freq}}^l xfreql​一样。然后从 x freq l x_{\text{freq}}^l xfreql​减去相应的中心特征图,这样 x freq l x_{\text{freq}}^l xfreql​中和类别相关的信息就被去除了。所以,我们用 x fd-freq x_{\text{fd-freq}} xfd-freq​代表常见类样本的特征位移。

然后,第二步就利用 x fd-freq x_{\text{fd-freq}} xfd-freq​和稀有类的真实样本来为稀有类生成新的样本。 x fd-freq x_{\text{fd-freq}} xfd-freq​可以加到稀有类的中心点上,但是作者出于两个原因,直接将 x fd-freq x_{\text{fd-freq}} xfd-freq​加到稀有类的真实样本上:首先,一些 x fd-freq x_{\text{fd-freq}} xfd-freq​的长度可能要小于稀有类的特征空间的原始方差。如果我们将 x fd-freq x_{\text{fd-freq}} xfd-freq​加到中心点上,新样本可能就不会对决策边界有影响。其次,因为稀有类样本的大小有限,大多数稀有类样本可以直接决定出决策边界,将 x fd-freq x_{\text{fd-freq}} xfd-freq​加到稀有类的样本上能更直接地影响决策边界。

所以,稀有类的新样本生成过程如下:

x new l ′ = T ( x fd-freq ) + x rare l ′ (4) x_{\text{new}^{l'}} = \mathcal{T}(x_{\text{fd-freq}}) + x_{\text{rare}^{l'}} \tag{4} xnewl′​=T(xfd-freq​)+xrarel′​(4)

其中 x rare l ′ ∈ R D × W × H x_{\text{rare}^{l'}}\in \mathcal{R}^{D\times W\times H} xrarel′​∈RD×W×H表示稀有类 l ′ l' l′的一个样本, x new l ′ x_{\text{new}^{l'}} xnewl′​表示该类中新生成的样本, T \mathcal{T} T是线性变换,定义为 T ( z ) = c o n v ( z ) \mathcal{T}(z)=conv(z) T(z)=conv(z),其中 c o n v conv conv是单个卷阶层,包括一组卷积滤波器,核大小为3、步长为1、padding 大小为1,通道数和输入特征图的通道数一样。

用样本对比损失( L CESC L_{\textbf{CESC}} LCESC​)来预测中心点,目的是更新每个类别的中心点,优化对比模块及中心点预测模块。因此,它有两个经典损失项构成,可以写作:

L C E S C = ⟨ ∑ i = 0 K − 1 γ i l ∑ d , j , k ∣ ∣ x ( d , j , k ) l − u p ( C i l ) ( d , j , k ) ∣ ∣ 2 ⟩ s L_{CESC}=\Bigg\langle \sum_{i=0}^{K-1} \gamma_i^l \sum_{d,j,k} ||x^l_{(d,j,k)} - up(C_i^l)_{(d,j,k)}||^2 \Bigg\rangle_s LCESC​=⟨i=0∑K−1​γil​d,j,k∑​∣∣x(d,j,k)l​−up(Cil​)(d,j,k)​∣∣2⟩s​
− ⟨ ( y log ⁡ γ ∗ + ( 1 − y ) log ⁡ ( 1 − γ ∗ ) ) ⟩ s 2 (5) - \langle (y\log\gamma^* + (1-y)\log(1-\gamma^*)) \rangle_{\frac{s}{2}}\tag{5} −⟨(ylogγ∗+(1−y)log(1−γ∗))⟩2s​​(5)

其中 d , j , k d,j,k d,j,k表示特征图上通道、宽度和高度的索引。 γ i l \gamma_i^l γil​是样本属于第 i i i个中心点的概率,从等式2中得到。 K K K是每个类内中心点的个数, s s s是batch size。假设一个 batch 大小是 s s s,在训练对比模块时,我们从这个 mini-batch 中随机选择 s 2 \frac{s}{2} 2s​对样本。用 y ∈ { 0 , 1 } y\in \{0,1\} y∈{0,1} 来表示每一对输入样本是否来自同一个类别。 ⟨ ⋅ ⟩ \langle \cdot \rangle ⟨⋅⟩和 ⟨ ⋅ ⟩ s 2 \langle \cdot \rangle_{\frac{s}{2}} ⟨⋅⟩2s​​表示 L C E S C L_{CESC} LCESC​的第一项和第二项,分别从 s s s个样本和 s 2 \frac{s}{2} 2s​对样本上均值计算得到。


图3:向量变换模块和 MV 损失的目的与原理。三角形和圆圈与图2中的涵义相同。

最大向量损失 ( L MV ) (L_{\textbf{MV}}) (LMV​) 优化向量变换模块的参数,即 T \mathcal{T} T,确保新生成的样本能够扩张稀有类的特征空间,基本思想是最大化新生成样本相对于它们中心点的特征位移(即图3中的整体特征位移)。这里,我们将一个样本的特征位移看作为它到中心点的向量(见图3)。为了生成一个新的稀有类样本,我们可以直接将 x fd-freq x_{\text{fd-freq}} xfd-freq​ 加到稀有类样本上(图3左),但是 x fd-freq x_{\text{fd-freq}} xfd-freq​ 通常是不确定的,新的特征位移的长度不会总是最大的,因为三角不等式的关系。因而作者设计了 MV 损失,让变换向量与相同方向上的稀有类样本的特征位移共线,而变换向量的长度不变(图3右),从而最大化地影响决策边界。打个比方,如果直接进行相加,新生成的样本因为总体长度有限,可能就作用不到决策边界上。但是利用向量变换模块和 MV 损失,确保了新生成的样本广泛分布在稀有类别的特征空间中,因为其相对于中心点的位移量更大,这也保证了在训练过程中,新生样本出现在每个 batch 的决策边界的周围。

此外,对于一个常见类别的样本,尽管我们通过等式3计算出样本的特征位移后,常见类别的相关信息会在很大程度上被去掉,但我们仍需对比模块来确保该特征位移不包含常见类别相关信息,这样当生成新的稀有类别样本时,就进一步减轻了可能出现的类别相关信息“张冠李戴”的问题。 γ ∗ \gamma^* γ∗是对比模块中两个输入样本不属于同一类别的概率,MV 损失为:

L MV = ⟨ ∑ j , k ( ∣ T ( x fd-freq ) ( j , k ) ⋅ x fd-rare ( j , k ) ∥ T ( x fd-freq ) ( j , k ) ∥ 2 ∥ x fd-rare ( j , k ) ∥ 2 − 1 ∣ ) ⟩ s n e w L_{\textbf{MV}} = \Bigg \langle \sum_{j,k}(|\frac{\mathcal{T}(x_{\text{fd-freq}})^{(j,k)}\cdot x_{\text{fd-rare}}^{(j,k)}}{\left\| \mathcal{T}(x_{\text{fd-freq}})^{(j,k)}\right \|_2 \left\| x_{\text{fd-rare}}^{(j,k)}\right\|_2}-1|) \Bigg \rangle_{s_{new}} LMV​=⟨j,k∑​(∣∥∥​T(xfd-freq​)(j,k)∥∥​2​∥∥∥​xfd-rare(j,k)​∥∥∥​2​T(xfd-freq​)(j,k)⋅xfd-rare(j,k)​​−1∣)⟩snew​​

+ ⟨ ∑ j , k ( ∣ ∥ T ( x fd-freq ) ( j , k ) ∥ 2 − ∥ x fd-freq ( j , k ) ∥ 2 ∣ ) ⟩ s n e w + \Bigg \langle \sum_{j,k}(\left| \left\| \mathcal{T}(x_{\text{fd-freq}})^{(j,k)} \right\|_2 - \left\| x_{\text{fd-freq}}^{(j,k)}\right\|_2 \right|) \Bigg \rangle_{s_{new}} +⟨j,k∑​(∣∣∣​∥∥∥​T(xfd-freq​)(j,k)∥∥∥​2​−∥∥∥​xfd-freq(j,k)​∥∥∥​2​∣∣∣​)⟩snew​​

− ⟨ log ⁡ γ ∗ ⟩ s n e w (6) - \langle \log \gamma^* \rangle_{s_{new}} \tag{6} −⟨logγ∗⟩snew​​(6)

其中 j , k j,k j,k分别表示特征图宽度和高度维度上的索引, ∣ ⋅ ∣ \left| \cdot \right| ∣⋅∣ 取绝对值, x fd-rare x_{\text{fd-rare}} xfd-rare​表示一个样本相对于稀有类别中其最近中心点的特征位移,通过等式3得到。对比模块的两个输入样本分别是 T ( x fd-freq ) \mathcal{T}(x_{\text{fd-freq}}) T(xfd-freq​)和 x freq l x^l_{\text{freq}} xfreql​。 L MV L_{\textbf{MV}} LMV​的第一项用于最小化 T ( x fd-freq ) \mathcal{T}(x_{\text{fd-freq}}) T(xfd-freq​)和 x fd-rare x_{\text{fd-rare}} xfd-rare​的余弦角度,这样它们就在相同的方向上共线了,第二项目的是让 T ( x fd-freq ) \mathcal{T}(x_{\text{fd-freq}}) T(xfd-freq​)的长度不变,与 x fd-freq x_{\text{fd-freq}} xfd-freq​相比。第三项是让 T ( x fd-freq ) \mathcal{T}(x_{\text{fd-freq}}) T(xfd-freq​)和 x freq l x_{\text{freq}}^l xfreql​不属于同一类别,确保 T ( x fd-freq ) \mathcal{T}(x_{\text{fd-freq}}) T(xfd-freq​)不会有任何的常见类别相关的信息。给定一个 mini-batch 的样本, ⟨ ⋅ ⟩ s n e w \langle\cdot \rangle_{s_{new}} ⟨⋅⟩snew​​表示 L MV L_{\textbf{MV}} LMV​是在新生样本上均值计算得到的,其中 s n e w s_{new} snew​是新生样本的个数。

RSG的训练过程和损失函数在算法1和下面都分别列出来了:

L t o t a l = L c l s + λ 1 L C E S C + λ 2 L M V (7) L_{total} = L_{cls} + \lambda_1 L_{CESC} + \lambda_2 L_{MV} \tag{7} Ltotal​=Lcls​+λ1​LCESC​+λ2​LMV​(7)

其中 L c l s L_{cls} Lcls​表示任意一个分类损失,如 softmax with cross-entropy loss,focal loss,AM-Softmax, LDAM 等, λ 1 , λ 2 \lambda_1, \lambda_2 λ1​,λ2​表示系数。本文中,epoch 的阈值 T t h T_{th} Tth​设为当学习率衰减到0.001 时的 epoch 索引值。

RSG 的流程如图2所示。在 epoch 阈值 T t h T_{th} Tth​之前,对于mini-batch 中的一个样本,RSG 根据手动设定的常见类别比值 α = n f r e q / n c l s \alpha = n_{freq}/n_{cls} α=nfreq​/ncls​,将它分为两部分,其中 n f r e q , n c l s n_{freq},n_{cls} nfreq​,ncls​分别表示常见类别的个数和所有类别的个数。比如,对于一个有10个类别的训练集, α = 0.3 \alpha=0.3 α=0.3,样本数最多的三个类别就是常见类别,其它类别就是稀有类别。(为了简单表示,图2中只有一个常见类别和稀有类别。)然后,将数据输入进中心点预测模块,更新每个类的中心点,优化中心预测模块的参数。此外,这些数据也会输入进对比模块,优化其参数。在 epoch 阈值 T t h T_{th} Tth​之后,RSG 开始生成新样本,对比模块的参数不会再更新。通过向量变换模块来计算常见类别中每个样本的特征位移,然后通过 T \mathcal{T} T来变换,通过一个人为设定的参数迁移权重 β \beta β来随机加到稀有类别的数据上去,生成出新样本。对比模块会将梯度传给向量变换模块的 T \mathcal{T} T,从而优化 T \mathcal{T} T,过滤掉常见类别相关的信息。通常,常见类别的样本数不会少于 mini-batch 中稀有类别的样本数。作者将参数迁移权重 β \beta β定义为,在计算特征位移、生成稀有类别的新样本的过程中,常见类别中样本的个数。新生样本的个数 s new = max ⁡ { ⌊ β × s freq / s rare ⌋ , 1 } × s rare s_{\text{new}} = \max\{\lfloor \beta \times s_{\text{freq}}/s_{\text{rare}} \rfloor, 1\} \times s_{\text{rare}} snew​=max{⌊β×sfreq​/srare​⌋,1}×srare​,其中 s freq s_{\text{freq}} sfreq​和 s rare s_{\text{rare}} srare​是mini-batch 中常见类别的样本数和稀有类别的样本数, ⌊ ⋅ ⌋ \lfloor \cdot \rfloor ⌊⋅⌋是取底函数。最后,新生样本的特征图会沿着 batch 维度和原始的输入特征图 concat 起来,然后输入到后续的网络层中,计算损失并优化整个网络。

更多推荐

RSG A Simple but Effective Module for Learning Imbalanced Datasets 论文学习

本文发布于:2024-02-28 05:43:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1768288.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:论文   Effective   Simple   RSG   Module

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!