sigmoid与softmax的区别与联系
阅文原文
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=1nexjexi
其中,i∈[1,n]i \in [1, n]i∈[1,n]。∑iyi=1\sum_{i} y_{i}=1∑iyi=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−x11
对于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+ex2ex1=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−z11
该表达式与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的区别与联系相关推荐
- Sigmoid 与 Softmax 的区别
Sigmoid 与 Softmax 的区别 结论 定义 图例 拓展:sigmoid.tanh求导 sigmoid求导 tanh求导 参考: Multi-label vs. Multi-class Cl ...
- sigmoid和softmax激活函数的区别
一.简单说下sigmoid激活函数 解析: 常用的非线性激活函数有sigmoid.tanh.relu等等,前两者sigmoid/tanh比较常见于全连接层,后者relu常见于卷积层.这里先简要介绍下最 ...
- 广义线性模型?链接函数?sigmoid和softmax?Logistic处理多分类问题?logistic回归处理超大数据?使用logistic和randomsearch进行组合获取最优参数组合、优缺点
广义线性模型?链接函数?sigmoid和softmax?Logistic处理多分类问题?logistic回归处理超大数据?使用logistic和randomsearch进行组合获取最优参数组合.优缺点 ...
- softmax sigmoid log softmax 辨析
原文链接: sigmoid和softmax总结_老哥的专栏-CSDN博客_sigmoid和softmax区别 浅谈sigmoid函数和softmax函数_甘如荠-CSDN博客_sigmoid函数与so ...
- ML/DL之激活函数/求导函数:ML中常用的AF激活函数(step_function、sigmoid、softmax、ReLU等)求导函数等代码实现之详细攻略
ML/DL之激活函数/求导函数:ML中常用的AF激活函数(step_function.sigmoid.softmax.ReLU等)&求导函数等代码实现之详细攻略 目录 AF函数&求导函 ...
- DL之AF:机器学习/深度学习中常用的激活函数(sigmoid、softmax等)简介、应用、计算图实现、代码实现详细攻略
DL之AF:机器学习/深度学习中常用的激活函数(sigmoid.softmax等)简介.应用.计算图实现.代码实现详细攻略 目录 激活函数(Activation functions)相关配图 各个激活 ...
- ReLU,Sigmoid,Tanh,softmax,pipeline【基础知识总结】
一.ReLU(Rectified Linear Activation Function) 1.优点 2.缺点 3.补充 1.Leaky ReLUs 2.参数化修正线性单元(PReLU) 3.随机纠正线 ...
- sigmoid和softmax区别
Softmax Softmax是对一个向量进行归一化的过程,每个元素的输出都与整个向量相关.softmax通常作为最后一层的激活函数,用于分类任务,并且搭配交叉熵损失共同使用,用于分类任务.因此很多框 ...
- 广义线性模型、Logistic、sigmoid、softmax、多分类、与大数据、优缺点
广义线性模型.广义线性模型的数学形式.Logistic回归.sigmoid函数.softmax函数.Logistic多分类.Logistic与大数据.Logistic回归优缺点总结 目录
最新文章
- vmware 报错解决:The system cannot find the path specified.
- 进一步考察与UI相关的安全漏洞-上
- 【跃迁之路】【500天】程序员高效学习方法论探索系列(实验阶段257-2018.06.20)...
- php重载父类属性,子类重写父类属性的问题。。。。求解惑
- c语言 嵌入式开发环境搭建,嵌入式C语言环境的搭建
- Spring Boot————简介与Spring时代的承接
- 港中文开源 | 融合视频目标检测与单目标、多目标跟踪
- 分布式文件系统-HDFS( HDFS全称是Hadoop Distributed System)
- if分支语句(JS)
- MySQL优化之——触发器
- 【UE】UE4下载安装及测试demo
- 企业信息化建设(Enterprise Informationization Construction)
- autojs控制台美化
- 纯前端js导出Excel文件
- 在VMware Server上安装Windows Home Server“ Vail”
- 最快的BT软件rtorrent Step by Step指南
- 监控服务架构组成详解和实现监控方法
- element 树形表格行列转换(行列转换系列2)
- ACP学习笔记(云计算)附题
- cartoon drawing_drawing cartoon s是什么意思?