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