Binary Cross Entropy真的适合多标签分类吗?

本文探讨了在多标签分类任务中使用Binary Cross Entropy(BCE)损失函数的问题。作者指出,BCE在标签稀疏的情况下可能导致模型学习到无关信息,因为即使标签为0的位置也会对模型训练产生影响。相比之下,多分类任务的CrossEntropy损失只关注标签为1的位置。这种现象在标签数量较少的情况下会减弱模型学习真正有用特征的能力。因此,BCE对于多标签分类可能并不理想。
摘要由CSDN通过智能技术生成

个人曾在负责一个多标签文本分类项目时对于多标签分类(multi-label classification)的loss选择、forward尾层处理感到迷惑,当时查找了一下资料确定了一种方案:

1、以类别数作为最后隐层输出节点数,以sigmoid激活。这样其实就相当于将每个类别视为1个二分类任务,最后隐层的输出每个位置对应一个类别。也正因为如此,用sigmoid而不能用softmax(softmax没有把每个节点视为相互独立的,相反,会导致相互影响)。

2、采用Binary Cross Entropy loss进行训练。如果视最后一个隐层的每个节点对应一个类别的1/0分类,那BCE loss确实是再自然不过的选择了。但这样真的好吗?我给出的答案是不尽然,并且标签越稀疏越差。

关键问题引出

不妨对比一下BCE和用于多分类任务的CrossEntropy在示例样本的表现:(为了直观,这里不贴各自的公式了,满地都是,在这里无助于理解本关键点,还是直接以计算示例突出关键)

多分类任务-CE

label:[0,1,0,0]

pred:[0.3, 0.67, 0.4, 0.25]

CE loss = 0 x log(0.3) + 1 x log(0.67) + 0 x log(0.4) + 0 x log(0.25)

关键区别特征:以CE作为loss时,对于模型学习有效的部分仅为label=

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值