为什么使用非线性激活函数?常见的非线性激活函数及优缺点对比

2023-11-17

  • 为何使用非线性激活函数? 

w600

 如上图的神经网络,在正向传播过程中,若使用线性激活函数(恒等激励函数),即令g(z)=kz,则隐藏层的输出为

 a^{[1]}=z^{[1]}=W^{[1]}x+b^{[1]}

 a^{[2]}=z^{[2]}=W^{[2]}a^{[1]}+b^{[2]}=W^{[2]}\left ( W^{[1]}x+b^{[1]} \right )+b^{[2]}

a^{[2]}=z^{[2]}=W'x+b' 

可以看到使用线性激活函数神经网络只是把输入线性组合再输出,所以当有很多隐藏层时,在隐藏层使用线性激活函数的训练效果和不使用影藏层即 标准的Logistic回归是一样的。故我们要在隐藏层使用非线性激活函数而非线性的。

通常只有一个地方可以使用线性激活函数,就是你在做机器学习中的回归问题。 y是一个实数,举个例子,比如你想预测房地产价格, y就不是二分类任务0或1,而是一个实数,从0到正无穷。如果y是个实数,那么在输出层用线性激活函数也许可行,你的输出也是一个实数,从负无穷到正无穷。总而言之,不能在隐藏层使用线性激活函数,除了一些特殊情况,比如和压缩有关的。

  • 饱和的概念

当一个激活函数h(x)满足\lim_{n\rightarrow+\infty}h'(x)=0时,我们称之为右饱和。 
当一个激活函数h(x)满足\lim_{n\rightarrow-\infty}h'(x)=0 时,我们称之为左饱和。 
当一个激活函数,既满足左饱和又满足又饱和时,我们称之为饱和。

对任意的x,如果存在常数c,当 x > c 时恒有h'(x)=0则称其为右硬饱和。 
对任意的x,如果存在常数c,当 x < c 时恒有h'(x)=0则称其为左硬饱和。 
若既满足左硬饱和,又满足右硬饱和,则称这种激活函数为硬饱和。 
如果只有在极限状态下偏导数等于0的函数,称之为软饱和。

  •  常用激活函数

参考链接:

1)https://mp.weixin.qq.com/s?__biz=MzI1NTE4NTUwOQ==&mid=2650325236&idx=1&sn=7bd8510d59ddc14e5d4036f2acaeaf8d&scene=0#wechat_redirect

2)http://www.ai-start.com/dl2017/html/lesson1-week3.html#header-n152

1、sigmoid函数

 

 求导:\frac{\mathrm{d}}{\mathrm{d} x}g(z)=\frac{1}{1+e^{-z}}\left ( 1- \frac{1}{1+e^{-z}}\right )=g(z)(1-g(z))

z=10z=-10\frac{\mathrm{d}}{\mathrm{d} x}g(z)\approx 0

 当z=0\frac{\mathrm{d}}{\mathrm{d} x}g(z)= 1/4 

  Sigmoid 的软饱和性,使得深度神经网络在二三十年里一直难以有效的训练,是阻碍神经网络发展的重要原因。由于在后向传递过程中,sigmoid向下传导的梯度包含了一个f’(x) 因子(sigmoid关于输入的导数),因此一旦输入落入饱和区,f’(x) 就会变得接近于0,导致了向底层传递的梯度也变得非常小。

优点:

  1. Sigmoid 函数的输出映射在(0,1)之间,单调连续,输出范围有限,优化稳定,可以用作输出层。它在物理意义上最为接近生物神经元。
  2. 求导容易。

缺点:

  1. 由于其软饱和性,容易产生梯度消失,导致训练出现问题。
  2. 其输出并不是以0为中心的。

 2、tanh  

同样的,Tanh 激活函数也具有软饱和性。Tanh 网络的收敛速度要比 Sigmoid 快。因为 Tanh 的输出均值比 Sigmoid 更接近 0,SGD 会更接近 natural gradient(一种二次优化技术),从而降低所需的迭代次数。

优点:

  1. 比Sigmoid函数收敛速度更快。
  2. 相比Sigmoid函数,其输出以0为中心。

缺点:

      还是没有改变Sigmoid函数的最大问题——由于饱和性产生的梯度消失。

 3、Relu与Leeaky Relu

 ReLU 在x<0 时硬饱和。由于 x>0时导数为 1,所以,ReLU 能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。但随着训练的推进,部分输入会落入硬饱和区,导致对应权重无法更新。这种现象被称为“神经元死亡”。

优点:

  1. 相比起Sigmoid和tanh,ReLU在SGD中能够快速收敛。据称,这是因为它线性、非饱和的形式。
  2. Sigmoid和tanh涉及了很多很expensive的操作(比如指数),ReLU可以更加简单的实现。
  3. 有效缓解了梯度消失的问题。
  4. 在没有无监督预训练的时候也能有较好的表现。
  5. 提供了神经网络的稀疏表达能力。

缺点:

        随着训练的进行,可能会出现神经元死亡,权重无法更新的情况。如果发生这种情况,那么流经神经元的梯度从这一点开始将永远是0。也就是说,ReLU神经元在训练中不可逆地死亡了。

        ReLU另一个问题是输出具有偏移现象,即输出均值恒大于零。偏移现象和 神经元死亡会共同影响网络的收敛性。

4、PRelu

PReLU 是 ReLU 和 LReLU 的改进版本,具有非饱和性。当 ai 比较小且固定的时候,称之为 LReLU。LReLU 最初的目的是为了避免梯度消失。但在一些实验中,发现 LReLU 对准确率并没有太大的影响。很多时候,当我们想要应用 LReLU 时,必须非常小心谨慎地重复训练,选取出合适的 a,LReLU 表现出的结果才比 ReLU 好。因此有人提出了一种自适应地从数据中学习参数的 PReLU。PReLU具有收敛速度快、错误率低的特点。因为PReLU的输出更接近0均值,使得SGD更接近natural gradient。PReLU可以用于反向传播的训练,可以与其他层同时优化。

5、Erelu

ELU 融合了sigmoid和ReLU,具有左侧软饱性。右侧线性部分使得ELU能够缓解梯度消失,而左侧软饱能够让ELU对输入变化或噪声更鲁棒。ELU的输出均值接近于零,所以收敛速度更快。

PReLU、ELU等激活函数不具备Relu这种稀疏性,但都能够提升网络性能。

6、Maxout

Maxout是ReLU的推广,其发生饱和是一个零测集事件。Maxout网络能够近似任意连续函数,且当w2,b2,…,wn,bn为0时,退化为ReLU。

Maxout能够缓解梯度消失,同时又规避了ReLU神经元死亡的缺点,但增加了参数和计算量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么使用非线性激活函数?常见的非线性激活函数及优缺点对比 的相关文章

  • 【人工智能】感知器算法的设计实现(QDU)

    人工智能 Astar算法求解8数码问题 QDU 人工智能 利用 搜索的博弈树算法编写一字棋游戏 QDU 人工智能 Fisher 线性分类器的设计与实现 QDU 人工智能 感知器算法的设计实现 QDU 人工智能 SVM 分类器的设计与应用 Q
  • Hive的数据类型

    Hive支持的数据类型如下 原生类型 TINYINT SMALLINT INT BIGINT BOOLEAN FLOAT DOUBLE STRING BINARY Hive 0 8 0以上才可用 TIMESTAMP Hive 0 8 0以上
  • 04-SpringBoot集成Nebula Graph

    SpringBoot集成Nebula 建议模块 在这里给大家推荐一种方式 每引入一种新的技术 建议新建一个模块 来适配这种技术 对外提供接口 在调用的地方应用就可以 不用搞的到处都是 防止如果后续替换这种技术 还要到处修改 这样的话 只需要
  • 工业大数据漫谈14:煤矿与非煤矿矿山如何应用大数据

    在工业领域 煤矿与非煤矿山属于相对特殊的行业 不是我们传统意义上的工厂模式 而是一种资源开采模式 矿山行业因为其生产的特殊性 因此在工业大数据的应用上 也呈现出了与制造型工业完全不同的特点 与制造型工业相比较 矿山行业最大的区别在于产品质量

随机推荐

  • JTest简单试用

    安装JTest 拷贝破解文件lic client jar到 Parasoft Test 9 4 plugins com parasoft xtest libs 9 4 0 20120412 Parasoft 创建附带案例 例如JPetSto
  • SpringBoot项目在IDEA制作Docker镜像并部署到阿里服务器运行

    SpringBoot项目如何在IDEA制作Docker镜像并部署到阿里服务器运行 首先IDEA安装Docker插件 没错就是它 这家伙挺好用的 安装后你会看到 这里就是配置你阿里云服务器地址的 服务器开放docker的2375端口还需要改配
  • Visual Studio error C2001:常量中有换行符

    问题描述 问题分析 经百度多方求助 发现该问题主要是由中文和文件编码格式引起的 存在中文时需要手动文件编码格式转换成UTF 8 这里使用Notepad 去转换 但是很奇怪的是我发现我的文件就是UTF 8的格式 仍然编译不过 我查询了其他没有
  • idea插件生成用例图、时序图、类图、活动图

    给大家推荐一个idea生成用例图 时序图等的神器 PlantUML 最近软件工程要结课了 结课报告要附加用例图 时序图 类图 活动图等 类图我首先就想到可以用idea生成 嘿嘿 可惜忘了怎么用 搜着搜着 突然发现 idea生成时序图 用例图
  • dfs、bfs时候染色算法和直接传一个visited两种方法

    以695 岛屿的最大面积为例 在图的遍历中 如果不加任何约束 DFS和BFS一定会遍历到重复节点 解决这个问题的一个方法就是在函数外定义一个visited set 然后每次遍历的时候把未在visited中的节点加入 在外面的递归终止条件 队
  • eclipse 项目没错却有红叉(解决办法)

    1 进入 eclipse 选择报错的项目 然后在工具栏选择Window 选择Show View 选择Problems 如下图 2 找到 General 下的 problems 双击 problems 就会在下面提示你项目报错的原因 根据错误
  • Go_异常处理

    Error 异常就是程序出现了不正常的情况 会导致程序非正常停止 而异常处理就是针对非正常停止的情况 给出异常时的处理方式 语法错误不算异常体系中 error是一个接口 作用是返回程序异常的信息 errors实现了error type er
  • QT踩坑第十一天(QT多线程)

    前言 QT在什么时候会用到多线程 所有的IO操作都要放到线程里面 1 IO操作QIODevice文件IO网络IO 套接字eg CAN Linux下也是套接字 串口等外设 因为他们不确定什么时候可以读完 2 耗时的算法eg 文件压缩 信号处理
  • Moviepy音视频开发:视频转gif动画或jpg图片exe图形化工具开发案例

    前往老猿Python博文目录 一 引言 老猿之所以学习和研究Moviepy的使用 是因为需要一个将视频转成动画的工具 当时在网上到处搜索查找免费使用工具 结果找了很多自称免费的工具 但转完GIF后都会在动画中打上对应工具的显著广告或Logo
  • 一周小结 - 拒绝拖延 现在做起

    很早就一直有用文字记录生活的想法 终于在这周开始了 不知道能写多久 拭目以待 一周的生活回顾下来 可能下面的一些让自己有些许感悟吧 感悟之一 更多的体验发现不一样的美好 感悟之二 有些事并没那么可怕 可怕的 可能是被头脑放大了N倍 感悟之三
  • 华为od机试 Python【扩散矩阵】

    描述 你手上有一个数字版的迷宫 里面只有两种格子 0 和 1 这里的1有个特性 它每秒会感染它上 下 左 右的0格子 一旦0被感染 它就变成1 给定一个迷宫大小以及两个起始感染点 你能算出这个迷宫被完全感染需要多少秒吗 输入 迷宫的行列数
  • mybatis-plus返回查询总记录数

    mybatis plus返回查询总记录数 mp框架提供了selectCount方法 来查询总记录数 需求 查找薪水大于3500 名字里有 小 的 员工的个数 sql实现 select count from t employee where
  • C++的基础学习

    C 主要学习 C与C 的不同 C 的特性及专业术语 C 程序的编译 一 C到C 的转换 C与C 的区别 C 是C的增强 区别 C 具有严格的数据类型检查 C 新增了命名空间 异常处理 面向对象编程 变量的权限和引用及函数的重载及运算符的重载
  • HTTP1.0和HTTP1.1和HTTP2.0的区别

    HTTP1 0和HTTP1 1和HTTP2 0的区别 1 HTTP1 0和HTTP1 1的区别 1 1 长连接 Persistent Connection HTTP1 1支持长连接和请求的流水线处理 在一个TCP连接上可以传送多个HTTP请
  • Mysql索引详解及优化(key和index区别)

    Mysql索引详解及优化 key和index区别 文章记录
  • Hyperledger Fabric配置文件解析

    目录 1 相关配置文件介绍 2 crypto config yaml 3 configtx yaml 3 1 Organizations组织配置部分 3 2 Capabilities通道能力配置部分 3 3 Application 应用通道
  • 浏览器内核css前缀大全

    1 css前缀为 moz 的浏览器 火狐浏览器 2 css前缀为 webkit 的浏览器 谷歌浏览器 苹果浏览器 Comodo Drangon 科摩多龙 搜狗高速浏览器 快快浏览器 枫树浏览器 云游浏览器 360极速浏览器 世界之窗极速版
  • RedmiBook 蓝屏 关机后出现 No Bootable Devices 问题的解决方法

    问题 关机后 重新开机出现 显示 没有可启用设备 解决方法一 该方法解决的不够彻底 暂时可以解决问题 正常开机 关机后 按f2 开机键 出现以下页面 选择 启动菜单 gt 启动模式 gt UEFI 启动 gt Enter 选择 退出菜单 g
  • 嵌入式毕业设计 树莓派寝室宿舍门禁刷卡系统 - 物联网 单片机 嵌入式

    文章目录 0 前言 1 前言 2 主要器件 3 实物效果 4 树莓派读取 RC522 RFID 标签 5 mg90s 控制原理 6 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕
  • 为什么使用非线性激活函数?常见的非线性激活函数及优缺点对比

    为何使用非线性激活函数 如上图的神经网络 在正向传播过程中 若使用线性激活函数 恒等激励函数 即令 则隐藏层的输出为 即 可以看到使用线性激活函数神经网络只是把输入线性组合再输出 所以当有很多隐藏层时 在隐藏层使用线性激活函数的训练效果和不