神经网络激活函数的介绍
来源:互联网 发布:淘宝店运营方案 编辑:程序博客网 时间:2024/04/30 11:14
1、Sigmoid
Sigmoid函数在以往的神经网络里是很常用的,但在深度学习里用的并不那么多,它主要有以下不足:
a、容易过饱和并且造成梯度消失。从图中可以看出当Sigmoid函数的值为0或1时,而我们知道sigmoid函数的导数等于其本身乘以1-其本身,那么就导致梯度为0的情况出现,考虑到梯度传播时需要与本地的梯度相乘,那么梯度通过该门函数后几乎没有信号流出。因此,在初始化梯度时一定要很小心,否则很容易使大部分的神经元过饱和。
b、Sigmoid函数不是以0为中心的。假设数据全部为正,那么W的梯度一定是全正或者全负的,这样优化W时就会有之子型的线路,寻找最优W可能会很费时。但这个问题不如a问题严重
c、Sigmoid函数包含exp函数,计算exp函数的开销是很大的
2、tanh
tanh函数是对sigmoid函数的改进,他的特性如下:
a、依然有sigmoid函数过饱和的潜在可能,可能会造成梯度消失
b、是以原点为中心的,这是其一个优势
c、依然有指数运算
3、Relu函数
全称是 The Rectified Linear Unit,其函数表达式为f(x) = max(0, x)
a、相比于sigmoid和tanh,计算速度大大增加主要得益于其分段线性的特性
b、不是以原点为中心,和sigmoid函数一样有很大缺点
c、没有指数运算、收敛速度快
d、注意当位于负半轴时,会使网络处于‘dead’的状态(在训练过程中不会再激活)。设置合适的学习速率可以避免这个问题。工程中在初始化参数时,往往设置一个很小的bias比如0.01
4、Leaky Relu
既然Relu可能会使神经元失活,那么一种改进方法是,将Relu的负半轴加一个很小的斜率。
5、Maxout
这种方法是对Relu和Leaky Relu的概括,其表达为
- 值得注意的是很少在实际中将这些激活函数综合使用
- 在工程使用中,多实用Relu函数,但是需要小心调整学习速率,并且要监控失活神经元的比例。同时,可以尝试Relu和Maxout。但是不要用sigmoid,可以用tanh,但是不要期望效果会比Relu或Maxout好
- 已经有定理证明,单隐含层的神经网络可以拟合任意曲线。既然这样,为何还要加深神经网络的层数呢?主要原因在于实际中神经网络之所以能够取得不错的效果,就是因为神经网络能够利用平滑的曲线拟合数据的分布,而且很容易去优化。但是,说深层的神经网络比浅层的神经网络效果更好,只是一种经验的观察。尽管他们的表征能力可能相当。
- 但是,在实际中3层隐含单元的网络可能要好于2层,但是4、5、6层的效果不一定会更好。但在卷积神经网络中是一个例外。深层网络可能会对效果有很大的提升。
- 隐含层的个数太多的话可能会引起过拟合,但是通常不会因为此来减少隐含层的个数来防止过拟合,通常的做法是使用L2 Regulation
- 通常来说,较小的神经网络会有较少的局部最优解,但是这些局部最优解是很差的(相对于最优解来说);但较大的神经网络会有非常多的局部最优解,这些局部最优解相对最优解来说差别更小,即使陷入局部最优解,那么性能也不会差太远。
- 神经网络激活函数的介绍
- 神经网络的激活函数
- 神经网络五:常用的激活函数
- 神经网络中激活函数的作用
- 神经网络五:常用的激活函数
- 神经网络中常见的激活函数
- 神经网络的激活函数sigmoid RELU
- 浅谈神经网络中激活函数的设计
- 深度学习神经网络激活函数的优点
- 神经网络中激活函数的真正意义
- 神经网络激活函数的作用是什么?
- 神经网络中激活函数稀疏激活性的重要性
- 神经网络激活函数
- 神经网络-激活函数
- 神经网络中的激活函数
- 神经网络激活函数链接
- 神经网络激活函数比较
- 神经网络之激活函数
- block块对象
- String类详解
- [kuangbin带你飞]专题一 简单搜索 F
- [构造 哈密顿路径] SRM 704 div1 HamiltonianConstruction
- EventBus
- 神经网络激活函数的介绍
- poj
- PAT 乙级1005
- 路由器逆向分析------在QEMU MIPS虚拟机上运行MIPS程序(ssh方式)
- Hololens中使用holotoolkit自带的按钮
- Java 多线程3:Lock 接口(接口方法分析,ReentrantLock,ReadWriteLock)
- 以太网芯片MAC和PHY
- IntelliJ IDEA 或Android Studio中提示:Project SDK is not defined
- 第八章 异常