softmax与sigmoid函数的区别

sigmoid 函数用于多标签问题,选取多个标签作为正确答案,它是将任意实数值归一化映射到[0-1]之间,并不是不同概率之间的相互关联,且由于远离0的部分梯度较小,容易出现梯度消失现象 。

sigmoid详细解释:Sigmoid函数解析__Sumor的博客-CSDN博客_sigmoid函数

当x趋近于负无穷时,y趋近于0;当x趋近于正无穷时,y趋近于1;当x=0时,y=1/2。用sigmoid函数近似得到不同斜率的线性函数,只要x的取值始终在某个特定的范围之内,总可以将sigmoid函数近似为,在该范围内成立的不同斜率的线性函数。

softmax与sigmoid函数的区别_第1张图片softmax与sigmoid函数的区别_第2张图片

 Softmax 函数用于多分类问题,即从多个分类中选取一个正确答案。 Softmax 综合了所有输出值的归一化,因此得到的是不同概率之间的相互关联 。它将任意实数值的 K 维向量 z“压缩”(映射)到 (0, 1) 范围内加起来为 1 的实数值的 K 维向量 σ(z)。

本质就是将一个K维的任意实数向量压缩(映射)成另一个K维的实数向量,其中向量中的每个元素取值都介于(0,1)之间(元素和为1)。

softmax与sigmoid函数的区别_第3张图片

softmax与sigmoid函数的区别_第4张图片

二者在结果上很相似,对于 n 个神经元,无论是进行softmax还是sigmoid,输出都是 n 个取值在   ( 0 , 1 )  的数,区别就在于softmax是一个针对输出结果归一化的过程,所以也称作softmax层;而sigmoid只是一个非线性激活过程,所以一般称为激活函数。

softmax函数是 sigmoid 函数在多分类问题上的推广,一般用于多分类的结果,它是将 多分类问题的结果以概率的形式展现出来 ,大多数用于网络的最后一层。例如当输出层为一个神经元时,此时会使用sigmoid代替softmax,因为此时还按照softmax公式的话计算值为1。

解决的实际问题

  • 多标签问题:一部电影即是剧情片又是爱情片,各类别之间不互斥——sigmoid;
  • 多分类问题:一个动物图谱只能是一类动物,各类别之间互斥——softmax;

 各类别间关系

  • 在softmax中,我们计算得到的各类别概率之和为1 ,也就是说我们加大某一类别的概率必然导致其他类别减小——各类别之间相互关联,是互斥的。
  • 在sigmoid中,我们计算的各类别概率之和则不一定为1 ,各个输出值依次独立的经过激活函数的映射,某一个类别概率增大可能也伴随另一个类别概率增大——各类别之间相互独立,不互斥。

正向传播对应的交叉熵损失函数

  • softmax函数每一个输出由全体输入得到。softmax的计算的是一个比重,样本概率和接近1。
  • sigmoid函数每一个输出由单个输入得到。sigmoid只是对每一个输出值进行非线性化,和大于1 。

对于多分类的问题,softmax作为输出层的神经网络训练速度明显比sigmoid作为输出层的神经网络快,并且对于一些较难分的数据集,softmax的学习效果明显比sigmoid要好。 softmax 函数在神经网络中更适合更适合作为 最终输出层的激活函数, sigmoid函数在神经网络中更适合更适合作为 中间隐藏层的激活函数

你可能感兴趣的:(机器学习,人工智能,深度学习)