首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >长尾分布的多标签文本分类平衡方法

长尾分布的多标签文本分类平衡方法

作者头像
mathor
发布2021-11-22 10:22:27
3K0
发布2021-11-22 10:22:27
举报
文章被收录于专栏:mathormathor

长尾分布各位肯定并不陌生,指的是少数几个类别却有大量样本,而大部分类别都只有少量样本的情况,如下图所示

   长尾分布:少数类别的样本数量非常多,多数类别的样本数目非常少       

通常我们讨论长尾分布或者是文本分类的时候只考虑单标签,即一个样本只对应一个标签,但实际上多标签在实际应用中也非常常见,例如个人爱好的集合一共有6个元素:运动、旅游、读书、工作、睡觉、美食,一般情况下,一个人的爱好有这其中的一个或多个,这就是典型的多标签分类任务

EMNLP2021上有一篇名为Balancing Methods for Multi-label Text Classification with Long-Tailed Class Distribution的论文详细探讨了各种平衡损失函数对于多标签分类问题的效果,从最初的BCE Loss到Focal Loss等,感觉这篇文章更像是平衡损失函数的综述。源码在Roche/BalancedLossNLP

Loss Functions

在NLP领域,二值化交叉熵损失(Binary Cross Entropy Loss)常被用来处理多标签文本分类问题,给定一个含有N 个样本的训练集{(x^1,y^1),...,(x^N,y^N)} ,其中y^k = [y_1^k,...,y_C^k]\in \{0,1\}^CC 是类别数量,假设模型对于某个样本的输出为z^k = [z_1^k,...,z_C^k]\in \mathbb{R} ,则BCE损失的定义如下:

                                               `$\mathcal{L}_{\text{BCE}} = \begin{cases}-\log (p_i^k)\quad &\text{if } y_i^k =1\\-\log (1-p^k_i)\quad &\text{otherwise} \end{cases}$` 

其中,p_i^k = \sigma(z_i^k) ,对于多标签分类问题来说我们需要将模型的输出值压缩到0,1之间,所以需要用到sigmoid函数

原本单标签问题,真实值y^k 相当于一个onehot向量,而对于多标签来说,真实值y^k 相当于一个onehot向量中多了一些1,例如0,1,0,1,表示该样本同时是第1类和第3类

这种朴素的BCE非常容易收到标签不平衡的影响,因为头部样本比较多,可能所有头部样本的损失总和为100,尾部所有样本的损失加起来都不超过10。下面,我们介绍三种替代方法解决多标签文本分类中长尾数据的类别不均衡问题。这些平衡方法主要思想是重新加权BCE,使罕见的样本-标签对得到合理的"关注"

Focal Loss (FL)

通过在BCE上乘一个可调整的聚焦参数\gamma \ge 0 ,Focal Loss将更高的损失权重放在"难分类"的样本上,这些样本对其真实值的预测概率很低。对于多标签分类任务,Focal Loss定义如下:

                                              `$\mathcal{L}_{\text{FL}} = \begin{cases} -(1-p_i^k)^\gamma \log (p_i^k)\quad &\text{if } y_i^k =1\\ -(p_i^k)^\gamma \log (1-p_i^k)\quad &\text{otherwise} \end{cases}$` 

实际上论文关于Focal Loss的介绍只有这么多,如果想了解Focal Loss更详细的参数介绍,可以看我的这篇文章Focal Loss详解

Class-balanced focal loss (CB)

通过估计有效样本数,CB Loss进一步重新加权Focal Loss以捕捉数据的边际递减效应,减少了头部样本的冗余信息。对于多标签任务,我们首先计算出每种类别的频率n_i ,那么对于每个类别来说,都有其平衡项r_{\text{CB}}

r_{\text{CB}} = \frac{1-\beta}{1-\beta^{n_i}}

其中,\beta \in [0,1) 控制着有效样本数量的增长速度,损失函数变为

                                                            `$ \mathcal{L}_{\text{CB}} = \begin{cases} -r_{\text{CB}} (1-p_i^k)^\gamma \log (p_i^k) \quad &\text{if } y_i^k =1\\ -r_{\text{CB}} (p_i^k)^\gamma \log (1-p_i^k) \quad &\text{otherwise} \end{cases}$` 
Distribution-balanced loss (DB)

通过整合再平衡权重以及头部样本容忍正则化(negative tolerant regularization, NTR),Distribution-balanced Loss首先减少了标签共现的冗余信息(这在多标签分类的情况下是很关键的),然后对"容易分类的"样本(头部样本)分配较低的权重

首先,为了重新平衡权重,在单标签的情况下,一个样本可以通过采样概率P_i^C = \frac{1}{C}\frac{1}{n_i} 来加权,但是在多标签的情况下,如果采用同样的策略,一个具有多标签的样本会被过度采样,概率是P^I = \frac{1}{c}\sum_{y_i^k=1}\frac{1}{n_i} 。因此,我们需要结合两者重新平衡权重

r_{\text{DB}} = P_i^C / P^I

我们可以将上述权重变得更光滑一些(有界)

\hat{r}_{\text{DB}} = \alpha + \sigma(\beta \times (r_{\text{DB}} - \mu))

此时,\hat{r}_{\text{DB}} 的值域为[\alpha ,\alpha + 1] 。rebalanced-FL (R-FL) 损失函数为

                                             `$\mathcal{L}_{\text{R-FL}} = \begin{cases} -\hat{r}_{\text{DB}} (1-p_i^k)\log (p^k_i) \quad &\text{if } y_i^k =1\\  -\hat{r}_{\text{DB}} (p_i^k)\log (1-p^k_i) \quad &\text{otherwise} \end{cases}$` 

然后,NTR对同一标签头部和尾部样本进行不同的处理,引入一个比例因子\lambda 和一个内在的特定类别偏差v_i 以降低尾部类别的阈值,避免过度抑制

                                          `$ \mathcal{L}_{\text{NTR-FL}} = \begin{cases} - (1-q_i^k)\log (q^k_i) \quad &\text{if } y_i^k =1\\  -\frac{1}{\lambda} (q_i^k)\log (1-q^k_i) \quad &\text{otherwise} \end{cases} $`

对于尾部样本来说,q^k_i = \sigma(z_i^k - v_i) ;对于头部样本来说,q_i^k = \sigma(\lambda(z_i^k - v_i))v_i 可以在训练开始时最小化损失函数来估计,其比例系数为\kappa ,类别先验信息p_i = n_i/N ,则

\hat{b}_i = -\log (\frac{1}{p_i} - 1), \ v_i = -\kappa \times \hat{b}_i

最终,通过整合再平衡权重以及NTR,Distribution-balanced Loss为

                                           `$\mathcal{L}_{\text{{DB}}} = \begin{cases} - \hat{r}_{\text{DB}}(1-q_i^k)\log (q^k_i) \quad &\text{if } y_i^k =1\\  -\hat{r}_{\text{DB}}\frac{1}{\lambda} (q_i^k)\log (1-q^k_i) \quad &\text{otherwise} \end{cases} $`

Result

作者实验的两个数据集如下

使用的模型为SVM,对比不同损失函数的效果

个人总结

这篇论文,创新了但又没创新,所有的损失函数都是别人提出来的,自己的工作只是在多标签数据集上跑了一遍做了个对比。最后,纯爱战士表示很淦

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Loss Functions
    • Focal Loss (FL)
      • Class-balanced focal loss (CB)
        • Distribution-balanced loss (DB)
        • Result
        • 个人总结
        相关产品与服务
        NLP 服务
        NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档