2016-12-31 285 views
1

在与对象检测和语义分割相关的深度学习实现中,我看到了使用sigmoid或softmax的输出层。我不是很清楚什么时候用哪个?在我看来,他们都可以支持这些任务。有这个选择的指导方针吗?softmax和sigmoid函数输出层

回答

3

softmax()有助于当你想要一个概率分布,总结为1 sigmoid当你想输出将范围从0到1时,但不必总和为1

在你的情况,你想分类和选择两种选择。我会建议使用softmax(),因为您会得到一个可以应用交叉熵损失函数的概率分布。

+0

嗨,我认为我的问题很普通。当我阅读一些论文或深度学习实现时,我发现作者使用sigmoid或softmax。我没有看到与这种选择背后的逻辑有关的解释。例如,如果我们正在研究语义分割问题,则应将每个像素预测为第1类或第2类(假设此语义分割是两类标签)。那么我认为softmax和sigmoid都可以使用。但哪一个更好,哪个应该给予更多的偏好。 – user288609

+0

查看已更新的答案 – martianwars

1

对象检测是在图像中的滑动窗口上使用的对象分类。在分类中,重要的是在某些类别空间中找到正确的输出。例如。你会发现10个不同的物体,你想知道哪个物体最有可能在那里。然后softmax是好的,因为它的整体层总和为1。

另一方面,语义分割以某种方式分割图像。我已经完成了语义医学分割,并且输出是二进制图像。这意味着您可以将sigmoid作为输出来预测此像素是否属于此特定类,因为对于每个输出类,sigmoid值都介于0和1之间。

+0

http://stackoverflow.com/help/someone-answers –

2

一般来说,当有'n'个类别存在时,使用Softmax(Softmax分类器)。 Sigmoid或softmax都可用于二进制(n = 2)分类。

乙状结肠: S(X)= 1 /(1+(E ^( - X)))

使用SoftMax:

  σ(x)j = e /**Σ**{k=1 to K} e^zk for(j=1.....K) 

使用SoftMax是一种多级的乙状结肠,但如果看到Softmax的功能,所有softmax单位的总和应该是1.在sigmoid中,它并不是真的有必要。

挖深,你也可以使用sigmoid进行多级分类。当你使用softmax时,基本上你可以得到每个类的概率(联合分布和多项式可能性),其总和必定为1。如果你使用sigmoid进行多类分类,它会像一个边缘分布和伯努利似然,p(y0/x),p(y1/x)等。