深层次理解 Sigmoid - Softmax 激活函数

这两个概念是涉及到神经网络的激活函数,尤其是针对分类问题最后一层的激活函数(有些人说最后一层不能说成是激活函数是转换函数,我也同意,怎么叫都行),sigmoid对应2分类问题,softmax对应多分类问题。 

Softmax:

soft为softened缩写,指“软”或更加温和,在数学是近似某一个函数。这个某一个就是 hard 硬(或者称为argmax,onehot),深度学习稀疏优化算法常用的软阈值(l_1)和硬阈值算子(l_0)也有异曲同工之妙。    

这里解释一下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函数,最终,我们得到:

参考如下,感谢前辈整理:

[1] Softmax与Sigmoid函数的联系 - Shuzi_rank - 博客园

[2] 交叉熵损失函数原理详解_Cigar-CSDN博客_交叉熵损失函数

Guess you like

Origin blog.csdn.net/nobles007820/article/details/108048243