不平衡之钥: 重加权法知几何

专栏系列文章 - 知乎一、算法面经篇枫桦:深度学习算法工程师面经(微软、阿里、商汤、滴滴、华为、海康、平安、陌陌等offer)之上篇 枫桦:深度学习算法工程师面经(微软、阿里、商汤、滴滴、华为、海康、平安、陌陌等offer)之下篇二、…https://zhuanlan.zhihu.com/p/505017083

1. 概述

《不平衡问题: 深度神经网络训练之殇》一文中,笔者已对缓解不平衡问题的方法进行梳理。限于篇幅原因,介绍比较笼统。在《不平衡之钥: 重采样法何其多》一文中,梳理了缓解不平衡问题的各种重采样方法。

重加权,也称为代价敏感学习,通过调整训练期间不同类别的损失值来对类别进行重新平衡,近期的研究提出了各种代价敏感学习方法来处理类别不平衡问题,包括类别级重加权和类别级re-margining,大家熟知的Focal loss、动态权重等都属于重加权方法。

2. 类别级重加权

2.1 Weighted Softmax Loss

最直觉的方法是直接使用训练样本的标签频率对损失进行重新加权,即加权softmax损失。基于样本影响[3]或模型预测和平衡参考分布之间的分布对齐[4],通过调整标签频率对损失权重的影响,可以进一步改善这种损失。除了损失值重新加权外,平衡softmax[5]提出在训练期间使用标签频率来调整模型预测,以便通过先验知识来缓解类别不平衡的偏差。随后,LADE[6]引入了标签分布分离损失,将学习的模型从不平衡训练分布中分离出来,然后在测试标签频率可用的情况下,模型可以适应任意的测试类别分布。

2.2 Class Balance Loss

类别平衡损失 (CB)[7]没有使用标签频率,而是引入了有效数的概念来近似不同类的预期样本数,有效数是训练样本数的指数函数。 遵循这一概念,类别平衡损失强制使用类别平衡重加权项来解决类别不平衡问题,该加权项与类别的有效数成反比。

2.3 Focal Loss

Focal loss [8] 探索了重加权的类别预测难度。 具体来说,focal loss的灵感来自于观察到类别不平衡通常会增加尾部类的预测难度,其预测概率会低于头部类的预测概率。 因此,Focal loss 使用预测概率来反向对类别重加权,以便它可以为较难的尾部类分配更高的权重,而为更容易的头部类分配较低的权重。

2.4 Meta-Weight-Net

除了使用预定义的加权损失函数,也可以从数据中学习类别权重。 Meta-Weight-Net [9] 在平衡的验证集指导下,更新了由一层 MLP 近似的权重函数以拟合不平衡分布,在均匀分布的测试集中获得良好的性能。

2.5 DisAlign

分布对齐 (DisAlign)[10]提出了一种自适应的校准函数来校准模型分类器,校准函数通过最小化调整的预测分布和给定的平衡参考分布之间的KL散度自适应地学习。

2.6 Distribution-balanced loss

不平衡学习中的另一个问题是负梯度过度抑制,也就是说,在 softmax 或 sigmoid 交叉熵中,一个类的每个正样本都可以被视为其他类的负样本,从而导致尾部类接收到更多的梯度抑制。 为了解决这个问题,分布平衡损失[11]通过一种新的negative-tolerant regularization来缓解梯度过度抑制。 同时,它还评估每个类的预期采样频率和实际采样频率之间的差距,然后使用这两个频率的商来重新计算不同类别的加权损失值。

2.7 Equalization loss

当尾部类样本作为大量头部类样本的负样本对时,Equalization loss[12]直接降低尾类样本的损失值权重。 Equalization loss v2 [13] 通过将多类别检测问题建模为一组独立的子任务,其中每个子任务专注于一个类,进一步扩展了Equalization loss。 更具体地说,Equalization loss v2 引入了一种新颖的梯度引导重加权机制,以动态地提高正梯度的权重并降低负梯度的权重,以便在每个子任务上进行模型训练。

2.8 Seesaw loss

Seesaw loss [14] 使用两个重加权因子 (即减缓因子和补偿因子)重新平衡每个类别的正负梯度。 为了解决梯度过度抑制问题,减缓因子根据不同类之间累积样本数的动态比率来减轻训练期间对尾类的惩罚。 同时,如果观察到假阳性样本,则补偿因子会提高对相应类别的惩罚权重,以提高模型区分度。

2.9 ACSL

自适应类抑制损失 (Adaptive class suppression loss,ACSL) [15] 使用输出置信度来决定是否抑制负标签的梯度。 具体来说,如果负标签的预测概率大于预定义的阈值,则应该混淆模型,因此将此类的权重设置为 1,以提高模型识别能力;否则,权重设置为 0 以避免负过度抑制。

3. 类别级re-margining

类别级re-margining通过调整不同类别学习到的特征和模型分类器之间的最小距离来处理类别不平衡。

3.1 LDAM

label-distribution-aware margin (LDAM)[16]使用基于标签频率的类别依赖的边距,并鼓励尾部类别具有更大的边距,扩展了现有的soft margin loss。然而,仅仅使用LDAM损失在经验上不足以处理类别不平衡。因此,LDAM进一步引入了deferred re-balancing optimization schedule,在学习LDAM损失一段时间后,通过类别平衡的方式重加权LDAM损失来重新平衡类别。

3.2 Bayesian estimate

贝叶斯估计[17]发现类别预测不确定性与训练标签频率成反比,即尾部类更不确定。 受此启发,贝叶斯估计提出使用估计的类级不确定性来重新调整损失的边距,使得具有较高类别不确定性的尾类将遭受更高的损失值,从而在特征和分类器之间具有更大的边距。

3.3 Domain balancing

领域平衡[18]研究了一个不平衡域问题,其中频繁出现少量域(包含多个类),而其他域较少。 为了解决这个问题,这项工作引入了一种基于类间特征紧凑性的新域频率指标,并使用该指标重新划分尾域的特征空间。

3.4 LOCE

LOCE [19] 使用平均分类预测分数来监控不同类的学习状态,并将其应用于指导类级边距调整以提高尾部类的性能。

3.5 PML

渐进式边距损失 (Progressive margin loss, PML)[20] 使用两个边距项调整不平衡学习的分类边距:顺序边距 (ordinal margin)和变分边距 (variational margin)。 顺序边距旨在提取判别特征并保持年龄顺序关系,变分边距试图逐步抑制头部类以处理不平衡训练样本中的类别不平衡问题。

3.6 RoBal

RoBal [21] 认为,鼓励尾部类更大边距的现有re-margining方法可能会降低头部类的特征学习。 因此,RoBal 强制执行一个额外的边距项来扩大头部类的特征边距。

4.参考文献

[1] 不平衡问题: 深度神经网络训练之殇

[2] 不平衡之钥: 重采样法何其多

[3] S. Park, J. Lim, Y. Jeon, and J. Y. Choi, “Influence-balanced loss for imbalanced visual classification,” in International Conference on Computer Vision, 2021.

[4] S. Zhang, Z. Li, S. Yan, X. He, and J. Sun, “Distribution alignment: A unified framework for long-tail visual recognition,” in Computer Vision and Pattern Recognition, 2021, pp. 2361–2370.

[5] R. Jiawei, C. Yu, X. Ma, H. Zhao, S. Yi et al., “Balanced meta-softmax for long-tailed visual recognition,” in Advances in Neural Information Processing Systems, 2020.

[6] Y. Hong, S. Han, K. Choi, S. Seo, B. Kim, and B. Chang, “Disentangling label distribution for long-tailed visual recognition,” in Computer Vision and Pattern Recognition, 2021.

[7] Y. Cui, M. Jia, T.-Y. Lin, Y. Song, and S. Belongie, “Class-balanced loss based on effective number of samples,” in Computer Vision and Pattern Recognition, 2019, pp. 9268–9277.

[8] T.-Y. Lin, P. Goyal, R. Girshick, K. He, and P. Doll ́ar, “Focal loss for dense object detection,” in International Conference on Computer Vision, 2017, pp. 2980–2988.

[9] J. Shu, Q. Xie, L. Yi, Q. Zhao, S. Zhou, Z. Xu, and D. Meng, “Meta-weight-net: Learning an explicit mapping for sample weighting,” Advances in Neural Information Processing Systems, 2019.

[10] S. Zhang, Z. Li, S. Yan, X. He, and J. Sun, “Distribution alignment: A unified framework for long-tail visual recognition,” in Computer Vision and Pattern Recognition, 2021, pp. 2361–2370.

[11] T. Wu, Q. Huang, Z. Liu, Y. Wang, and D. Lin, “Distribution-balanced loss for multi-label classification in long-tailed datasets,” in European Conference on Computer Vision, 2020, pp. 162–178.

[12] J. Tan, C. Wang, B. Li, Q. Li, W. Ouyang, C. Yin, and J. Yan, “Equalization loss for long-tailed object recognition,” in Computer Vision and Pattern Recognition, 2020, pp. 11 662–11 671.

[13] J. Tan, X. Lu, G. Zhang, C. Yin, and Q. Li, “Equalization loss v2: A new gradient balance approach for long-tailed object detection,” in Computer Vision and Pattern Recognition, 2021, pp. 1685–1694.

[14] J. Wang, W. Zhang, Y. Zang, Y. Cao, J. Pang, T. Gong, K. Chen, Z. Liu, C. C. Loy, and D. Lin, “Seesaw loss for long-tailed instance segmentation,” in Computer Vision and Pattern Recognition, 2021.

[15] T. Wang, Y. Zhu, C. Zhao, W. Zeng, J. Wang, and M. Tang, “Adaptive class suppression loss for long-tail object detection,” in Computer Vision and Pattern Recognition, 2021, pp. 3103–3112.

[16] K. Cao, C. Wei, A. Gaidon, N. Arechiga, and T. Ma, “Learning imbalanced datasets with label-distribution-aware margin loss,” in Advances in Neural Information Processing Systems, 2019.

[17] S. Khan, M. Hayat, S. W. Zamir, J. Shen, and L. Shao, “Striking the right balance with uncertainty,” in Computer Vision and Pattern Recognition, 2019, pp. 103–112.

[18] D. Cao, X. Zhu, X. Huang, J. Guo, and Z. Lei, “Domain balancing: Face recognition on long-tailed domains,” in Computer Vision and Pattern Recognition, 2020, pp. 5671–5679.

[19] C. Feng, Y. Zhong, and W. Huang, “Exploring classification equilibrium in long-tailed object detection,” in International Conference on Computer Vision, 2021.

[20] Z. Deng, H. Liu, Y. Wang, C. Wang, Z. Yu, and X. Sun, “Pml: Progressive margin loss for long-tailed age classification,” in Computer Vision and Pattern Recognition, 2021, pp. 10 503–10 512.

[21] T. Wu, Z. Liu, Q. Huang, Y. Wang, and D. Lin, “Adversarial robustness under long-tailed distribution,” in Computer Vision and Pattern Recognition, 2021, pp. 8659–8668.

 

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是一个示例代码,它演示了如何使用Python中的不平衡分类加权法计算权,并使用采样技术输出采样的Excel数据: ```python import pandas as pd from sklearn.utils import resample from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import confusion_matrix # 导入Excel数据 data = pd.read_excel('data.xlsx') # 将特征和目标变量分开 X = data.iloc[:, :-1] y = data.iloc[:, -1] # 使用不平衡分类加权法计算权 class_weights = dict(zip([0, 1], [len(y) / (2 * sum(y == 0)), len(y) / (2 * sum(y == 1))])) # 训练随机森林模型 rf = RandomForestClassifier(class_weight=class_weights) rf.fit(X, y) # 输出混淆矩阵 y_pred = rf.predict(X) confusion_matrix(y, y_pred) # 进行采样以平衡类别 X_resampled, y_resampled = resample(X[y == 0], y[y == 0], n_samples=sum(y == 1), replace=True) X_balanced = pd.concat([X[y == 1], X_resampled]) y_balanced = pd.concat([y[y == 1], y_resampled]) # 输出采样后的数据到Excel balanced_data = pd.concat([X_balanced, y_balanced], axis=1) balanced_data.to_excel('balanced_data.xlsx', index=False) ``` 在上面的代码中,我们首先导入了Pandas和Sklearn库,以及一些必要的函数和类。然后,我们使用Pandas从Excel文件中读取数据,并将其分成特征和目标变量。 接下来,我们使用不平衡分类加权法计算权,并使用随机森林分类器训练模型。我们还输出了混淆矩阵,以评估模型的性能。 然后,我们使用采样技术来平衡类别。具体来说,我们对目标变量为0的样本进行采样,使其数量与目标变量为1的样本相同。我们使用resample函数来执行此操作。 最后,我们将平衡的数据输出到Excel文件中。我们将特征和目标变量拼接在一起,并使用to_excel函数将它们保存为Excel文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值