gpt4 book ai didi

neural-network - 如何在多类分类任务中校准神经网络输出层的阈值?

转载 作者:行者123 更新时间:2023-12-02 04:32:18 25 4
gpt4 key购买 nike

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

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

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

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

输出(厨师_1)= { P(芝士蛋糕)= 0.3; P(冰淇淋)= 0.1; P(苹果派)= 0.6; }

输出(厨师_2)= { P(芝士蛋糕)= 0.2; P(冰淇淋)= 0.1; P(苹果派)= 0.7; }

输出(厨师_3)= { P(芝士蛋糕)= 0.1; P(冰淇淋)= 0.1; P(苹果派)= 0.8; }

在这种情况下,所有实例(chef_1、chef_2 和chef_3)都可能更喜欢Apple Pie,但具有不同的置信度(例如,chef_3 比chef_1 更喜欢Apple Pie,因为网络概率输出分别为0.8 和0.6)

鉴于我们有一个新的 1000名厨师的数据集,我们想计算他们最喜欢的甜点的分布 ,我们将简单地对 1000 位厨师中的每一位进行分类,并根据最大概率的神经元确定他最喜欢的甜点。

我们也想通过丢弃最大预测概率低于 0.6 的厨师来提高预测精度。让我们假设 1000 个中有 200 个以这样的概率被预测,我们丢弃了它们。

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

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

平均P(芝士蛋糕)= 0.9

平均P(冰淇淋)= 0.5

平均P(苹果派)= 0.8

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

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

  • 我们是否需要为每个类设置不同的阈值? (例如,在 Cheesecake 预测中丢弃概率低于 X 的实例,在 Ice Cream 预测中丢弃概率低于 Y 的实例,以及在 Apple Pie 预测中丢弃概率低于 Z 的实例)。
  • 如果是,如何在不影响整体分布的情况下校准阈值 在我的 1000 名厨师数据集上(即丢弃低概率的预测以提高准确性,同时保留原始数据集的分布)。

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

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

    最佳答案

    我有一个类似的多标签问题。我已经将每个类(class)的 F1 分数绘制到阈值上,以查看每个类(class)的最大 F1 分数在哪里。每个类(class)都不一样。对于某些人来说,准确率与召回率在 > 0.8 的阈值下更高,而对于某些人,我甚至低至 0.4。我选择了不同的阈值来将类(class)称为类(class)。
    但我想如果你不想为了高精度或高召回率而偏向一个类,你可以根据测试集选择不同的阈值(你可以优化测试集集合)

    关于neural-network - 如何在多类分类任务中校准神经网络输出层的阈值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47553563/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com