2018年03月02日 16:23:35

阅读数:1796

1、什么是激活函数

2、为什么要用

3、都有什么激活函数

4、sigmoid,Relu,softmax

1. 什么是激活函数

如下图,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数 Activation Function。

2. 为什么要用

如果不用激励函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。
如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

3. 都有什么激活函数

(1) sigmoid函数

公式:

曲线:

导数:

sigmoid函数也叫 Logistic 函数,用于隐层神经元输出,取值范围为(0,1),它可以将一个实数映射到(0,1)的区间,可以用来做二分类。
在特征相差比较复杂或是相差不是特别大时效果比较好。

sigmoid缺点:

  • 激活函数计算量大,反向传播求误差梯度时,求导涉及除法
  • 反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练
  • Sigmoids函数饱和且kill掉梯度。
  • Sigmoids函数收敛缓慢。

下面解释为何会出现梯度消失:

反向传播算法中,要对激活函数求导,sigmoid 的导数表达式为:

sigmoid 原函数及导数图形如下:

由图可知,导数从 0 开始很快就又趋近于 0 了,易造成“梯度消失”现象

(2) Tanh函数

公式

曲线

也称为双切正切函数,取值范围为[-1,1]。
tanh在特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果。
与 sigmoid 的区别是,tanh 是 0 均值的,因此实际应用中 tanh 会比 sigmoid 更好。

(3) ReLU

Rectified Linear Unit(ReLU) - 用于隐层神经元输出

公式

曲线

RELU特点:

输入信号 <0 时,输出都是0,>0 的情况下,输出等于输入

ReLU 的优点:

Krizhevsky et al. 发现使用 ReLU 得到的 SGD 的收敛速度会比 sigmoid/tanh 快很多

ReLU 的缺点:
训练的时候很”脆弱”,很容易就”die”了
例如,一个非常大的梯度流过一个 ReLU 神经元,更新过参数之后,这个神经元再也不会对任何数据有激活现象了,那么这个神经元的梯度就永远都会是 0.
如果 learning rate 很大,那么很有可能网络中的 40% 的神经元都”dead”了。

(4) softmax函数

Softmax - 用于多分类神经网络输出

公式

举个例子来看公式的意思:

就是如果某一个 zj 大过其他 z, 那这个映射的分量就逼近于 1,其他就逼近于 0,主要应用就是多分类。

为什么要取指数,第一个原因是要模拟 max 的行为,所以要让大的更大。
第二个原因是需要一个可导的函数。

4. sigmoid ,ReLU, softmax 的比较

Sigmoid 和 ReLU 比较:

sigmoid 的梯度消失问题,ReLU 的导数就不存在这样的问题,它的导数表达式如下:

曲线如图

对比sigmoid类函数主要变化是:
1)单侧抑制
2)相对宽阔的兴奋边界
3)稀疏激活性。

Sigmoid 和 Softmax 区别:

softmax is a generalization of logistic function that “squashes”(maps) a K-dimensional vector z of arbitrary real values to a K-dimensional vector σ(z) of real values in the range (0, 1) that add up to 1.

sigmoid将一个real value映射到(0,1)的区间,用来做二分类。

而 softmax 把一个 k 维的real value向量(a1,a2,a3,a4….)映射成一个(b1,b2,b3,b4….)其中 bi 是一个 0~1 的常数,输出神经元之和为 1.0,所以相当于概率值,然后可以根据 bi 的概率大小来进行多分类的任务。

二分类问题时 sigmoid 和 softmax 是一样的,求的都是 cross entropy loss,而 softmax 可以用于多分类问题

softmax是sigmoid的扩展,因为,当类别数 k=2 时,softmax 回归退化为 logistic 回归。具体地说,当 k=2 时,softmax 回归的假设函数为:

利用softmax回归参数冗余的特点,从两个参数向量中都减去向量θ1 ,得到:

最后,用 θ′ 来表示 θ2−θ1,上述公式可以表示为 softmax 回归器预测其中一个类别的概率为

另一个类别概率的为

这与 logistic回归是一致的。

softmax建模使用的分布是多项式分布,而logistic则基于伯努利分布
  
多个logistic回归通过叠加也同样可以实现多分类的效果,但是 softmax回归进行的多分类,类与类之间是互斥的,即一个输入只能被归为一类;多个logistic回归进行多分类,输出的类别并不是互斥的,即"苹果"这个词语既属于"水果"类也属于"3C"类别。


5. 如何选择

选择的时候,就是根据各个函数的优缺点来配置,例如:

如果使用 ReLU,要小心设置 learning rate,注意不要让网络出现很多 “dead” 神经元,如果不好解决,可以试试 Leaky ReLU、PReLU 或者 Maxout.

激活函数的比较和优缺点,sigmoid,tanh,relu,softmax相关推荐

  1. 三种激活函数——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} ...

  2. 激活函数总结sigmoid,tanh,relu,Leaky ReLU,RRelu,ELU,PRelu,SELU,swish

    本文总结深度学习的损失函数及其优缺点. 激活函数是深度学习模型的重要成分,目的是将线性输入转换为非线性.常见的激活函数有sigmoid,tanh,ReLU等 1.sigmoid Sigmoid 非线性 ...

  3. 【深度学习】激活函数:原理+常见激活函数(Sigmoid\Tanh\ReLU\Leaky ReLU\Softmax)

    首先需要知道为什么要引入激活函数:激活函数是用来加入非线性因素的,因为线性模型的表达能力不够.引入非线性激活函数,可使深层神经网络的表达能力更加强大. 在深度学习中,线性模型只需要简单的全连接层就能实 ...

  4. 常用的激活函数汇总-Sigmoid, tanh, relu, elu

    激活函数(又叫激励函数,后面就全部统称为激活函数)是模型整个结构中的非线性扭曲力,神经网络的每层都会有一个激活函数.那他到底是什么,有什么作用?都有哪些常见的激活函数呢? 深度学习的基本原理就是基于人 ...

  5. 【Pytorch神经网络理论篇】 07 激活函数+Sigmoid+tanh+ReLU+Swish+Mish+GELU

    ①激活函数:主要通过加入非线性因素,你不线性模型表达能力不足的缺陷,因为神经网络中的数学基础是处处可微分的函数,故要求激活函数也应该保证数据的输入与输出是可微分. ②激活函数可以分为饱和激活函数与不饱 ...

  6. 常见激活函数持续更新)sigmoid Tanh Relu Leaky-ReLU RReLU

     激活函数是来向神经网络中引入非线性因素的,通过激活函数,神经网络就可以拟合各种曲线. sigmoid 公式: 函数图像:  Sigmoid函数也叫 Logistic 函数,用于隐层神经元输出,取值范 ...

  7. 激活函数--Sigmoid,tanh,RELU,RELU6,Mish,Leaky ReLU等

    激活函数 目前自己使用比较多的激活函数RELU, RELU6; LeakyReLU; SELU; Mish :激活函数看:计算量:准确率: 大多数激活函数pytorch里有已经包装好了: Non-li ...

  8. 深度学习- 激活函数总结(Sigmoid, Tanh, Relu, leaky Relu, PReLU, Maxout, ELU, Softmax,交叉熵函数)

    激活函数是用来加入非线性因素的,解决线性模型所不能解决的问题 激活函数通常有以下性质 – 非线性 – 可微性 – 单调性 –

  9. 激活函数(阶跃,sigmoid,relu,恒等,softmax)

    一般说"感知机"指的是"朴素感知机",即使用阶跃函数为激活函数的单层感知机: 而"多层感知机"就是指神经网络,即使用sigmoid函数等平滑 ...

  10. 【学习经验分享NO.16】超全代码-python画Sigmoid,ReLU,Tanh等十多种激活函数曲线及其梯度曲线(持续更新)

    文章目录 前言 1. Sigmoid 2. tanh 3. ReLU 4. Leaky ReLU 5. ELU 6.PReLU 7. Softmax 8. Swish 9. Maxout 10. So ...

最新文章

  1. 命名实体识别的三中标注方法BIO,BIOES,BMES
  2. asp.net html5 异步,asp.net core 系列 5 项目实战之:NetCore 的 async 和 await(参考自:Microsoft教程)...
  3. 反编译apk文件教程(查看java代码篇)
  4. DataTables提示:DataTables warning: table id=queueInfo_table - Requested unknown parameter 'type' for r
  5. java rhino 运行 js_Mozilla Rhino :如何从Java调用JS函数
  6. 关于解决Permission is only granted to system apps
  7. vmware 克隆centos 6.4网卡不识别
  8. 洛谷P3642 [APIO2016]烟火表演
  9. kafka权威指南-总结
  10. 三种交换方式:电路交换、分组交换、报文交换
  11. 打通Linux内存管理任督二脉
  12. c语言lookup函数怎么用,lookup函数的使用方法,lookup函数怎么用?
  13. 2022智源大会议程公开 | 预训练大模型论坛
  14. 微信小游戏制作学习笔记
  15. 神经网络可以解决的问题,人工神经网络通过调整
  16. 光E电做好个人理财规划理财如此简单
  17. 像素级分层语义图像分割
  18. 计算机辅助翻译技术的好处,计算机辅助翻译原理与实践
  19. Matlab学习1.0
  20. matlab常用指令

热门文章

  1. 第四代微软小冰:情感框架升级+全时感官+融入社会
  2. 查询自己名下所有的卡
  3. QT定时器之QTimer类加QTime类制作秒表
  4. 【小白】解决VSCODE转到浏览器空白
  5. 短视频拍摄要注意啥细节?从服化道到拍摄思路,注意细节方能成功
  6. 2018蚌埠学院计算机分数线,2018年蚌埠学院艺术类本科专业录取分数线
  7. 2021年一战上岸中山大学计算机专硕考研经验(详细时间规划)
  8. 自己整理的vue实现生成分享海报(含二维码),看着网上的没实现
  9. Android GridView实现横向滚动
  10. Android 修改系统字体大小,导致页面展示异常解决方案