ABC论文摘记
常识:
-
类比平衡问题都是试图在不平衡数据集上训练出一个在类别平衡的测试集中平均类别精度高(这里的精度指的不是整体的精确度,而是各类别精确度的平均值,即少数类也同等重要)的模型。
-
论文图表中w/ w/o的意思
w/ => with
w/o => without -
step Imbalanced(阶梯式不平衡)和Exponential Imbalance(指数式不平衡)是研究类别不平衡问题时的两种不同的实验设置,其中exponential Imbalanced是更困难更极端的不平衡问题。
Step Imbalance(阶梯式不平衡):在这种情况下,数据集中的类别被划分为两组,一组是多数类(majority classes),另一组是少数类(minority classes)。多数类中的各个类别具有相同数量的样本,而少数类中的各个类别也具有相同数量的样本。然而,多数类和少数类之间的样本数量存在显著差异。这种分布类似于阶梯状的不平衡,其中两个层级(多数类和少数类)之间存在明显的样本数量差异。
Exponential Imbalance(指数式不平衡):在这种情况下,类别之间的样本数量呈指数级别的递减。也就是说,一个类别的样本数量是前一个类别样本数量的一部分(通常是一半)。这种不平衡方式会导致数据集中的一个或几个类别具有大量样本,而其他类别则样本数量非常有限。指数不平衡是一种更极端的不平衡类型,因为它可以导致部分类别非常稀少。
贡献:
提出了一种有效的CISSL(类不平衡半监督)算法,通过引入一个辅助平衡分类器(ABC)来缓解类别不平衡问题。
作者的做法:
ABC用一个类别平衡的损失来训练,具体来说,通过使用一个基于伯努利分布的0/1mask方法,使得minibatch中的各类样本都有相同的概率被取到,类似于在之前的SSL研究中的欠采样。与此同时,使用训练数据集中的全部数据训练而得的高质量特征表示。这是基于”解耦“那篇文章[17]的结论,即在不平衡数据集上训练的分类算法的分类器会偏向于大多数类,但不并影响特征提取器的学习,仍可以学到的高质量的特征表示。
作者将FixMatch 和 ReMixMatch这两个经典的半监督算法作为骨干网络,将ABC接到经典的半监督(SSL)算法的特征提取层的后面。其实ABC可以和任何同时使用了强数据增强和弱数据增强的半监督算法相结合。整体的流程图如下:Lcls是有标签样本的分类损失(用来训练ABC的)
其中,B为batchsize,M (·)表示0/1mask,B(·)表示参数为NL/Nyb的伯努利分布,即每个样本的M(xb)有NL/Nyb的概率取1,(1-NL/Nyb)的概率取0。NL代表最稀有的那个类别的样本数,Nyb代表该样本所属类别的样本数。α (xb)表示弱数据增强(flip翻转、crop裁剪、shift平移),pb表示带标签的样本xb的标签,ps表示模型,H是标准的交叉熵损失。
Lcon是一致性正则化损失(用来训练ABC的)
其中,B为batchsize, A(xb)表示强数据增强(RandomAugment、Cutout),max(qb)代表预测的置信度,τ代表置信度阈值,是一个经验值为0.95的超参数,qb表示模型给样本ub的弱数据增强分配的软伪标签,qb^=argmax(qb)
**注意,和FixMatch论文中的一致性正则化稍有区别,这里直接用强数据增强的软伪标签和弱数据增强的软伪标签做交叉熵,而不是和弱数据增强的软伪标签对应的硬标签做交叉熵!作者的解释是追求上最小化会加剧分类器朝头部类倾斜。**还有一点不同,这里对同一个样本分别进行了强两次数据增强,两次数据增强分别和对应的弱数据增强做交叉熵损失。
值得一提的是,该文章假设用于半监督学习的有标签数据集和无标签数据集的类别分布是相同的,这样无标签数据集才能直接以有标签数据集中各类别样本数为依据设计各类别采样的伯努利分布参数。
还有一点,为了充分利用训练初期预测置信度高于置信阈值τ的少数无标签样本,我们将ub的伯努利分布B(·)的参数从1逐渐降低到NL/N qb^ 即,训练早期碰上一两个伪标签置信度超过阈值的样本不容易,就别再用mask卡它们了,随着训练的进行,模型的分类能力不断提高,伪标签置信度超过阈值的样本数越来越多,慢慢地将伯努利分布的参数从1降到理论上的NL/N qb^。
与最近的CIL趋势不同,在表示学习完成后以平衡的方式微调分类器(即特征提取器和分类器的解耦学习)[17,27],我们通过端到端训练所提出的算法来获得平衡的分类器,
总体的损失函数如下:
其中,Lback为主干网络的损失(主干网络选用经典的SSL算法FixMatch或RemixMatch,Lback旨在用训练集中的权重样本训练一个高质量的特征提取器),最终推理时用只用ABC这个平衡的分类器来预测,而不用主干网络的不平衡分类器,即推理时不用上面的流程图中的Backbone Classifier!
作者的发现:
- 在重新加权的情况下,当类不平衡严重时,少数类样本参与训练时会产生异常大的梯度,导致训练不稳定。为缓解这些问题已经做了许多尝试,例如effective numbers[9]和基于元学习的重新加权。[28,15]
- 端到端训练比解耦特征提取器和分类器分步训练效果更好。
- 没有一致性正则化的置信阈值τ,训练变得不稳定,因此,ABC被训练成偏向某些类。
- 如果abc完全没有与主干网络(FixMatch或RemixMatch)配合使用,性能就会下降,因为纯用训练abc的损失来训练整个网络会导致一些样本无法参与训练,配合上用训练集中全部数据进行训练的主干网络可以学习到高质量的特征表示,即可以学到更好的特征提取器。
不成熟的想法:
Lcls和Lcon中是用交叉熵损失好还是用均方误差损失(L2范数)好?
参考文献:
[17] Kang, B., Xie, S., Rohrbach, M., Yan, Z., Gordo, A., Feng, J., and Kalantidis, Y. (2020). Decoupling representation and classifier for long-tailed recognition. In International Conference on Learning Representations.
[9] Cui, Y., Jia, M., Lin, T.-Y., Song, Y., and Belongie, S. (2019). Class-balanced loss based on effective number of samples. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 9268–9277.
[15] Jamal, M. A., Brown, M., Yang, M.-H., Wang, L., and Gong, B. (2020). Rethinking classbalanced methods for long-tailed visual recognition from a domain adaptation perspective. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 7610–7619.
[28] Ren, M., Zeng, W., Yang, B., and Urtasun, R. (2018). Learning to reweight examples for robust deep learning. In International Conference on Machine Learning, pages 4334–4343. PMLR.