深度学习笔记:激活函数常见问题总结
Posted AI 菌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习笔记:激活函数常见问题总结相关的知识,希望对你有一定的参考价值。
理论系列:
实战系列:
1、为什么需要激活函数
深度学习中,通常使用的激活函数是非线性的,比如Sigmoid、Tanh、ReLU等。引入激活函数,主要有以下几个作用:
- 可以引入非线性因素,对于理解复杂和非线性的函数具有重要作用。如果不使用激活函数,则输出信号只是一个简单的线性函数,神经网络就无法学习和模拟其他复杂类型的数据,比如图像、视频、语音等;
- 使用非线性激活函数,可以使网络更加强大,学习到复杂的任务,能够在输入和输出之间生成复杂的非线性映射;
- 可以把当前特征空间通过一定的线性映射转换到另一个空间。
2、激活函数有哪些性质
激活函数一般具有以下性质:
- 非线性:当激活函数是非线性的,一个两层的神经网络就基本上可以逼近所有的函数。
- 可微性:处处可导,可以继续反向传播训练
- 单调性:当激活函数是单调的时候,单层网络能够保证是凸函数
- f’(x)=x:当满足此条件,如果参数的初始化是随机的较小值,网络的训练将会很高效
- 当输出值有限制时:比如Sigmoid、Tanh,基于梯度的优化方法会更加稳定
- 当输出值无限制时:比如ReLU、Leaky ReLU、Softplus等,模型的训练会更加高效,不过在这种情况下,一般需要更小的学习率
3、如何选择激活函数
选择一个合适的激活函数需要考虑很多因素。通常的做法是,如果不确定哪一个激活函数效果会更好,可以逐一尝试,然后在验证集或测试集上进行评价。
以下是常见的选择建议:
- 对于二分类问题(输出值是0、1),则输出层选择sigmoid激活函数,其他的所有层选择relu
- 对于多分类问题,一般输出层选择softmax激活函数
- Tanh:它非常优秀,几乎适合所有场合
- ReLU:最常用的激活函数,如果不确定用哪个激活函数,就先使用ReLU或者Leaky ReLU,再尝试其他激活函数
4、ReLU激活函数的优缺点
relu函数的优点如下:
- 训练更快:使用ReLU或者Leaky ReLU的神经网络通常会比使用sigmoid或tanh的神经网络学习得更快
- 避免了梯度弥散:当输入无穷大或无穷小时,sigmoid或tanh的梯度接近0,这会造成梯度弥散现象。而ReLU或者Leaky ReLU在输入大于0的部分,导数均为一个常数,避免了梯度弥散。
- 单侧抑制,稀疏性:当输入小于0时,ReLU的梯度为0,神经元不会训练。模拟神经元的激活率是很低的这一特性,对输入信号的少部分进行选择性相应,正是这样的稀疏性提高了网络的性能。
relu函数的缺点如下:
- 在输入小于0的时候,即使有很大的梯度传播过来也会戛然而止。
5、为什么tanh收敛速度比sigmoid快
这与激活函数的求导有关:
t a n h ′ ( x ) = 1 − t a n h ( x ) 2 tanh'(x)=1-tanh(x)^2 tanh′(x)=1−tanh(x)2,导数范围在(0,1)
s i g m o i d ′ ( x ) = s ( x ) ( 1 − s ( x ) ) sigmoid '(x)=s(x)(1-s(x)) sigmoid′(x)=s(x)(1−s(x)),导数范围在(0,1/4)
由此可见,tanh(x)梯度消失的问题比sigmoid(x)轻,所以tanh收敛速度比较快。
最好的关系是互相成就,各位的「三连」就是【AI 菌】创作的最大动力,我们下期见!
以上是关于深度学习笔记:激活函数常见问题总结的主要内容,如果未能解决你的问题,请参考以下文章