1.激活函数sigmoid

Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的激活函数,将变量映射到0,1之间。


图像归一化的过程:


Sigmoid =多标签分类问题=多个正确答案=非独占输出(例如胸部X光检查、住院)。构建分类器,解决有多个正确答案的问题时,用Sigmoid函数分别处理各个原始输出值。

Sigmoid函数是一种logistic函数,它将任意的值转换到 [0,1] 之间,如图1所示,函数表达式:

它的导函数为:


优点: 1. Sigmoid函数的输出在(0,1)之间,输出范围有限,优化稳定,可以用作输出层。2. 连续函数,便于求导。

缺点: 1. 最明显的就是饱和性,从上图也不难看出其两侧导数逐渐趋近于0,容易造成梯度消失。
2. 激活函数的偏移现象。Sigmoid函数的输出值均大于0,使得输出不是0的均值,这会导致后一层的神经元将得到上一层非0均值的信号作为输入,这会对梯度产生影响。
3. 计算复杂度高,因为Sigmoid函数是指数形式。

对于Softmax函数和Sigmoid函数,我们分为两部分讲解,第一部分:对于分类任务,第二部分:对于二分类任务(详细讲解)

2 .Softmax函数

Softmax =多类别分类问题=只有一个正确答案=互斥输出(例如手写数字,鸢尾花)。构建分类器,解决只有唯一正确答案的问题时,用Softmax函数处理各个原始输出值。Softmax函数的分母综合了原始输出值的所有因素,这意味着,Softmax函数得到的不同概率之间相互关联。

Softmax函数,又称归一化指数函数,函数表达式为:

Softmax函数是二分类函数Sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。如图2所示,Softmax直白来说就是将原来输出是3,1,-3通过Softmax函数一作用,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标。

由于Softmax函数先拉大了输入向量元素之间的差异(通过指数函数),然后才归一化为一个概率分布,在应用到分类问题时,它使得各个类别的概率差异比较显著,最大值产生的概率更接近1,这样输出分布的形式更接近真实分布。
Softmax可以由三个不同的角度来解释。从不同角度来看softmax函数,可以对其应用场景有更深刻的理解:

1.softmax可以当作arg max的一种平滑近似,与arg max操作中暴力地选出一个最大值(产生一个one-hot向量)不同,softmax将这种输出作了一定的平滑,即将one-hot输出中最大值对应的1按输入元素值的大小分配给其他位置。
2.softmax将输入向量归一化映射到一个类别概率分布,即 [公式] 个类别上的概率分布(前文也有提到)。这也是为什么在深度学习中常常将softmax作为MLP的最后一层,并配合以交叉熵损失函数(对分布间差异的一种度量)。
3.从概率图模型的角度来看,softmax的这种形式可以理解为一个概率无向图上的联合概率。因此你会发现,条件最大熵模型与softmax回归模型实际上是一致的,诸如这样的例子还有很多。由于概率图模型很大程度上借用了一些热力学系统的理论,因此也可以从物理系统的角度赋予softmax一定的内涵。

总结:

如果模型输出为非互斥类别,且可以同时选择多个类别,则采用Sigmoid函数计算该网络的原始输出值。
如果模型输出为互斥类别,且只能选择一个类别,则采用Softmax函数计算该网络的原始输出值。
Sigmoid函数可以用来解决多标签问题,Softmax函数用来解决单标签问题。
对于某个分类场景,当Softmax函数能用时,Sigmoid函数一定可以用。

例子说明:
一种常见的错法(NLP中):即错误地将Softmax和Sigmoid混为一谈,再把BERT输出层压缩至2维的情况下,却用Sigmoid对结果进行计算。这样我们得到的结果其意义是什么呢?

假设我们现在BERT输出层经 nn.Linear() 压缩后,得到一个二维的向量:

[-0.9419267177581787, 1.944047451019287]

对应类别分别是 (0,1) 。我们经过Sigmoid运算得到:

tensor([0.2805, 0.8748])

前者0.2805指的是分类类别为0的概率,0.8748指的是分类类别为1的概率。二者相互独立,可看作两次独立的实验(显然在这里不适用,因为0-1类别之间显然不是相互独立的两次伯努利事件)。所以显而易见的,二者加和并不等于1。

若用softmax进行计算,可得:

tensor([0.0529, 0.9471])

这里两者加和是1,才是正确的选择。

激活函数sigmoid和激活函数softmax相关推荐

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

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

  2. 激活函数Sigmoid

    激活函数Sigmoid 系列文章:    上一节激活函数中已经讨论了激活函数的重要性,和大致发展路径.本文直接讨论SIgmoid激活函数,这是比较早的激活函数了,使用也非常广泛,这个函数又叫Logis ...

  3. DL之DNN优化技术:采用三种激活函数(sigmoid、relu、tanh)构建5层神经网络,权重初始值(He参数初始化和Xavier参数初始化)影响隐藏层的激活值分布的直方图可视化

    DL之DNN优化技术:采用三种激活函数(sigmoid.relu.tanh)构建5层神经网络,权重初始值(He参数初始化和Xavier参数初始化)影响隐藏层的激活值分布的直方图可视化 目录

  4. 【李宏毅2020 ML/DL】P10 Classification_1 | 简单的例子告诉你使用 wx+b 以及 Sigmoid 作为激活函数的合理性

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐): https://github.com/Sakura-gh/ML-not ...

  5. 三种激活函数——Sigmoid,Tanh, ReLU以及卷积感受野的计算

    1. 三种激活函数--Sigmoid, Tanh, ReLU 1.1 Sigmoid 1.1.1 公式 S ( x ) = 1 1 + e − x S(x) = \frac{1}{1 + e^{-x} ...

  6. 激活函数 sigmoid、tanh、relu

    PS:以下图有标注错误,红色都是原函数,蓝色都是导函数 激活函数(activation functions)的目标是,将神经网络非线性化.激活函数是连续的(continuous),且可导的(diffe ...

  7. 激活函数、Sigmoid激活函数、tanh激活函数、ReLU激活函数、Leaky ReLU激活函数、Parametric ReLU激活函数详细介绍及其原理详解

    相关文章 梯度下降算法.随机梯度下降算法.动量随机梯度下降算法.AdaGrad算法.RMSProp算法.Adam算法详细介绍及其原理详解 反向传播算法和计算图详细介绍及其原理详解 激活函数.Sigmo ...

  8. 激活函数-Sigmoid, Tanh及ReLU

    什么是激活函数 在神经网络中,我们会对所有的输入进行加权求和,之后我们会在对结果施加一个函数,这个函数就是我们所说的激活函数.如下图所示. 为什么使用激活函数 我们使用激活函数并不是真的激活什么,这只 ...

  9. 【激活函数】h-swish激活函数详解

    Swish 激活函数已经被证明是一种比 ReLU 更佳的激活函数,但是相比 ReLU,它的计 算更复杂,因为有 sigmoid 函数.为了能够在移动设备上应用 swish 并降低它的计算开销, 提出了 ...

最新文章

  1. Linux下安装java(Ubuntu为例)
  2. 在Oracle中IMP导入数据时,如何解决目标数据库字符不一致问题
  3. “invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim tensor to a Python”解决办法
  4. 树莓派apt-get下载网速太慢
  5. linux 打开关闭文件,Linux系统编程-文件打开关闭
  6. [摘]一张图 , oracle merge用法:
  7. linux中用户忘记root的密码--ubuntu版本
  8. 2017 Material design 第二章第六节《富有创造性的定制方案》
  9. [poj3321]Apple Tree_dfs序_树状数组
  10. html5游戏开发box2djs,Box2D.js简易示例
  11. TiDB集群大规模删除实践
  12. mysql隐藏information_如何让普通用户登录phpmyadmin不显示information_schema
  13. (1)Deep Learning之感知器
  14. Python AES
  15. linux编程进程,Linux编程—进程
  16. volley6--CacheDispatcher从缓存中获取数据
  17. 【图像去噪】基于matlab GUI均值+中值滤波图像去噪【含Matlab源码 372期】
  18. Spring属性编辑器解读(转载)
  19. 如何做决策?SWOT分析
  20. 计算机网络实验——ns3仿真最短路由选择算法

热门文章

  1. MyEclipse 9.x Professional/blue/spring/bling 下载与破解
  2. post提交返回json格式
  3. 10款在线格式转化应用
  4. 在CentOS 6.8上安装Nginx
  5. 怎样使一个Android应用不被杀死?
  6. 编程入门到进大厂,你需要这套学习架构
  7. 【高并发】一个工作了7年的朋友去面试竟然被Thread类虐的体无完肤
  8. IT人面试必看!25个雷区和11个必问句!
  9. 看源码,我为什么推荐IDEA?
  10. 一线互联网智能推荐系统架构演进