Neural network 如何在多类分类任务中标定神经网络输出层的阈值?

Neural network 如何在多类分类任务中标定神经网络输出层的阈值?,neural-network,probability,distribution,softmax,probability-distribution,Neural Network,Probability,Distribution,Softmax,Probability Distribution,假设我们有一个包含3个类别的多类别分类任务: {芝士蛋糕、冰淇淋、苹果派} 假设我们有一个经过训练的神经网络,可以对随机厨师喜欢的三种甜点中的哪一种进行分类。此外,假设输出层由3个具有softmax激活的神经元组成,每个神经元表示喜欢相应甜点的概率 例如,此类网络的可能输出可能是: 产量(chef_1)={p(芝士蛋糕)=0.3;p(冰淇淋)=0.1;p(苹果派)=0.6;} 产量(chef_2)={p(芝士蛋糕)=0.2;p(冰淇淋)=0.1;p(苹果派)=0.7;} 产量(chef_3)={

假设我们有一个包含3个类别的多类别分类任务:

{芝士蛋糕、冰淇淋、苹果派}

假设我们有一个经过训练的神经网络,可以对随机厨师喜欢的三种甜点中的哪一种进行分类。此外,假设输出层由3个具有softmax激活的神经元组成,每个神经元表示喜欢相应甜点的概率

例如,此类网络的可能输出可能是:

产量(chef_1)={p(芝士蛋糕)=0.3;p(冰淇淋)=0.1;p(苹果派)=0.6;}

产量(chef_2)={p(芝士蛋糕)=0.2;p(冰淇淋)=0.1;p(苹果派)=0.7;}

产量(chef_3)={p(芝士蛋糕)=0.1;p(冰淇淋)=0.1;p(苹果派)=0.8;}

在这种情况下,所有实例(chef_1、chef_2和chef_3)可能更喜欢苹果派,但信心不同(例如,chef_3更喜欢苹果派而不是chef_1,因为网络概率输出分别为0.8和0.6)

考虑到我们有一个由1000名厨师组成的新的数据集,并且我们想要计算他们最喜欢的甜点的分布,我们只需对1000名厨师中的每一位进行分类,并根据神经元以最大概率确定他最喜欢的甜点

我们还希望通过丢弃最大预测概率低于0.6的厨师来提高预测精度。让我们假设1000人中有200人是以这样的概率预测的,我们放弃了他们。

在这种情况下,如果一种甜点比另一种更容易预测,我们可能会对800名厨师(他们的预测概率高于0.6)的分布产生偏差。

例如,如果类别的平均预测概率为:

平均值(芝士蛋糕)=0.9

平均p(冰淇淋)=0.5

平均值(苹果派)=0.8

我们丢弃被预测概率低于0.6的厨师,在被丢弃的200名厨师中,可能有更多的厨师更喜欢冰淇淋,这将导致在其他800名厨师中出现偏差分布。

在这篇很长的介绍之后(我很高兴你还在读),我的问题是:

  • 我们是否需要为每个类设置不同的阈值?(例如,在奶酪蛋糕预测中丢弃概率低于X的实例,在冰淇淋预测中丢弃概率低于Y的实例,在苹果派预测中丢弃概率低于Z的实例)

  • 如果是,如何校准阈值而不影响我的1000 chefs数据集的总体分布(即放弃低概率预测以提高准确性,同时保留原始数据集的分布)

  • 我曾尝试使用每个类的平均预测概率作为阈值,但我不能保证它不会影响分布(因为这些阈值可能过度适合测试集,而不是1000 chefs数据集)


    有什么建议或相关论文吗?

    我也有类似的多标签问题。我已经将每个班级的F1成绩绘制到阈值,以查看每个班级的最高F1成绩在哪里。每门课都不一样。对于一些人来说,在>0.8的阈值下,准确率与召回率的比较更高,而对于一些人来说,i甚至低至0.4。我选择了不同的阈值来调用类a类。 但是我想如果你不想让一个类偏向于高精度或高召回率,你可以根据一个测试集选择不同的阈值(你可以优化测试集集合)