神经网络中非线性激活函数相关解析
来源:互联网 发布:dnf安图恩组队网络冲突 编辑:程序博客网 时间:2024/05/22 04:33
引入非线性激活函数的作用
引入非线性激活函数的主要目的是增加神经网络的非线性性。因为如果没有非线性激活函数的话,每一层输出都是上层输入的线性函数,因此,无论神经网络有多少层,得到的输出都是线性函数,这就是原始的感知机模型,这种线性性不利于发挥神经网络的优势。
非线性激活函数的类别
非线性函数在历史的长河中有多种,主要讲以下两类:
有界激活函数
有界激活函数用得相对较多的是sigmoid函数和tanh(双曲正切函数),他们都带有同步正则化的效果,将激活函数的输出限定在[-1,1]之间,同时可以满足非线性性特征。
无上界激活函数
用得比较多的无上界激活函数是ReLU, 是随着AlexNet火起来的,这一函数当输入为非负时,输出不变,当输入为负数时,输出为0。
当前使用较多的是ReLU函数及其变体(如 PReLU, random ReLU)。
广泛使用ReLU函数的原因
计算量较小
由于上述提到的有界激活函数一方面反向传播的时候计算量都较大,而ReLu函数在大于零以及小于零的部分具有很好的线性性质,便于求导;另外一方面ReLU函数结构简单,也有利于做正向的inference。因而无论是训练过程还是测试过程计算量得到了大大降低。
不易出现梯度丢失问题
当网络层数较深时,上述两种有界激活函数在接近饱和区时,变化减缓,导数趋近于0,这种情况导致了梯度(信息)的丢失,不利于反向传播。而由于ReLu函数的正区间不饱和,因此减缓了梯度丢失问题的发生(我们更加关心正向样本)。
缓解过拟合现象的发生
由于ReLU函数使一部分神经元的输出为零,这样就导致了网络的稀疏化,减轻了参数之间的依赖关系,缓解了过拟合问题的产生。
前沿发展
当前基于ReLU函数有着许多使用性的改进,在训练速度以及准确率上得到了提升。入上述的PReLU, random ReLU等。后续会继续对ReLU函数的变种及其效果进行分析。
- 神经网络中非线性激活函数相关解析
- 【神经网络】RELU 激活函数及其他相关的函数
- 神经网络激活函数
- 神经网络-激活函数
- 神经网络中的激活函数
- 神经网络激活函数链接
- 神经网络激活函数比较
- 神经网络之激活函数
- 神经网络-激活函数-Activation
- 神经网络中的激活函数
- 神经网络-激活函数对比
- 神经网络中的激活函数
- 神经网络中的激活函数
- 神经网络各个激活函数
- 20171115-神经网络激活函数
- 神经网络的激活函数
- 神经网络之激活函数面面观
- 人工神经网络之激活函数
- ARM汇编
- PyCharm 服务器激活
- 冒泡排序,快排
- 动态代理 AOP
- C/C++_log2000_一种利用编码特点求最大公约数的方法
- 神经网络中非线性激活函数相关解析
- 傅里叶光学基础总结
- LD.exe undefined reference to XXX 错误的解决方法
- java 关键字this的用法详解
- Pythonday1
- GPIO模拟I2C学习任务——实战
- Atitit 信用管理概论 attilax学习心得
- Atitit 管理学心里学的50大定律
- 数据库事务管理