动手学习深度学习——softmax函数与sigmoid函数区别

本篇文章属于总结性文章,看之前你需要对softmax与sigmoid都有一个大概的认识。全文没有代码纯理论,手写+公式的方式简单总结了两种激活函数在多方面的不同,看完对你有帮助的话可以点个收藏并小赞一下😊。

1. 解决的实际问题不同

动手学深度学习——softmax回归之OneHot、softmax与交叉熵一文中,我们以softmax函数和交叉熵实现了一个“单层神经网络”——softmax回归分类器;同样的,我们也可以用sigmoid函数作为激活函数实现sigmoid回归分类器。二者分别用于解决多分类问题与多标签问题:

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

2. 各类别间关系不同

当然我们这里不着重介绍两种分类器的实现和用途,主要介绍两种激活函数间的区别:

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

3. 正向传播对应的交叉熵损失函数不同

因此,两种激活函数在计算损失时,分别对应不同的交叉熵函数,推导如下:

两种交叉熵函数推导

4. 反向传播中计算梯度的方式不同

不仅如此,由于两种激活函数计算输出值的方法不一样:

  • sigmoid函数是标量变元的实值标量函数 f ( x ) f(x) f(x)
  • softmax函数是向量变元的实值标量函数 f ( x ) \pmb f(\pmb x) fff(xxx)

所以二者在 多样本(矩阵) 的情况下反向传播计算:损失函数对激活函数输出的梯度: ∂ L ∂ y i ^ \frac{\partial L}{\partial \hat{y_i}} yi^L,以及激活函数对自身输入的梯度: ∂ y i ^ ∂ a i \frac{\partial \hat{y_i}}{\partial a_i} aiyi^ 也有不同,推导如下:

两种激活函数求导

5. 补充

  1. sigmoid的公式及求导:

sigmoid函数简介

  1. softmax公式及求导:详见知乎博客:反向传播之一:softmax函数
  • 21
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值