目录
1、什么是激活函数?
2、为什么要在卷积层后面添加激活函数?
3、激活函数的性质
3.1 sigmoid 激活函数
3.2 tanh 激活函数
3.3 ReLU 激活函数
4、如何选择激活函数?
5、神经网络中的隐藏层是什么?
神经网络中的一个个神经元实质上是一个线性变换和非线性的激活函数的操作。
一个神经元会同时接收多个信号,然后将这些信号乘以一定权重求和,再用函数处理后再输出新的信号。对神经元的输入进行处理,以获得输出的函数称为激活函数。
如果只有线性变换,那无论多少层神经元,都能简化层一层神经元,那神经网络只是简单多元线性回归而已,不能拟合更加复杂的函数。举个例子,如果我们只有线性操作,那么我们的神经网络永远无法拟合圆等复杂的曲线图形,永远只能表示超平面,无法表示曲面等。
激活函数的目的:将神经网络非线性化,即提升神经网络的拟合能力,能拟合更复杂的函数。
从定义来看,几乎所有的连续可导函数都可以用作激活函数。但目前常见的多是分段线性和具有指数形状的非线性函数。
在实际的应用中,我们需要先了解以下概念:
饱和
当一个激活函数 h(x) 满足 limn→+∞h′(x)=0 时,我们称之为右饱和。
当一个激活函数 h(x) 满足 limn→−∞h′(x)=0 时,我们称之为左饱和。
当一个激活函数,既满足左饱和又满足又饱和时,我们称之为饱和。
硬饱和与软饱和
对任意的x,如果存在常数c,当 x > c 时恒有 h′(x)=0 则称其为右硬饱和。
对任意的x,如果存在常数c,当 x < c 时恒有 h′(x)=0 则称其为左硬饱和。
若既满足左硬饱和,又满足右硬饱和,则称这种激活函数为硬饱和。
如果只有在极限状态下偏导数等于0的函数,称之为软饱和。
sigmoid是平滑的阶梯函数,可导。sigmoid可以将任何值转换成0~1概率,用于二分类。
公式:
导数:
导数2:
sigmoid 在定义域内处处可导,根据上述对饱和的定义,其可被定义为软饱和激活函数。
Sigmoid 的软饱和性,使得深度神经网络在二三十年里一直难以有效的训练,是阻碍神经网络发展的重要原因。具体来说,由于在后向传递过程中,sigmoid向下传导的梯度包含了一个f’(x) 因子(sigmoid关于输入的导数),因此一旦输入落入饱和区,f’(x) 就会变得接近于0,导致了向底层传递的梯度也变得非常小。此时,网络参数很难得到有效训练。这种现象被称为梯度消失。一般来说,sigmoid 网络在 5 层之内就会产生梯度消失现象。
这里给出一个关于梯度消失的通俗解释:
Sigmoid 函数能将负无穷到正无穷的数映射到0和1之间,并且对这个函数求导的结果是 f′(x)=f(x)(1−f(x))。因此两个0到1之间的数相乘,得到的结果就会变得很小了。神经网络的反向传播是逐层对函数偏导相乘,因此当神经网络层数非常深的时候,最后一层产生的偏差就因为乘了很多的小于1的数而越来越小,最终就会变为0,从而导致层数比较浅的权重没有更新。
由于sigmoid的导数值小于1/4,x变化的速率要快于y变化的速率,随着层数的增加,连续不断执行sigmoid函数,就会导致,前面更新较大的幅度,后面更新较小的幅度,因此,网络在学习过程中,更倾向于更新后面(靠近输出层)的参数,而不是前面的参数(靠近输入层)。
Sigmoid 函数的优缺点:
优点:
缺点:
公式:
导数:
同样的,Tanh 激活函数也具有软饱和性。Tanh 网络的收敛速度要比 Sigmoid 快。因为 Tanh 的输出均值比 Sigmoid 更接近 0,SGD 会更接近 natural gradient(一种二次优化技术),从而降低所需的迭代次数。
Tanh 激活函数的优缺点:
优点:
缺点:
还是没有改变Sigmoid函数的最大问题——由于饱和性产生的梯度消失。
公式:
可见,ReLU 在x<0 时硬饱和。由于 x>0时导数为 1,所以,ReLU 能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。但随着训练的推进,部分输入会落入硬饱和区,导致对应权重无法更新。这种现象被称为“神经元死亡”。
ReLU 函数的优缺点:
优点:
缺点:
随着训练的进行,可能会出现神经元死亡,权重无法更新的情况。如果发生这种情况,那么流经神经元的梯度从这一点开始将永远是0。也就是说,ReLU神经元在训练中不可逆地死亡了。
通常,卷积神经网络除了输入和输出层之外还有四个基本的神经元层,在三层神经网络中,这基层被称为隐藏层
卷积层(Convolution)
激活层(Activation)
池化层(Pooling)
完全连接层(Fully connected)
参考资料:
激活函数sigmoid、tanh、relu - 百度文库
机器学习——sigmoid、tanh、relu等激活函数总结 - 百度文库
深度学习入门与Pytorch|3.4 神经网络中加入非线性变换 - 知乎
https://www.csdn.net/tags/OtDaggysMDI4NzItYmxvZwO0O0OO0O0O.html
常用的激活函数对比_打工人小飞的博客-CSDN博客_激活函数对比