1.什么是激活函数?

在神经网络中,我们经常可以看到对于某一个隐藏层的节点,该节点的激活值计算一般分为两部:

(1)输入该节点的值为x1,x2时,在进入这个隐藏节点后,会先进行一个线性变换,计算出值z[1]=w1x1+w2x2+b[1]=W[1]x+b[1]

(2)在进行一个非线性变换,也就是经过非线性激活函数,计算出该节点的输出值(激活值)a(1)=g(z(1)),其中g(z)为非线性函数.

2.为什么使用激活函数?

如果不使用激活函数,在这种情况下你每一层输出都是上一层输入的线性函数,很容易验证,无论你的神经网络有多少层,输出都是输入的线性组合,与没有隐藏层的效果相当,这种情况就是最原始的感知机.

正因为上面的原因,我们决定引入非线性函数作为激活函数,这样深层神经网络就有意义了(不再是输入输出间的线性组合了,可以逼近任意函数).最早的想法是sigmoid函数或者tanh函数,输出有界,很容易充当下一层输入.

激活函数的作用是为了增加神经网络模型的非线性.否则的话,没有激活函数的每层就相当于矩阵相乘,就算叠加了若干层的隐藏层,无非也是矩阵相乘罢了,所以没有非线性结构的话,根本就算不上是神经网络.

3.常用的激活函数

3.1 sigmoid函数

sigmoid函数可用在网络的最后一层,作为输出层进行二分类,尽量不要使用在隐藏层

该函数是将取值为(−∞,+∞)的数映射到(0,1)之间.sigmoid函数的公式以及图形如下:

对于sigmoid函数的求导推导为:

sigmoid函数作为非线性激活函数,具有以下几个缺点:

(1)当z值非常大或者非常小时,sigmoid函数的导数将接近0.这会导致权重W的梯度将接近0,使得梯度更新非常缓慢,即梯度消失

(2)函数的输出不是以0为均值,将不便于下层的计算

3.2 tanh函数

该函数是将取值为(−∞,+∞)的数映射到(-1,+1)之间,其公式与图形为:

tanh函数的均值为0,因此弥补了sigmoid函数均值为0.5的缺点.

对于tanh函数的求导推导为:

3.3 Relu函数

Relu函数又称为修正线性单元,是一种分段线性函数,其弥补了sigmoid函数以及tanh函数的梯度消失问题.Relu函数的公式以及图形如下:

Relu函数的求导为:

Relu函数的优点:
(1)在输入为正数时候,不存在梯度消失问题

(2)计算速度要 快很多,Relu函数只有线性关系,不管是前向传播还是反向传播,都比sigmoid和tanh要快很多(sigmoid和tanh要计算指数,计算速度会比较慢)

Relu函数的缺点:

当输入为负时候,梯度为0,会产生梯度消失问题.

常用的激活函数sigmoid,relu,tanh相关推荐

  1. 神经网络激活函数sigmoid relu tanh 为什么sigmoid 容易梯度消失

    什么是激活函数 为什么要用 都有什么 sigmoid ,ReLU, softmax 的比较 如何选择 1. 什么是激活函数 如下图,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函 ...

  2. 激活函数 sigmoid、tanh、relu

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

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

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

  4. 神经网络激活函数sigmoid、tanh、Relu、LeakyRelu、Elu、PRelu、MaxOut的java实现

    神经网络常用激活函数包括sigmoid.tanh.Relu.LeakyRelu.Elu.PRelu和MaxOut.对每一种函数采用java进行实现.前面四种激活函数是固定形式,后面三种激活函数部分参数 ...

  5. 激活函数(sigmoid、tanh、ReLU、softmax)

    文章目录 1.1.sigmoid函数 1.2.tanh函数 1.3.ReLU函数 1.4.softmax函数 激活函数在神经网络中的作用有很多,主要作用是给神经网络提供非线性建模能力.如果没有激活函数 ...

  6. 深度学习之常见激活函数-Sigmoid、Tanh、ReLu、softplus、softmax、ELU、PReLU

    一.常见激活函数总结 激活函数: 就是在神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端. 常见的激活函数包括 Sigmoid TanHyperbolic(tanh) ReLu softp ...

  7. 激活函数(sigmoid、Tanh、ReLU、Leaky ReLU、ELU、Maxout)

    sigmoid函数 公式: 图像: sigmoid可以将数据压缩到[0,1]范围内,可看作神经元的饱和放电率.在历史上,sigmoid函数非常有用,这是因为它对神经元的激活频率有很好的解释:从完全不激 ...

  8. 深度学习网络各种激活函数 Sigmoid、Tanh、ReLU、Leaky_ReLU、SiLU、Mish

    激活函数的目的就是为网络提供非线性化 梯度消失:梯度为0, 无法反向传播,导致参数得不到更新 梯度饱和:随着数据的变化,梯度没有明显变化 梯度爆炸:梯度越来越大,无法收敛 梯度消失问题: 1.反向传播 ...

  9. 激活函数sigmoid、tanh、relu

    转载自<动手学深度学习>(PyTorch版) 在线书籍:https://tangshusen.me/Dive-into-DL-PyTorch github:https://github.c ...

最新文章

  1. 利用SurfaceView显示正弦曲线,仿造示波器
  2. 泛化 实现 组合 聚合 关联 依赖
  3. computed vue 不 触发_vuejs render何时执行?以及使用vue.$refs遇到的坑。
  4. python写小程序-用python写个简单的小程序,编译成exe跑在win10上
  5. 数据中心真能促进乡村经济吗?
  6. 04.elasticsearch-dynamic_mapping_and_index_template
  7. python算法编程_Python算法编程
  8. java的或等于_Java中的“小于或等于”比较运算符是__________: !=|||=|=
  9. dentity在Java里是什么意思_注释@Id和@GeneratedValue(strategy = GenerationType.IDENTITY)的用途是什么?为什么世代类型是身份?...
  10. 【HDU - 5977】Garden of Eden(树分治)
  11. (33)SystemVerilog语言编写二分频
  12. app传输数据到php,安卓app客户端和使用php的服务器端数据交互
  13. 重载 重写 多态区别
  14. JavaScript入门到精通,需要掌握的技能盘点
  15. php怎么eclipse打开,PHPEclipse的安装和使用
  16. 什么是P2P和它的应用
  17. 我的世界服务器怎么做无限的弓,我的世界无限弓箭怎么做?
  18. 【DDD】领域驱动设计实践 —— Application层实现
  19. Quartus Prime 软件 USB-blaster 驱动安装失败【已解决】
  20. 免费快速提升网站流量之方法大结合(转摘有修改)

热门文章

  1. Python-冒泡排序函数
  2. 一个工科研究生毕业后的职业规划
  3. 每日新闻摘要:适用于Win7,Android Q Beta等的DirectX
  4. 前端·在线随机生成图片 免费 API
  5. 【微机接口】可编程串行异步通信芯片8250
  6. 恋前体检!您接受吗?
  7. PTA 7-5 字符串的连接
  8. x86、x86-64、x64和amd64的区别(转)
  9. json单引号和双引号转义 完美解决由特殊字符引起的json解析错误(转载)
  10. java和 .net视频教程共享