用神经网络做二元分类,输出层用Sigmoid还是Softmax?

  统计/机器学习 监督式学习 深度学习 人工神经网络    浏览次数:9258        分享
1

我用神经网络做二元分类,在最后的输出层的地方,output的函数应该用什么?

用Sigmoid还是Softmax?哪个好?

谢谢!


 

风云使者   2017-09-08 13:44



   3个回答 
3

本质上说它们是一个东西,所以没有所谓的谁好谁坏。

Softmax是广义的Sigmoid,因为Sigmoid只能做二元分类。Softmax是可以做多元分类。二元的Softmax其实就退化成了Sigmoid。


SofaSofa数据科学社区DS面试题库 DS面经

木子周   2017-09-09 04:18

1

对于二元分类Softmax和Sigmoid在数学上相似,但是在数值计算(numerical)上有点差别。

 对于Softmax,

$P(y=1|X)=\frac {e^{X^Tw_1}} {e^{X^Tw_0}+e^{X^Tw_1}}$,

$X$是全连接层输入,$w$是全连接层参数,$X^Tw_k$是logits,全连接层输出。当$X^Tw_1=$inf,输出$P$=inf/inf=Nan;当$X^Tw_1=$-inf,$X^Tw_0=$-inf,输出$P$=0/0,会报错float division by zero。

对于Sigmoid,

$P(y=1|X)=\frac {e^{X^Tw_1}} {e^{X^Tw_0}+e^{X^Tw_1}}$

$=\frac {e^{X^Tw_1}/e^{X^Tw_1}} {(e^{X^Tw_0}+e^{X^Tw_1})/e^{X^Tw_1}}$

$=\frac {1} {e^{X^T(w_0-w_1)}+1}$

$=\frac {1} {e^{X^T\Delta w}+1}$

当$X^T\Delta w$为inf/-inf时,输出$P$为0/1。

Softma需要学习两组$w_0,w_1$,而Sigmoid只需要学一组$\Delta w$。所以最好用一位输出的Sigmoid。



SofaSofa数据科学社区DS面试题库 DS面经

Zealing   2018-07-08 22:08

0

虽说它们似乎是等价的,不过感觉sigmoid更常用,更保险一点吧

SofaSofa数据科学社区DS面试题库 DS面经

Robin峰   2018-07-02 12:16



  相关讨论

epoch和batch之间有什么关系?

吴恩达深度学习第一课第四周作业L层结果收敛在0.64的问题

dropout rate一般设置多大?

反向传播和梯度算法概念???反向传播是指反向传播算法,还是反向传播算法中的一个过程?

deep learning中的pooling是什么意思?

为什么小数据不适合神经网络模型?

神经网络中的dense和sparse是什么意思?

wide-deep模型里的wide和deep分别是指什么意思?

关于神经网络的性能

神经网络中的Dropout和Bagging

  随便看看

推荐开放数据库

VGG16和VGG19的区别?

返回DataFrame或者array的行数

opencv里waitkey和destroyAllWindows有什么用?

概率论中的鞅是什么?