精华内容
下载资源
问答
  • 常见的激活函数及其优缺点分析 在上一章我们总体介绍了一下卷积神经网络的框架,...其函数表达式图像如下所示 sigmoi函数是比较原始的激活函数,现在已经不太常用了,主要因为它有以下3个问题: sigmoid函数饱和

    常见的激活函数及其优缺点分析

    在上一章我们总体介绍了一下卷积神经网络的框架,其中谈到了激活函数的作用,今天我们来具体分析一下都有哪些激活函数,他们各自的特点是什么,以及我在学习时的疑问与解答
    (部分截图来源于网络,如有侵权,烦请告知)

    一、 sigmoid函数

    • 特点:所有元素都被压缩在[0,1]范围内,当输入数字很大或很小时,图像都趋于平滑,在0附近趋于线性;其函数表达式和图像如下所示
      在这里插入图片描述
      在这里插入图片描述
      sigmoi函数是比较原始的激活函数,现在已经不太常用了,主要因为它有以下3个问题:
    1. sigmoid函数饱和会导致梯度消失
      当x是很小的负数或很大的正数时,它们都处于sigmoid函数的平滑区域,这些区域的梯度就会消失,从而无法得到梯度流的反馈。(关于其梯度的计算,可以参照下面的推导,也可以之间看图的斜率)
      在这里插入图片描述
    2. sigmoid是一个非零中心的函数
      在这里插入图片描述
      在讲到这儿的时候,大家可能都看到过这个图,这是我当时很困惑的点,这个图到底是什么意思,为什么可能更新的方向是这样
      在这里我首先要更正一下课程中的图,它实质是锯齿状,并不是完全在垂直方向或水平方向
      在这里插入图片描述
      下面我通过一个例子让大家看得更清楚一点。由sigmoid函数特点可知,假设上一级神经元采用了sigmoid激活函数,那么它输出的就全是[0,1]之间的数,即输入到这一级神经元的数x均大于0,下图的推导给大家展示了整个过程,可以看出它在走Z 字形逼近最优解,收敛速度很慢;
      在这里插入图片描述
      在这里插入图片描述由此我们知道,如果使用sigmoid函数作为激活函数,所有W的梯度要么全正,要么全负,但如果换一个以0为中心的激活函数,W的梯度就可以同时有正有负,直接逼近最优解;所以我们一般不用sigmoid函数作为激活函数。
    3. 指数函数的计算代价有点高
      尽管这在这个复杂神经网络框架中不值一提,但仍然是我们需要注意的一小点

    二、tanh函数

    在这里插入图片描述
    在这里插入图片描述

    • 它看起来和sigmoid函数非常相似,但不同之处在于,它将输出值变换到了[-1,1]的范围内,这就解决了sigmoid函数以非0为中心的问题,但它仍然有梯度消失的问题;

    三、ReLU函数

    在这里插入图片描述
    在这里插入图片描述

    • 这就是我们上一章讲到的卷积神经网络中常用的激活函数,与前两个激活函数相比,ReLU函数不会在正的区域产生饱和现象,也就是在正的区域不会有梯度消失,这是一个很大的优势;它的计算成本也不高,且收敛速度大概是前两种的6倍;
    • 但是我们注意到,它也是以非0为中心的,所以tanh刚刚解决的问题现在又出现了
    • 此外,ReLU函数会产生Dead ReLU Problem(这就是我困惑的第二个点了,为什么会说梯度过大,或者学习率过大就会出现神经元死亡?
      首先,我们来解释一下什么叫Dead ReLU Problem,它指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新训练神经网络的时候;举个例子,一旦学习率没有设置好,第一次更新权重的时候,输入是负值,那么这个含有ReLU的神经节点就会死亡,再也不会被激活。因为:ReLU的导数在x>0的时候是1,在x<=0的时候是0。如果x<=0,那么ReLU的输出是0,那么反向传播中梯度也是0,权重就不会被更新,导致神经元不再学习。
      关于这个问题详细的解释大家可以移步知乎使用relu存在梯度过大导致神经元“死亡”,怎么理解?

    总体来说,ReLU函数具有以下优点

    1)采用sigmoid等函数,算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。
    2)对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成信息丢失,从而无法完成深层网络的训练。
    3)ReLU会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生

    四、Leaky ReLU函数

    在这里插入图片描述
    在这里插入图片描述

    • 在上文中我们提到,ReLU将所有的负值设置为0,造成神经元节点死亡情况。因此Leaky ReLU对其做了一个改进,给所有负值赋予一个非零的斜率,这样,不管输入是正是负,都不会有饱和的现象。

    五、PReLU

    在这里插入图片描述

    • 这里的参数α既不需要指定,也不需要硬编码,而是把它当做一个可以反向传播和学习的参数

    六、ELU函数

    在这里插入图片描述
    在这里插入图片描述

    • ELU可看作是介于ReLU和Leaky ReLU之间的一种折中函数,具有Leaky ReLU的形状、使输出均值更接近0,但在负值区域仍然会接近饱和

    七、Maxout 函数

    在这里插入图片描述

    • 这样不会出现饱和也不会出现死亡神经元,但是它会使每个神经元的参数翻倍

    最后一个问题,我们之前说到,激活函数主要作用是用来加入非线性因素的,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题。那么,ReLU函数到底是线性函数还是非线性函数?( 在此引用一位前辈的回答)链接

    1、首先什么是线性的网络,如果把线性网络看成一个大的矩阵M。那么输入样本A和B,则会经过同样的线性变换MA,MB(这里A和B经历的线性变换矩阵M是一样的)。
    2、的确对于单一的样本A,经过由relu激活函数所构成神经网络,其过程确实可以等价是经过了一个线性变换M1,但是对于样本B,在经过同样的网络时,由于每个神经元是否激活(0或者Wx+b)与样本A经过时情形不同了(不同样本),因此B所经历的线性变换M2并不等于M1。因此,relu构成的神经网络虽然对每个样本都是线性变换,但是不同样本之间经历的线性变换M并不一样,所以整个样本空间在经过relu构成的网络时其实是经历了非线性变换的。
    3、还有一种解释就是,不同样本的同一个feature,在通过relu构成的神经网络时,流经的路径不一样(relu激活值为0,则堵塞;激活值为本身,则通过),因此最终的输出空间其实是输入空间的非线性变换得来的。
    4、更极端的,不管是tanh还是sigmoid,你都可以把它们近似看成是分段线性的函数(很多段),但依然能够有非线性表达能力;relu虽然只有两段,但同样也是非线性激活函数,道理与之是一样的。

    综上所示,ReLU的性能最好,后面介绍的Leaky ReLU、PReLU、ELU和Maxout 实质上都是ReLU的变形或者说改进,在选择激活函数时,我们一般的建议是

    1. 优先使用ReLU,但是要很谨慎地调整学习速率;
    2. 可以尝试Leaky ReLU、PReLU、ELU和Maxout等;
    3. 可以尝试使用tanh,但效果可能不会太好;
    4. 最好不要使用sigmoid;
    展开全文
  • 通过程序求出插值函数表达式是比较麻烦的,常用的方法是描出插值曲线上尽量密集的有限个采样点,并用这有限个采样点的连线,即折线,近似插值曲线。取点越密集,所得折线就越逼近理论上的插值曲线。本实验中将所取...
  • 1.2.5 常用的数学函数 1.2.6 数组的运算 1.2.7 数组的扩展 1.2.8 数组的转换 1.2.9 MATLAB 控制语句 1.2.10 其它控制语句 1.2.11 文件操作 1.2.12 M 文件 第二章 MATLAB 图形绘制基础 2.1 二维...
  • MATLAB图形图像处理

    热门讨论 2011-01-03 12:20:11
    1.2.5 常用的数学函数 1.2.6 数组的运算 1.2.7 数组的扩展 1.2.8 数组的转换 1.2.9 MATLAB 控制语句 1.2.10 其它控制语句 1.2.11 文件操作 1.2.12 M 文件 第二章 MATLAB 图形绘制基础 2.1 二维绘图 2.1.1 ...
  • 10.1.1 优化工具箱常用函数 10.1.2 最优化问题 10.2 线性规划 10.2.1 线性规划函数 10.2.2 线性规划问题的应用 10.3 约束非线性规划 10.3.1 基本数学原理介绍 10.3.2 约束非线性规划函数 10.3.3 ...
  • 10.1.1 优化工具箱常用函数 10.1.2 最优化问题 10.2 线性规划 10.2.1 线性规划函数 10.2.2 线性规划问题的应用 10.3 约束非线性规划 10.3.1 基本数学原理介绍 10.3.2 约束非线性规划函数 10.3.3 ...
  • 1.2.5 常用的数学函数 1.2.6 数组的运算 1.2.7 数组的扩展 1.2.8 数组的转换 1.2.9 MATLAB 控制语句 1.2.10 其它控制语句 1.2.11 文件操作 1.2.12 M 文件 第二章 MATLAB 图形绘制基础 2.1 二维绘图 2.1.1 ...
  • PHP+MYSQL动态网站开发(完整免金币版)

    热门讨论 2012-01-04 17:21:24
    第6章 PHP5常用函数介绍 6.1 PHP5内置函数概述 6.2 数组函数 6.3 字符串处理函数 6.4 时间日期函数 6.5 数学函数 6.6 图像处理函数 6.7 其他函数 第7章 PHP5文件与目录操作 7.1 文件操作 7.2 目录操作 7.3 ...
  • 精通matlab6.5

    2010-04-07 10:27:34
    2.6 执行数组运算的常用函数 2.7 数组运算的矩阵运算 2.8 多项式的表达方式及其操作 2.9 标准数组生成函数和数组操作函数 2.10 数组构作技法综合 2.11 高维数组 2.12 “非数”和“空”数组 2.13 关系操作和逻辑操作 ...
  • 第 4 节 数字信号处理常用Matlab函数简介 17 一、 典型离散信号表示方法 17 二、 滤波器分析与实现 18 三、 信号变换 19 第 5 节 方程求解 19 一、 求解单个变量的代数方程:利用 solve函数 19 二、 ...
  • 2.6 执行数组运算的常用函数 2.7 数组运算的矩阵运算 2.8 多项式的表达方式及其操作 2.9 标准数组生成函数和数组操作函数 2.10 数组构作技法综合 2.11 高维数组 2.12 “非数”和“空”数组 2.13 关系操作和...
  • MATLAB程序设计与典型应用(源程序)

    热门讨论 2013-07-04 20:54:16
    绘制三维曲线的常用函数... 141 5.2.2 三维曲面图绘制... 142 5.2.3 其他三维图形绘制... 146 5.2.4 透明度作图... 147 5.2.5 立体可视化... 148 5.3 图形颜色映像的应用... 151 5.4 光照和材质处理... 153 5.4.1 ...
  • 1.7.3常用函数 1.8复数 1.8.1复数和复矩阵的生成 1.8.2复数的运算 1.9数据类型间的转换 本章小结 第2章MATLAB编程 2.1MATLAB编程概述 2.2MATLAB编程原则 2.3分支结构 2.3.1if分支结构 ...
  • 4.2.1 句柄式图形对象的常用函数总结 274 4.2.2 Figure对象的几个重要属性 275 4.2.3 Axes对象的几个重要属性 276 4.2.4 Line对象的几个重要属性 277 4.2.5 text对象的几个重要属性 278 4.2.6 uitable对象的几...
  • Delphi7.完美经典

    热门讨论 2011-09-25 11:44:52
    6-7-4 函数的声明、定义及其实现 6-7-5 参数传递方式 6-7-6 声明修饰字 6-7-7 常用的内建函数 第7章 Object Pascal面向对象设计 7-1 类和对象 7-1-1 类(Class)与对象(Object)的基本概念 7-1-2 对象的构造与...
  • 可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数……,如此往复,以至无穷。 数组大小 1.23 能否声明和传入数组大小一致的局部数组,或者由其他参数指定...
  • 可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数……,如此往复,以至无穷。 12  数组大小 13 1.23 能否声明和传入数组大小一致的局部数组,或者由...
  • 使用正则表达式 - re模块 / compile函数 / group和groups方法 / match方法 / search方法 / findall和finditer方法 / sub和subn方法 / split方法 应用案例 - 使用正则表达式验证输入的字符串 Day13 - 进程和线程 ...
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数……,如此往复,以至无穷。 12  数组大小 13 1.23 能否声明和传入数组大小一致的局部数组,或者由...
  • 掌握VB基本语言、数据类型、常量、变量、常用内部函数、运算符、表达式的概念;掌握基本语句(赋值、用户交互函数和过程,选择结构、循序结构);掌握数组(静态数组、动态数组)的概念、基本操作、应用,以及控件...
  • 2.3 常用函数与语句 实例024 大小写转换 实例025 程序立即退出 实例026 数字与字符串的转换 实例027 文本字数统计 实例028 一封家书 2.4 条件语句 实例029 使用If语句判断成绩优良 实例030 大了小了猜想 ...
  • 汇编语言程序设计 第二版

    热门讨论 2012-08-12 14:23:02
    13.4.4 绘画和图像的应用 13.4.5 命令行参数的处理 习题 第十四章 汇编语言编程环境和调试工具 14.1 汇编语言编程环境 14.1.1 MASM 6.1x 14.1.2 Turbo Assembler 14.1.3 MASM32 14.2 调试工具 14.2.1 Debug 14.2.2 ...
  • Visual C++ 2008入门经典--详细书签版

    热门讨论 2013-02-02 16:07:15
     ◆ 创建和使用常用控件构建应用程序的图形用户界面  ◆ 使用mfc开发库  ◆ 访问数据源的不同控件、控件的工作方式以及定制控件的方法  本书读者对象  本书适用于想学习如何为windows操作系统编写c++程序的初学...
  • C#编程经验技巧宝典

    热门讨论 2008-06-01 08:59:33
    119 <br>6.1 网络验证应用技巧 120 <br>0197 如何使用正则表达式验证E-mail格式 120 <br>0198 如何使用正则表达式验证IP地址 120 <br>0199 如何使用正则表达式验证URL 120 <br>6.2 常用数字...
  • 第21章 Form及其相关对象419 21.1 对象层次中的表单419 21.2 form对象419 21.2.1 语法420 21.2.2 关于该对象420 21.2.3 引用表单控件420 21.2.4 将表单和元素传递到函数421 21.2.5 用电子邮件传输表单423 21.2.6 ...
  •  ◆ 创建和使用常用控件构建应用程序的图形用户界面  ◆ 使用mfc开发库  ◆ 访问数据源的不同控件、控件的工作方式以及定制控件的方法  本书读者对象  本书适用于想学习如何为windows操作系统编写c++程序的初学...
  • 然后从常用Web服务器控件、ASP.NET安全验证控件、数据绑定控件、Web用户控件和ASP.NET导航控件全面介绍了几乎所有ASP.NET控件应用,接着以AJAX无刷新技术及页面模板设计对ASP.NET客户端进行了详细介绍,最后以高效...
  • 然后从常用Web服务器控件、ASP.NET安全验证控件、数据绑定控件、Web用户控件和ASP.NET导航控件全面介绍了几乎所有ASP.NET控件应用,接着以AJAX无刷新技术及页面模板设计对ASP.NET客户端进行了详细介绍,最后以高效...
  • 然后从常用Web服务器控件、ASP.NET安全验证控件、数据绑定控件、Web用户控件和ASP.NET导航控件全面介绍了几乎所有ASP.NET控件应用,接着以AJAX无刷新技术及页面模板设计对ASP.NET客户端进行了详细介绍,最后以高效...

空空如也

空空如也

1 2 3
收藏数 46
精华内容 18
关键字:

常用函数图像及其表达式