文档章节

深度学习——激活函数Sigmoid/Tanh/ReLU

ericSM
 ericSM
发布于 04/11 20:58
字数 936
阅读 26
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

激活函数(Activation Function)的特点:

  • 非线性: 当激活函数是线性的时候,一个两层的神经网络就可以逼近基本上所有的函数了。
  • 可微: 当优化方法是基于梯度的时候,这个性质是必须的。
  • 单调性: 当激活函数是单调的时候,单层网络能够保证是凸函数。
  • f(x)≈x: 当激活函数满足这个性质的时候,如果参数的初始化是random的很小的值,那么神经网络的训练将会很高效。
  • 输出值范围: 当激活函数输出值是 有限 的时候,基于梯度的优化方法会更加 稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是 无限 的时候,模型的训练会更加高效,不过在这种情况小,一般需要更小的学习率。

激活函数 Sigmoid/Tanh/ReLU:

Sigmoid 的数学形式:

它能够把输入的连续实值“压缩”到0和1之间。特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1. sigmoid 函数曾经被使用的很多,不过近年来,用它的人越来越少了。主要是因为它的一些 缺点:

  • 当输入非常大或者非常小的时候,这些神经元的梯度是接近于0的,从图中可以看出梯度的趋势。
  • Sigmoid 的 输出不是0均值,这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。

Tanh的数学形式:

Tanh是Sigmoid的变形,与 sigmoid 不同的是,tanh 是0均值的。因此,实际应用中,tanh 会比 sigmoid 更好。

ReLU的数学形式

很显然,从图左可以看出,输入信号<0时,输出都是0,>0 的情况下,输出等于输入。 二维情况下,使用ReLU之后的效果如下:

ReLU 的优点

使用 ReLU 得到的SGD的收敛速度会比 sigmoid/tanh 快很多(看右图)。相比于 sigmoid/tanh,ReLU 只需要一个阈值就可以得到激活值,而不用去算一大堆复杂的运算。

ReLU 的缺点: 训练的时候很容易就”die”了。

如果这个情况发生了,那么这个神经元的梯度就永远都会是0。实际操作中,如果你的learning rate 很大,那么很有可能你网络中的40%的神经元都”dead”了。 如果你设置了一个合适的较小的learning rate,这个问题发生的可能性也不大。

ReLU变体(Leaky-ReLU/P-ReLU/R-ReLU): Leaky ReLU: Leaky Relu是用来解决ReLU这个 “dead” 的问题的。与 ReLU 不同的是:

f(x)=αx,(x<0)
f(x)=x,(x>=0)

这里的 α 是一个很小的常数。这样,即修正了数据分布,又保留了一些负轴的值,使得负轴信息不会全部丢失。

选择激活函数的建议:

一般情况下,使用ReLU会比较好

1、使用 ReLU,就要注意设置 learning rate,不要让网络训练过程中出现很多 “dead” 神经元;
2、如果“dead”无法解决,可以尝试 Leaky ReLU、PReLU 、RReLU等Relu变体来替代ReLU;
3、不建议使用 sigmoid,如果一定要使用,也可以用 tanh来替代。

© 著作权归作者所有

ericSM
粉丝 18
博文 142
码字总数 154379
作品 0
南京
项目经理
私信 提问
【DL笔记】神经网络中的激活(Activation)函数及其对比

神经网络的每一层基本都是在一个线性运算后面来一个非线性激活函数(Activation function),再把值传给下一层的。激活函数有多种,这篇文章主要就是介绍各种激活函数和它们的对比。 为啥要有...

Stack_empty
2018/08/02
0
0
开学季,你要的激活函数都在这里

摘要: 激活函数就是神经网络输出端的一个节点,来连接两个神经网络。激活函数都有哪些类型?让我们继续阅读。 什么是激活函数? 激活函数就是神经网络输出端的一个节点,来连接两个神经网络...

阿里云云栖社区
2018/09/12
0
0
深度学习笔记总结(1) 神经网络和深度学习(Neural Networks and Deep Learning)

针对深度学习基础部分,有必要恶补一些吴恩达的深度学习课程,其实晚上有很多总结和笔记,本系列文章是针对黄海广大佬整理的《深度学习课程笔记(V5.47)》的总结和自己的理解,以便加深印象和...

致Great
04/12
0
0
The Activation Function in Deep Learning 浅谈深度学习中的激活函数

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

rgvb178
2016/11/11
0
0
吴恩达《神经网络与深度学习》精炼笔记(2)-- 浅层神经网络

上节课我们主要介绍了向量化、矩阵计算的方法和python编程的相关技巧。并以逻辑回归为例,将其算法流程包括梯度下降转换为向量化的形式,从而大大提高了程序运算速度。本节课我们将从浅层神经...

dujiahaogod
2018/04/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

阿里云视频云正式支持AV1编码格式 为视频编码服务降本提效

今天我们要说的 AV1 可不是我们平时说的 .AVI 文件格式,它是由AOM(Alliance for Open Media,开放媒体联盟)制定的一个开源、免版权费的视频编码格式,可以解决H.265昂贵的专利费用和复杂的...

一肥仔
15分钟前
8
0
软件缺陷静态分析 CodeSonar 5.2 新版发布

对于使用C和C++构建安全关键软件的开发团队而言,CodeSonar一直是首选的静态分析解决方案。在近期发行的版本中,CodeSonar通过使用开放标准来扩展其语言覆盖范围,并增加了对Java、C#、Obj...

旋极科技
16分钟前
5
0
数据迁移

1. insert into values 或 insert into select批量插入时,都满足事务的原子性与一致性,但要注意insert into select的加锁问题。 2. replace into与insert into on duplicate key update都可...

qiang123
23分钟前
6
0
Linux装Windows系统后还不会激活?3招教你搞定

     相信大家已经发现荣耀MagicBook科技尝鲜版有多“香”了,不但可以轻松的将Linux系统装回Windows系统,还足足省下了300大洋!但是装回系统就万事大吉了吗?NoNoNo,我们还需要去激活...

梅丽莎好
25分钟前
6
0
Tomcat8源码分析-请求处理过程

上一篇:Tomcat8源码分析-启动流程-start方法 此篇主要讲Tomcat8从接收请求到处理请求的时序图画出来,并用文字描述一下主要流程 时序图 说明 文字描述流程之前先提示如下两点: 1.Acceptor...

特拉仔
27分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部