稀疏版多标签分类交叉熵损失函数
大佬博客:
https://kexue.fm/archives/7359
https://kexue.fm/archives/8888
从单标签到多标签
在上篇文章中已经介绍过了处理常规多分类问题(也就是单标签分类)的基本操作——softmax 和交叉熵损失函数,那么什么是多标签分类呢?
单标签分类是从 n
个候选类别中选取一个 1
个目标类别进行分类,损失函数的优化目标则是使目标类别的得分最大,可以参考上篇文章的交叉熵损失函数;
对于多标签分类,我们从 n
个候选类别中选取 k
个目标类别(当做正例,即是与不是的问题),换种理解就是我们同时进行 n
个二分类任务。
直观上,我们可以直接选择使用 sigmoid
激活,使用二分类的交叉熵之和作为 loss,然而当 n>>k
时,会有很严重的类别不均衡问题,当 k 极小时,网络只需要简单将结果全部预测为负例也可以得到很小的 loss 值;但是单标签分类中,k=1 并没有这种类别不均衡的问题,因为我们使用了 softmax