多标签文本分类Balancing Methods for Multi-label Text Classification with Long-Tailed Class Distribution
Posted 征途黯然.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多标签文本分类Balancing Methods for Multi-label Text Classification with Long-Tailed Class Distribution相关的知识,希望对你有一定的参考价值。
·阅读摘要:
本文更像是对多标签文本分类的损失函数的综述,文中提到的几个损失函数(包括为了解决长尾问题的损失函数)都是前人已经提出的。
·参考文献:
[1] Balancing Methods for Multi-label Text Classification with Long-Tailed Class Distribution
[1] Loss Functions
在 NLP 领域,二值化交叉熵损失(Binary Cross Entropy Loss)常被用来处理多标签文本分类问题,给定一个含有
N
N
N个样本的训练集
(
x
1
,
y
1
)
,
.
.
.
,
(
x
N
,
y
N
)
(x^1,y^1),...,(x^N,y^N)
(x1,y1),...,(xN,yN),其中
y
k
=
[
y
1
k
,
.
.
.
,
y
C
k
]
∈
0
,
1
C
y^k = [y_1^k,...,y_C^k]\\in \\0,1\\^C
yk=[y1k,...,yCk]∈0,1C,
C
C
C是类别数量,假设模型对于某个样本的输出为
z
k
=
[
z
1
k
,
.
.
.
,
z
C
k
]
∈
R
z^k = [z_1^k,...,z_C^k]\\in \\mathbb R
zk=[z1k,...,zCk]∈R,则 BCE 损失的定义如下:
L
BCE
=
−
log
(
p
i
k
)
if
y
i
k
=
1
−
log
(
1
−
p
i
k
)
otherwise
\\mathcalL_\\textBCE = \\begincases-\\log (p_i^k)\\quad &\\textif y_i^k =1\\\\-\\log (1-p^k_i)\\quad &\\textotherwise \\endcases
LBCE=−log(pik)−log(1−pik)if yik=1otherwise
其中 p i k = σ ( z i k ) p_i^k = \\sigma (z_i^k) pik=σ(zik),对于多标签分类问题来说我们需要将模型的输出值压缩到 [0,1] 之间,所以需要用到 sigmoid 函数.
原本单标签问题,真实值 y k y^k yk相当于一个 onehot 向量,而对于多标签来说,真实值 y k y^k yk相当于一个 onehot 向量中多了一些 1,例如 [0,1,0,1],表示该样本同时是第 1 类和第 3 类
这种朴素的 BCE 非常容易收到标签不平衡的影响,因为头部样本比较多,可能所有头部样本的损失总和为 100,尾部所有样本的损失加起来都不超过 10。下面,我们介绍三种替代方法解决多标签文本分类中长尾数据的类别不均衡问题。这些平衡方法主要思想是重新加权 BCE,使罕见的样本 - 标签对得到合理的 “关注”
[2] Focal Loss (FL)
通过在 BCE 上乘一个可调整的聚焦参数
γ
≥
0
\\gamma \\ge 0
γ≥0,Focal Loss 将更高的损失权重放在 “难分类” 的样本上,这些样本对其真实值的预测概率很低。对于多标签分类任务,Focal Loss 定义如下:
L
FL
=
−
(
1
−
p
i
k
)
γ
log
(
p
i
k
)
if
y
i
k
=
1
−
(
p
i
k
)
γ
log
(
1
−
p
i
k
)
otherwise
\\mathcalL_\\textFL = \\begincases -(1-p_i^k)^\\gamma \\log (p_i^k)\\quad &\\textif y_i^k =1\\\\ -(p_i^k)^\\gamma \\log (1-p_i^k)\\quad &\\textotherwise \\endcases
LFL=−(1−pik)γlog(pik)−(pik)γlog(1−pik)if yik=1otherwise
[3] Class-balanced focal loss (CB)
通过估计有效样本数,CB Loss 进一步重新加权 Focal Loss 以捕捉数据的边际递减效应,减少了头部样本的冗余信息。对于多标签任务,我们首先计算出每种类别的频率
n
i
n_i
ni,那么对于每个类别来说,都有其平衡项
r
C
B
r_CB
rCB
r
CB
=
1
−
β
1
−
β
n
i
r_\\textCB = \\frac1-\\beta1-\\beta^n_i
rCB=1−βni1−β
其中,
β
∈
[
0
,
1
)
\\beta \\in [0,1)
β∈[0,1)控制着有效样本数量的增长速度,损失函数变为
L
CB
=
−
r
CB
(
1
−
p
i
k
)
γ
log
(
p
i
k
)
if
y
i
k
=
1
−
r
CB
(
p
i
k
)
γ
log
(
1
−
p
i
k
)
otherwise
\\mathcalL_\\textCB = \\begincases -r_\\textCB (1-p_i^k)^\\gamma \\log (p_i^k) \\quad &\\textif y_i^k =1\\\\ -r_\\textCB (p_i^k)^\\gamma \\log (1-p_i^k) \\quad &\\textotherwise \\endcases
LCB=−rCB(1−pik)γlog(pik)−rCB(pik)γlog(1−pik)if yik=1otherwise
[4] Distribution-balanced loss (DB)
通过整合再平衡权重以及头部样本容忍正则化(negative tolerant regularization, NTR),Distribution-balanced Loss 首先减少了标签共现的冗余信息(这在多标签分类的情况下是很关键的),然后对 “容易分类的” 样本(头部样本)分配较低的权重
首先,为了重新平衡权重,在单标签的情况下,一个样本可以通过采样概率 P i C = 1 C 1 n i P_i^C = \\frac 1C\\frac 1n_i PiC=以上是关于多标签文本分类Balancing Methods for Multi-label Text Classification with Long-Tailed Class Distribution的主要内容,如果未能解决你的问题,请参考以下文章