这两个概念是涉及到神经网络的**函数,尤其是针对分类问题最后一层的**函数,sigmoid对应2分类问题,softmax对应多分类问题。
Softmax:
soft为softened缩写,指“软”或更加温和 反义词为 hard 硬,深度学习稀疏优化算法常用的软阈值和硬阈值算子就是此概念。
另外一个单词为max为arg max缩写。单用arg max(最优解集合),神经网络最后一层输出的是一个非0即1的向量,且只有输出值一个1(对应前一层向量最大的值的位置). 如上图例子:最后输出的是[1 0 0].
两个单词合到一起:我们希望分值大的那一项被经常取到,而分值较小的那一项也有一定的概率偶尔被取到,所以我们就应用到了soft的概念,即最后的输出是每个分类被取到的概率。如上图例子:最后输出的是 [0.88, 0.12, 0].
soft有很多,那为啥偏偏用这种soft呢?
原因那可是大有学问,不得不佩服先人的想法。对于多分类问题,由K-L散度延伸得来的交叉熵损失函数是最常用的损失函数,具体怎么延伸来的,见参考文献[2],而softmax做为最后一层输出的**函数,啪~与交叉熵损失函数一复合,求导结果异常简单,当我们运用反向传播的时候就异常之容易。
Sigmoid: 也叫Logistic函数,为二分类问题输出概率的一个映射到0-1的**函数,,图像如下:
它的导数可以用它自己来表示:
sigmoid函数与softmax函数有何关系呢:
总体来说,sigmoid函数是一种特殊的softmax函数,毕竟一个是针对 2分类 一个是针对 大于等于2分类。
用定义来表示,假设模型只能产生两种不同的输出:和
,给定输入
,我们可以写出sigmoid函数如下:
然而,值得注意的是,我们只需要计算一种结果的产生概率,因为另外一种结果
的产生概率可以由概率分布的性质得到:
。接下来,我们对
的产生概率的表示进行扩展:
然后,对该分式的分子和分母都同时除以,得到:
最后,我们可以用该式代入求另一种结果的产生概率的式子中得到:
该等式是欠定的(underdetermined),由于等式中有多于1个的未知变量。如此说来,我们的系统可以有无穷多组解。因此,我们对上式进行简单的修改,直接固定其中一个值。例如:
这就是sigmoid函数,最终,我们得到:
参考如下,感谢前辈整理:
[1] https://www.cnblogs.com/shuzirank/p/6766787.html
[2] https://blog.csdn.net/b1055077005/article/details/100152102