阅文原文

Softmax与Sigmoid有哪些区别与联系?

1. Sigmoid函数

SigmoidSigmoidSigmoid函数也叫LogisticLogisticLogistic函数,将输入值压缩到(0,1)(0,1)(0,1)区间之中,其函数表达式为:
Sigmoid(x)=11+e−xSigmoid(x) =\frac{1}{1+e^{-x}} Sigmoid(x)=1+e−x1​
函数图像如图所示:

其求导之后的表达式为:
Sigmoid⁡′(x)=Sigmoid⁡(x)⋅(1−Sigmoid⁡(x))\operatorname{Sigmoid}^{\prime}(x)=\operatorname{Sigmoid}(x) \cdot(1-\operatorname{Sigmoid}(x)) Sigmoid′(x)=Sigmoid(x)⋅(1−Sigmoid(x))
其梯度的导数图像如:

对于SigmoidSigmoidSigmoid函数,其优点为:

  • SigmoidSigmoidSigmoid函数的输出在(0,1)(0,1)(0,1)之间,我们通常把它拿来作为一个二分类的方案。其输出范围有限,可以用作输出层,优化稳定。
  • SigmoidSigmoidSigmoid函数是一个连续函数,方便后续求导。

其缺点为:

  • 从函数的导函数可以得到,其值范围为(0, 0.25),存在梯度消失的问题。
  • SigmoidSigmoidSigmoid函数不是一个零均值的函数,导致后一层的神经元将得到上一层非000均值的信号作为输入,从而会对梯度产生影响。
  • SigmoidSigmoidSigmoid函数是一个指数函数的激活函数,我们把每次基本运算当作一次FLOPsFLOPsFLOPs(Floating Point Operations Per Second),则SigmodSigmodSigmod函数包括求负号,指数运算,加法与除法等4FLOPsFLOPsFLOPs的运算量,预算量较大。而如Relu(x)=max(0,x)Relu(x)=max(0, x)Relu(x)=max(0,x),为1FLOPs1FLOPs1FLOPs。

**对于非互斥的多标签分类任务,且我们需要输出多个类别。如一张图我们需要输出是否是男人,是否戴了眼镜,我们可以采用SigmoidSigmoidSigmoid函数来输出最后的结果。**如最后SigmoidSigmoidSigmoid的输出为[0.01,0.02,0.41,0.62,0.3,0.18,0.5,0.42,0.06,0.81][0.01, 0.02, 0.41, 0.62, 0.3, 0.18, 0.5, 0.42, 0.06, 0.81][0.01,0.02,0.41,0.62,0.3,0.18,0.5,0.42,0.06,0.81],我们通过设置一个概率阈值,比如0.30.30.3,如果概率值大于0.30.30.3,则判定类别符合,那么该输入样本则会被判定为类别333、类别444、类别555、类别777及类别888,即一个样本具有多个标签。

2. Softmax函数

SoftmaxSoftmaxSoftmax函数又称归一化指数函数,函数表达式为:
yi=Softmax⁡(xi)=exi∑j=1nexjy_{i}=\operatorname{Softmax}(x_{i})=\frac{e^{x_{i}}}{\sum_{j=1}^{n} e^{x_{j}}} yi​=Softmax(xi​)=∑j=1n​exj​exi​​
其中,i∈[1,n]i \in [1, n]i∈[1,n]。∑iyi=1\sum_{i} y_{i}=1∑i​yi​=1。如网络输出为[−20,10,30][-20, 10, 30][−20,10,30],则经过SoftmaxSoftmaxSoftmax层之后,输出为[1.9287e−22,2.0612e−09,1.0000e+00][1.9287e-22, 2.0612e-09, 1.0000e+00][1.9287e−22,2.0612e−09,1.0000e+00]。

对于SoftmaxSoftmaxSoftmax,往往我们会在面试的时候,需要手写SoftmaxSoftmaxSoftmax函数,这里给出一个参考版本。

import numpy as np
def softmax( f ):# 为了防止数值溢出,我们将数值进行下处理# f: 输入值f -= np.max(f) # f becomes [-666, -333, 0]return np.exp(f) / np.sum(np.exp(f))

针对SoftmaxSoftmaxSoftmax函数的反向传播,这里给出手撕反传的推导过程,主要是分两种情况:


学习链接

因此,不失一般性,扩展成矩阵形式则为:

∂Y∂X=diag⁡(Y)−YT⋅Y(\frac{\partial Y}{\partial X}=\operatorname{diag}(Y)-Y^{T} \cdot Y(∂X∂Y​=diag(Y)−YT⋅Y( 当Y的shape为 (1,n)(1, \mathrm{n})(1,n) 时)。后面在下一题中,我们会将SoftmaxSoftmaxSoftmax与CrossCrossCross EntropyEntropyEntropy LossLossLoss进行结合,再来推导前向与反向。

因此,当我们的任务是一个互斥的多类别分类任务(如imagenet分类),网络只能输出一个正确答案,我们可以用SoftmaxSoftmaxSoftmax函数处理各个原始的输出值。从公式中,我们可以看到SoftmaxSoftmaxSoftmax函数的分母是综合到了所有类别的信息。通常我们也会把SoftmaxSoftmaxSoftmax函数的输出,这主要是由于SoftmaxSoftmaxSoftmax函数先拉大了输入向量元素之间的差异(通过指数函数),然后才归一化为一个概率分布,在应用到分类问题时,它使得各个类别的概率差异比较显著,最大值产生的概率更接近111,这样输出分布的形式更接近真实分布当作网络的置信度

对于SoftmaxSoftmaxSoftmax函数而言,我们可以从不同的角度来理解它:

  • ArgmaxArgmaxArgmax是一个暴力的找最大值的过程,最后的输出是以一个One−hotOne-hotOne−hot形式,将最大值的位置设置为111,其余为000。这样的话,则在网络训练中,是不可导的,我们采用SoftmaxSoftmaxSoftmax看作是ArgmaxArgmaxArgmax的平滑近似,从而可以使得网络可导。
  • SoftmaxSoftmaxSoftmax将输入向量归一化映射到一个类别概率分布,即nnn个类别上的概率分布,因此我们常将SoftmaxSoftmaxSoftmax放到MLPMLPMLP 的最后一层。
  • 从概率图角度,SoftmaxSoftmaxSoftmax可以理解为一个概率无向图上的联合概率。

3. 联系

对于二分类任务而言,二者都可以达到目标,在理论上,没有什么区别。

举个栗子,如现在是二分类(x1,x2x_{1},x_{2}x1​,x2​), 经过SigmoidSigmoidSigmoid函数之后:
Sigmoid⁡(x1)=11+e−x1\operatorname{Sigmoid}\left(x_{1}\right)=\frac{1}{1+e^{-x_{1}}} Sigmoid(x1​)=1+e−x1​1​
对于SoftmaxSoftmaxSoftmax函数,则为:
Softmax⁡(x1)=ex1ex1+ex2=11+e−(x1−x2)\operatorname{Softmax}\left(x_{1}\right)=\frac{e^{x_{1}}}{e^{x_{1}}+e^{x_{2}}}=\frac{1}{1+e^{-\left(x_{1}-x_{2}\right)}} Softmax(x1​)=ex1​+ex2​ex1​​=1+e−(x1​−x2​)1​
对于x1−x2x_{1} - x_{2}x1​−x2​,我们可以使用一个z1z_{1}z1​来进行替换,则替换成了:
Softmax⁡(x1)=11+e−z1\operatorname{Softmax}\left(x_{1}\right)=\frac{1}{1+e^{-z_{1}}} Softmax(x1​)=1+e−z1​1​
该表达式与Sigmoid(x1)Sigmoid(x_{1})Sigmoid(x1​)相同,理论上是相同的。

4. 区别

在我们进行二分类任务时,当我们使用SigmoidSigmoidSigmoid函数,最后一层全连接层的神经元个数是111,神经网络的输出经过它的转换,可以将数值压缩到(0,1)(0,1)(0,1)之间,得到的结果可以理解成分类成目标类别的概率PPP,而不分类到该类别的概率是(1−P)(1 - P)(1−P),这也是典型的两点分布的形式。

而使用SoftmaxSoftmaxSoftmax函数则需要是两个神经元,一个是表示前景类的分类概率,另一个是背景类。此时,SoftmaxSoftmaxSoftmax函数也就退化成了二项分布。

更简单一点理解,SoftmaxSoftmaxSoftmax函数是对两个类别进行建模,其两个类别的概率之和是111。而SigmoidSigmoidSigmoid 函数是对于一个类别的建模,另一个类别可以通过1来相减得到。

SigmoidSigmoidSigmoid得到的结果是“分到正确类别的概率和未分到正确类别的概率”,SoftmaxSoftmaxSoftmax得到的是“分到正确类别的概率和分到错误类别的概率”。

多类别中使用SigmoidSigmoidSigmoid不影响类别之间的概率,而SoftmaxSoftmaxSoftmax最大值类别将抑制其余类别

sigmoid与softmax的区别与联系相关推荐

  1. Sigmoid 与 Softmax 的区别

    Sigmoid 与 Softmax 的区别 结论 定义 图例 拓展:sigmoid.tanh求导 sigmoid求导 tanh求导 参考: Multi-label vs. Multi-class Cl ...

  2. sigmoid和softmax激活函数的区别

    一.简单说下sigmoid激活函数 解析: 常用的非线性激活函数有sigmoid.tanh.relu等等,前两者sigmoid/tanh比较常见于全连接层,后者relu常见于卷积层.这里先简要介绍下最 ...

  3. 广义线性模型?链接函数?sigmoid和softmax?Logistic处理多分类问题?logistic回归处理超大数据?使用logistic和randomsearch进行组合获取最优参数组合、优缺点

    广义线性模型?链接函数?sigmoid和softmax?Logistic处理多分类问题?logistic回归处理超大数据?使用logistic和randomsearch进行组合获取最优参数组合.优缺点 ...

  4. softmax sigmoid log softmax 辨析

    原文链接: sigmoid和softmax总结_老哥的专栏-CSDN博客_sigmoid和softmax区别 浅谈sigmoid函数和softmax函数_甘如荠-CSDN博客_sigmoid函数与so ...

  5. ML/DL之激活函数/求导函数:ML中常用的AF激活函数(step_function、sigmoid、softmax、ReLU等)求导函数等代码实现之详细攻略

    ML/DL之激活函数/求导函数:ML中常用的AF激活函数(step_function.sigmoid.softmax.ReLU等)&求导函数等代码实现之详细攻略 目录 AF函数&求导函 ...

  6. DL之AF:机器学习/深度学习中常用的激活函数(sigmoid、softmax等)简介、应用、计算图实现、代码实现详细攻略

    DL之AF:机器学习/深度学习中常用的激活函数(sigmoid.softmax等)简介.应用.计算图实现.代码实现详细攻略 目录 激活函数(Activation functions)相关配图 各个激活 ...

  7. ReLU,Sigmoid,Tanh,softmax,pipeline【基础知识总结】

    一.ReLU(Rectified Linear Activation Function) 1.优点 2.缺点 3.补充 1.Leaky ReLUs 2.参数化修正线性单元(PReLU) 3.随机纠正线 ...

  8. sigmoid和softmax区别

    Softmax Softmax是对一个向量进行归一化的过程,每个元素的输出都与整个向量相关.softmax通常作为最后一层的激活函数,用于分类任务,并且搭配交叉熵损失共同使用,用于分类任务.因此很多框 ...

  9. 广义线性模型、Logistic、sigmoid、softmax、多分类、与大数据、优缺点

    广义线性模型.广义线性模型的数学形式.Logistic回归.sigmoid函数.softmax函数.Logistic多分类.Logistic与大数据.Logistic回归优缺点总结 目录

最新文章

  1. vmware 报错解决:The system cannot find the path specified.
  2. 进一步考察与UI相关的安全漏洞-上
  3. 【跃迁之路】【500天】程序员高效学习方法论探索系列(实验阶段257-2018.06.20)...
  4. php重载父类属性,子类重写父类属性的问题。。。。求解惑
  5. c语言 嵌入式开发环境搭建,嵌入式C语言环境的搭建
  6. Spring Boot————简介与Spring时代的承接
  7. 港中文开源 | 融合视频目标检测与单目标、多目标跟踪
  8. 分布式文件系统-HDFS(   HDFS全称是Hadoop Distributed System)
  9. if分支语句(JS)
  10. MySQL优化之——触发器
  11. 【UE】UE4下载安装及测试demo
  12. 企业信息化建设(Enterprise Informationization Construction)
  13. autojs控制台美化
  14. 纯前端js导出Excel文件
  15. 在VMware Server上安装Windows Home Server“ Vail”
  16. 最快的BT软件rtorrent Step by Step指南
  17. 监控服务架构组成详解和实现监控方法
  18. element 树形表格行列转换(行列转换系列2)
  19. ACP学习笔记(云计算)附题
  20. cartoon drawing_drawing cartoon s是什么意思?

热门文章

  1. 联盟链FISCO BCOS网络端口讲解
  2. JAVA开源资源(非大全)
  3. 机器学习流行趋势一览
  4. SVN上传不了.so .a库可尝试的解决方法
  5. 雪晴网上海沙龙+在线直播:如何成为数据科学家?
  6. 在知乎逮到一个腾讯10年老测试开发,聊过之后收益良多...
  7. 读围城论方鸿渐与孙柔嘉的爱情
  8. 爬虫信息后ocr识别
  9. html插缝小游戏,HTML5游戏 - 见缝插针
  10. netgear 网件路由器怎么了