1 什么是激活函数?

激活函数,并不是去激活什么,而是指如何把“激活的神经元的特征”通过函数把特征保留并映射出来(保留特征,去除一些数据中是的冗余),这是神经网络能解决非线性问题关键。

目前知道的激活函数有如下几个:sigmoid,tanh,ReLu,softmax。

simoid函数也称S曲线:f(x)=11+e−x

tanh:f(x)=tanh(x)

ReLU:f(x)=max(x,0)

softmax:f(x)=log(1+exp(x))

2 神经网络中为什么要使用激活函数?

  • 激活函数是用来加入非线性因素的,因为线性模型的表达力不够

这句话字面的意思很容易理解,但是在具体处理图像的时候是什么情况呢?我们知道在神经网络中,对于图像,我们主要采用了卷积的方式来处理,也就是对每个像素点赋予一个权值,这个操作显然就是线性的。但是对于我们样本来说,不一定是线性可分的,为了解决这个问题,我们可以进行线性变化,或者我们引入非线性因素,解决线性模型所不能解决的问题。

这里插一句,来比较一下上面的那些激活函数,因为神经网络的数学基础是处处可微的,所以选取的激活函数要能保证数据输入与输出也是可微的,运算特征是不断进行循环计算,所以在每代循环过程中,每个神经元的值也是在不断变化的。

这就导致了tanh特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果显示出来,但有是,在特征相差比较复杂或是相差不是特别大时,需要更细微的分类判断的时候,sigmoid效果就好了。

还有一个东西要注意,sigmoid 和 tanh作为激活函数的话,一定要注意一定要对 input 进行归一话,否则激活后的值都会进入平坦区,使隐层的输出全部趋同,但是 ReLU 并不需要输入归一化来防止它们达到饱和。

  • 构建稀疏矩阵,也就是稀疏性,这个特性可以去除数据中的冗余,最大可能保留数据的特征,也就是大多数为0的稀疏矩阵来表示。

其实这个特性主要是对于Relu,它就是取的max(0,x),因为神经网络是不断反复计算,实际上变成了它在尝试不断试探如何用一个大多数为0的矩阵来尝试表达数据特征,结果因为稀疏特性的存在,反而这种方法变得运算得又快效果又好了。

所以我们可以看到目前大部分的卷积神经网络中,基本上都是采用了ReLU 函数。

摘自:http://blog.csdn.net/huahuazhu/article/details/74188288

常见的 4 种激活函数(σ、tanh、ReLU、Leaky ReLU):

4 种激活函数的优缺点:
σ: 优点:适合二元分类,因为预测值在[0,1]之间,比如在输出层使用;缺点:当z很大,梯度接近0,下降速度缓慢。
tanh: 比σ要好,因为预测值在[-1,1]之间,可以使均值为0,比如在隐藏层使用;缺点:当z很大,梯度接近0,下降速度缓慢。
ReLU(修正线性单元): 优点:当z很大,梯度为1,下降速度很快,最常用的激活函数;缺点:z有一半梯度为0。
Leaky ReLU(带泄露的修正线性单元): 优点:解决了ReLU的有一半梯度为0的问题;缺点:需要调参来找到一个好的缓慢下降的参数,不常用。


神经网络中如果不加入激活函数,其一定程度可以看成线性表达,最后的表达能力不好,如果加入一些非线性的激活函数,整个网络中就引入了非线性部分,增加了网络的表达能力。目前比较流行的激活函数主要分为以下7种:

1.sigmoid

2.tanh

3.ReLu

4.Leaky ReLu

5.PReLu

6.RReLu

7 Maxout

【Deep Learning 三】神经网络中的非线性激活函数之间的优缺点:sigmoid、tanh、ReLu、Leaky ReLu...相关推荐

  1. 机器学习-神经网络为什么需要非线性(激活函数)

    引言 在学习机器学习的时候,我就一直有着一个疑惑.为什么神经网络需要激活函数(Activation Function)?可能有的人会说,引入激活函数是为了给网络引进非线性.但是有没有仔细思考过,引入非 ...

  2. dive into deep learning 循环神经网络 RNN 部分 学习

    dive into deep learning 循环神经网络 RNN 部分 学习 到目前为止,我们遇到过两种类型的数据:表格数据和图像数据. 对于图像数据,我们设计了专门的卷积神经网络架构来为这类特殊 ...

  3. 【深度学习】——神经网络中常用的激活函数:sigmoid、Relu、Tanh函数

    激活函数   实际中的很多事情并不能简单的用线性关系的组合来描述.在神经网络中,如果没有激活函数,那么就相当于很多线性分类器的组合,当我们要求解的关系中存在非线性关系时,无论多么复杂的网络都会产生欠拟 ...

  4. 【AI面试题】为什么必须在神经网络中引入非线性

    如果神经网络中没有引入非线性层,那么神经网络就变成了了线性层的堆叠.而多层线性网络的堆叠本质上还是一个线性层,我们以两层线性网络的堆叠为例:        我们用f(x)表示第一层线性网络,g(x)表 ...

  5. 【卷积神经网络】12、激活函数 | Tanh / Sigmoid / ReLU / Leaky ReLU / ELU / SiLU / Mish

    文章目录 一.Tanh 二.Sigmoid 三.ReLU 四.Leaky ReLU 五.ELU 六.SiLU 七.Mish 本文主要介绍卷积神经网络中常用的激活函数及其各自的优缺点 最简单的激活函数被 ...

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

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

  7. [Pytorch 常用函数] 激活函数Relu, Leaky Relu

    修正线性单元(Rectified linear unit,ReLU)是神经网络中最常用的激活函数.它保留了 step 函数的生物学启发(只有输入超出阈值时神经元才激活),不过当输入为正的时候,导数不为 ...

  8. 神经网络中的常用激活函数总结

    ©PaperWeekly 原创 · 作者|张文翔 单位|京东集团算法工程师 研究方向|推荐算法 激活函数之性质 1. 非线性:即导数不是常数.保证多层网络不退化成单层线性网络.这也是激活函数的意义所在 ...

  9. 神经网络中常用的激活函数

    原文地址:http://www.cnblogs.com/rgvb178/p/6055213.html 版权声明:本文为博主原创文章,未经博主允许不得转载. 激活函数的作用 首先,激活函数不是真的要去激 ...

最新文章

  1. Yii-yiic使用
  2. 搜狗输入法电脑版SougouPhoneService占用adb进程的问题
  3. linux免安装nginx,Nginx免安装包制作工具:Nginx-portable
  4. 动态规划的Matlab实现和实例分析
  5. 切换数据库_硬核数据库postgres使用pgpool完成主备自动切换,快来盘它
  6. REVIT模型之机器人瓦力
  7. platform总线的probe函数调用
  8. 网络工程师常用英文单词和缩写翻译
  9. Servlet-HttpServletRequestWrapper
  10. Linux下安装Nginx与配置
  11. windows 无法加载DLL “***.dll”:找不到指定的模块
  12. DX C++实现超炫酷粒子特效之烟花特效
  13. RESTFUL API 安全设计指南
  14. 在html中加入中文字体,css设置中文字体
  15. 基于SSM框架CRM客户管理系统
  16. mysql创建表格例子_Mysql创建表例子 | restcy 技术博客
  17. java提供的对集合操作的常用方法,并集,交集,差集
  18. 28岁程序员目前考虑转行,但又不知道自己能干什么
  19. 招标投标中各流程时间期限的规定
  20. 常见的状态码出现原因200、301、302、403、404、500、503

热门文章

  1. java 分库关联查询工具类
  2. Sequelize小记
  3. 延时加载 lazyload使用技巧
  4. IOS8-人机界面指南
  5. Android,谁动了我的内存
  6. string与byte[]之间的转换
  7. 软件测试人员的三重境界
  8. python时间str转datetime_深入了解Python中的小知识
  9. vue比php的优势,vue.js的优势是什么
  10. 寻路的几种算法_Godot游戏开发实践之二:AI之寻路新方式