恒源云 _ 长尾分布的多标签文本分类平衡方法 (论文学习笔记)
文章来源 | 恒源云社区(专注人工智能/深度学习云 GPU 服务器训练平台,官方体验网址:https://gpushare.com/center/)
原文作者 | Mathor
长尾分布各位肯定并不陌生,指的是少数几个类别却有大量样本,而大部分类别都只有少量样本的情况,如下图所示
通常我们讨论长尾分布或者是文本分类的时候只考虑单标签,即一个样本只对应一个标签,但实际上多标签在实际应用中也非常常见,例如个人爱好的集合一共有 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)常被用来处理多标签文本分类问题,给定一个含有个样本的训练集,其中,是类别数量,假设模型对于某个样本的输出为,则 BCE 损失的定义如下:
其中,,对于多标签分类问题来说我们需要将模型的输出值压缩到[0,1]之间,所以需要用到 sigmoid 函数
原本单标签问题,真实值相当于一个 onehot 向量,而对于多标签来说,真实值相当于一个 onehot 向量中多了一些 1,例如[0,1,0,1],表示该样本同时是第 1 类和第 3 类
这种朴素的 BCE 非常容易收到标签不平衡的影响,因为头部样本比较多,可能所有头部样本的损失总和为 100,尾部所有样本的损失加起来都不超过 10。下面,我们介绍三种替代方法解决多标签文本分类中长尾数据的类别不均衡问题。这些平衡方法主要思想是重新加权 BCE,使罕见的样本-标签对得到合理的"关注"
Focal Loss (FL)
通过在 BCE 上乘一个可调整的聚焦参数,Focal Loss 将更高的损失权重放在"难分类"的样本上,这些样本对其真实值的预测概率很低。对于多标签分类任务,Focal Loss 定义如下:
实际上论文关于 Focal Loss 的介绍只有这么多,如果想了解 Focal Loss 更详细的参数介绍,可以看我的这篇文章Focal Loss详解
Class-balanced focal loss (CB)
通过估计有效样本数,CB Loss 进一步重新加权 Focal Loss 以捕捉数据的边际递减效应,减少了头部样本的冗余信息。对于多标签任务,我们首先计算出每种类别的频率 nin_ini,那么对于每个类别来说,都有其平衡项
其中,控制着有效样本数量的增长速度,损失函数变为
Distribution-balanced loss (DB)
通过整合再平衡权重以及头部样本容忍正则化(negative tolerant regularization, NTR),Distribution-balanced Loss 首先减少了标签共现的冗余信息(这在多标签分类的情况下是很关键的),然后对"容易分类的"样本(头部样本)分配较低的权重
首先,为了重新平衡权重,在单标签的情况下,一个样本可以通过采样概率来加权,但是在多标签的情况下,如果采用同样的策略,一个具有多标签的样本会被过度采样,概率是。因此,我们需要结合两者重新平衡权重
我们可以将上述权重变得更光滑一些(有界)
此时,的值域为。rebalanced-FL (R-FL) 损失函数为
然后,NTR 对同一标签头部和尾部样本进行不同的处理,引入一个比例因子和一个内在的特定类别偏差以降低尾部类别的阈值,避免过度抑制
对于尾部样本来说,;对于头部样本来说,。可以在训练开始时最小化损失函数来估计,其比例系数为κ\kappaκ,类别先验信息,则
最终,通过整合再平衡权重以及 NTR,Distribution-balanced Loss 为
RESULT
作者实验的两个数据集如下
使用的模型为 SVM,对比不同损失函数的效果
个人总结
这篇论文,创新了但又没创新,所有的损失函数都是别人提出来的,自己的工作只是在多标签数据集上跑了一遍做了个对比。最后,纯爱战士表示很淦
评论