Bootstrap

softmax与sigmoid的区别

softmax与sigmoid这两者之间区别其实还不小,还是先看两者结构上的区别:

可以看出最大的区别在于softmax的计算的是一个比重,而sigmoid只是对每一个输出值进行非线性化。
二者在结果上很相似,对于 n l n^l nl个神经元,无论是进行softmax还是sigmoid,输出都是 n l n^l nl个取值在 ( 0 , 1 ) (0,1) (0,1)的数(softmax 可能取 [ 0 , 1 ] [0,1] [0,1]),区别就在于softmax是一个针对输出结果归一化的过程,所以很多文献里也称作softmax层;而sigmoid只是一个非线性激活过程,所以一般称为激活函数。
二者公式上也并不是直接归一化的关系:
sigmoid: 1 1 + e z \frac{1}{1+e^z} 1+ez1
softmax: e z k ∑ i = 1 n l e z i \frac{e^{z_k}}{\sum_{i=1}^{n^l} e^{z_i}} i=1nleziezk

但是当输出层为一个神经元时,此时会使用sigmoid代替softmax,因为此时还按照softmax公式的话计算值为1。

softmax一般用于多分类的结果,一般和one-hot的真实标签值配合使用,大多数用于网络的最后一层;而sigmoid是原本一种隐层之间的激活函数,但是因为效果比其他激活函数差,目前一般也只会出现在二分类的输出层中,与0 1真实标签配合使用。

;