多标签分类的预训练

Posted

技术标签:

【中文标题】多标签分类的预训练【英文标题】:Pre-training for multi label classification 【发布时间】:2019-05-20 21:02:03 【问题描述】:

我必须为多标签分类预先训练一个模型。我正在使用 cifar10 数据集进行预训练,我想知道我是否必须用于预训练 'categorical_crossentrpy' (softmax) 或 'binary_crossentropy' (sigmoid),因为在第一种情况下我有一个多分类问题

【问题讨论】:

【参考方案1】:

您应该使用softmax,因为它为您提供了每个班级的概率,无论有多少班级。如您所写,Sigmoid 与binary_crossentropy 一起使用,并用于二进制分类(因此名称中包含二进制)。我希望现在更清楚了。

【讨论】:

谢谢。是的,我知道区别,但在多标签分类中,我必须使用“sigmoid”和“binary_crossentropy”。所以我想知道是否也为了进行迁移学习或微调而进行预训练,我必须使用相同的功能 对不起,我不明白。你说你必须在多分类分类中使用sigmoidbinnary crossentropy,这是不可能的。如果模型的输出超过 2 个,则必须使用 softmaxcategorical crossentropy。为了回答你的问题,如果你想做普通的迁移学习(使用相同的模型),那么答案很明显,因为你使用的是相同的模型。如果您想使用预训练的权重并用它初始化不同模型的权重,我认为您不必使用相同的激活函数 但是,softmax 和 sigmoid 通常只用在输出层,所以我不知道你的问题到底是什么意思 是的,它们只在输出中。因此,在您看来,我必须使用 'categorical_crossentropy' 和 softmax 进行预训练,然后使用多标签分类 'binary_crossentropy'(sigmoid),因为它们仅用于最后一层,这两种情况不同。我说的对吗? 好吧,我不明白那是你的问题。那么是的,使用一对一的方法。你可以参考你发给我的帖子。做 softmax 进行预训练,因为在 cifar 中,传输模型中只有一类正确和 sigmoid

以上是关于多标签分类的预训练的主要内容,如果未能解决你的问题,请参考以下文章

BERT-多标签文本分类实战之六——数据加载与模型代码

BERT-多标签文本分类实战之六——数据加载与模型代码

BERT-多标签文本分类实战之六——数据加载与模型代码

多标签文本分类,每个训练数据的类标签分布不均匀

Python sklearn 多标签分类:用户警告:标签不是 226 存在于所有训练示例中

Sklearn Linear SVM 无法在多标签分类中进行训练