输出层的 softmax 和 sigmoid 函数
softmax and sigmoid function for the output layer
在与对象检测和语义分割相关的深度学习实现中,我看到过使用 sigmoid 或 softmax 的输出层。我不是很清楚什么时候使用哪个?在我看来,他们两个都可以支持这些任务。这个选择有什么指导原则吗?
softmax()
当您需要总和为 1 的概率分布时会有所帮助。当您希望输出范围为 0 到 1 但不需要总和为 1 时,使用 sigmoid
.
在您的情况下,您希望在两个备选方案之间进行分类和选择。我建议使用 softmax()
因为你会得到一个概率分布,你可以在其上应用交叉熵损失函数。
对象检测是在图像中滑动 window 时使用的对象 class化。在 classification 中,重要的是在某些 class space 中找到正确的输出。例如。您检测到 10 个不同的对象,并且您想知道其中最有可能是哪个对象。然后 softmax 很好,因为它的概率是整个层总和为 1。
另一方面,语义分割以某种方式分割图像。我已经完成了语义医学分割,输出是一个二值图像。这意味着您可以将 sigmoid 作为输出来预测该像素是否属于该特定 class,因为每个输出 class.
的 sigmoid 值介于 0 和 1 之间
一般情况下,当存在“n”个classes时,使用Softmax(Softmax Classifier)。 Sigmoid 或 softmax 都可以用于二进制 (n=2) classification.
乙状结肠:
S(x) = 1/ ( 1+ ( e^(-x) ))
软最大:
σ(x)j = e / **Σ**{k=1 to K} e^zk for(j=1.....K)
Softmax是MultiClassSigmoid的一种,但是如果你看到Softmax的函数,所有softmax单元的总和应该是1。在sigmoid中,这不是必需的。
深入挖掘,也可以使用sigmoid进行多class class化。当您使用 softmax 时,基本上您会得到每个 class 的概率(连接分布和多项式似然),其总和必然为 1。如果您将 sigmoid 用于 multi class classification,它就像边际分布和伯努利似然,p(y0/x) ,p(y1/x) 等
sigmoid 和 softmax 函数有不同的用途。关于在神经网络设计中什么时候使用sigmoid vs. softmax的详细解释,可以看这篇文章:"Classification: Sigmoid vs. Softmax."
简短摘要:
如果你有一个 multi-label classification 问题,其中有多个 "right answer" (输出不是互斥的)那么你可以在每个原始上使用 sigmoid 函数独立输出。 sigmoid 将使您对所有 class es、其中一些或其中的 none 有很高的概率。
如果您遇到 multi-class class化问题,其中只有一个 "right answer"(输出互斥),则使用 softmax 函数。 softmax 将强制输出 classes 的概率之和等于 1,因此为了增加特定 class 的概率,您的模型必须相应地降低至少其他 classes.
之一
在与对象检测和语义分割相关的深度学习实现中,我看到过使用 sigmoid 或 softmax 的输出层。我不是很清楚什么时候使用哪个?在我看来,他们两个都可以支持这些任务。这个选择有什么指导原则吗?
softmax()
当您需要总和为 1 的概率分布时会有所帮助。当您希望输出范围为 0 到 1 但不需要总和为 1 时,使用 sigmoid
.
在您的情况下,您希望在两个备选方案之间进行分类和选择。我建议使用 softmax()
因为你会得到一个概率分布,你可以在其上应用交叉熵损失函数。
对象检测是在图像中滑动 window 时使用的对象 class化。在 classification 中,重要的是在某些 class space 中找到正确的输出。例如。您检测到 10 个不同的对象,并且您想知道其中最有可能是哪个对象。然后 softmax 很好,因为它的概率是整个层总和为 1。
另一方面,语义分割以某种方式分割图像。我已经完成了语义医学分割,输出是一个二值图像。这意味着您可以将 sigmoid 作为输出来预测该像素是否属于该特定 class,因为每个输出 class.
的 sigmoid 值介于 0 和 1 之间一般情况下,当存在“n”个classes时,使用Softmax(Softmax Classifier)。 Sigmoid 或 softmax 都可以用于二进制 (n=2) classification.
乙状结肠: S(x) = 1/ ( 1+ ( e^(-x) ))
软最大:
σ(x)j = e / **Σ**{k=1 to K} e^zk for(j=1.....K)
Softmax是MultiClassSigmoid的一种,但是如果你看到Softmax的函数,所有softmax单元的总和应该是1。在sigmoid中,这不是必需的。
深入挖掘,也可以使用sigmoid进行多class class化。当您使用 softmax 时,基本上您会得到每个 class 的概率(连接分布和多项式似然),其总和必然为 1。如果您将 sigmoid 用于 multi class classification,它就像边际分布和伯努利似然,p(y0/x) ,p(y1/x) 等
sigmoid 和 softmax 函数有不同的用途。关于在神经网络设计中什么时候使用sigmoid vs. softmax的详细解释,可以看这篇文章:"Classification: Sigmoid vs. Softmax."
简短摘要:
如果你有一个 multi-label classification 问题,其中有多个 "right answer" (输出不是互斥的)那么你可以在每个原始上使用 sigmoid 函数独立输出。 sigmoid 将使您对所有 class es、其中一些或其中的 none 有很高的概率。
如果您遇到 multi-class class化问题,其中只有一个 "right answer"(输出互斥),则使用 softmax 函数。 softmax 将强制输出 classes 的概率之和等于 1,因此为了增加特定 class 的概率,您的模型必须相应地降低至少其他 classes.
之一