Multi label 多标签分类问题
Posted demian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Multi label 多标签分类问题相关的知识,希望对你有一定的参考价值。
调用函数
Pytorch使用torch.nn.BCEloss
Tensorflow使用tf.losses.sigmoid_cross_entropy
在output和target之间构建binary cross entropy,其中i为每一个类。
m = nn.Sigmoid() loss = nn.BCELoss() input = autograd.Variable(torch.randn(3), requires_grad=True) target = autograd.Variable(torch.FloatTensor(3).random_(2)) output = loss(m(input), target) output.backward()
注意target的形式,要写成01编码形式,eg:如果同时为第一类和第三类则,[1, 0, 1]
主要是结合sigmoid来使用,经过classifier分类过后的输出为(batch_size,num_class)为每个数据的标签, 标签不是one-hot的主要体现在sigmoid(output)之后进行bceloss计算时:sigmoid输出之后,仍然为(batch_size,num_class),但是是每个类别的分数,对于一个实例,它的各个label的分数加起来不一定要等于1,bceloss在每个类维度上求cross entropy loss然后加和求平均得到,这里就体现了多标签的思想。
[CVPR2015] Is object localization for free? – Weakly-supervised learning with convolutional neural networks这篇论文里设计了针对多标签问题的loss,传统的类别分类不适用,作者把这个任务视为多个二分类问题,loss function和分类的分数如下:
以上是关于Multi label 多标签分类问题的主要内容,如果未能解决你的问题,请参考以下文章
多标签文本分类Large Scale Multi-label Text Classification with Semantic Word Vectors
多标签文本分类Initializing neural networks for hierarchical multi-label text classification
多标签文本分类HFT-CNN: Learning Hierarchical Category Structure for Multi-label Short Text Categorization
多标签文本分类SGM: Sequence Generation Model for Multi-Label Classification