本篇文章属于总结性文章,看之前你需要对softmax与sigmoid都有一个大概的认识。全文没有代码纯理论,手写+公式的方式简单总结了两种激活函数在多方面的不同,看完对你有帮助的话可以点个收藏并小赞一下😊。
- 解决的实际问题不同
在动手学深度学习——softmax回归之OneHot、softmax与交叉熵一文中,我们以softmax函数和交叉熵实现了一个”单层神经网络”—— softmax回归分类器;同样的,我们也可以用sigmoid函数作为激活函数实现 sigmoid回归分类器。二者分别用于解决多分类问题与多标签问题:
- 多标签问题:一部电影即是剧情片又是爱情片,各类别之间不互斥——sigmoid;
-
多分类问题:一个动物图谱只能是一类动物,各类别之间互斥——softmax;
-
各类别间关系不同
当然我们这里不着重介绍两种分类器的实现和用途,主要介绍两种激活函数间的区别:
- 在softmax中,我们计算得到的各类别概率之和为1,也就是说我们加大某一类别的概率必然导致其他类别减小——各类别之间相互关联,是互斥的。
-
在sigmoid中,我们计算的各类别概率之和则不一定为1,各个输出值依次独立的经过激活函数的映射,某一个类别概率增大可能也伴随另一个类别概率增大——各类别之间相互独立,不互斥。
-
正向传播对应的交叉熵损失函数不同
因此,两种激活函数在计算损失时,分别对应 不同的交叉熵函数,推导如下:
; 4. 反向传播中计算梯度的方式不同
不仅如此,由于两种激活函数计算输出值的方法不一样:
- sigmoid函数是 标量变元的实值标量函数f ( x ) f(x)f (x );
- softmax函数是 向量变元的实值标量函数f ( x ) \pmb f(\pmb x)f f f (x x x )。
所以二者在 多样本(矩阵) 的情况下反向传播计算: 损失函数对激活函数输出的梯度:∂ L ∂ y i ^ \frac{\partial L}{\partial \hat{y_i}}∂y i ^∂L ,以及 激活函数对自身输入的梯度:∂ y i ^ ∂ a i \frac{\partial \hat{y_i}}{\partial a_i}∂a i ∂y i ^ 也有不同,推导如下:
-
补充
-
sigmoid的公式及求导:
- softmax公式及求导:详见知乎博客:反向传播之一:softmax函数
Original: https://blog.csdn.net/qq_50571974/article/details/123967880
Author: 时生丶
Title: 动手学习深度学习——softmax函数与sigmoid函数区别
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/617635/
转载文章受原作者版权保护。转载请注明原作者出处!