常用激活函数介绍

为什么在神经网络中需要用到激活函数呢,而且是用非线性激活函数呢,原因很简单,假如我们用的是线性激活函数的话,假设在多层神经网络,为某个神经元的计算结果,使用线性激活函数后的结果


则相当于使用了激活函数后仍然为一个线性组合,相当于多次组合,毫无意义,则多层神经网络的最终结果相对于最开始的输入而言也只是做了多次线性组合和用一层线性组合是一个意思,所以为了让多层神经网络达到能拟合任意函数的目的,我们的激活函数必须使用非线性的。常用的非线性激活函数如下:

1、Sigmoid函数

  

Sigmoid函数是一个非常好的归一化函数,在传统的机器学习中Sigmoid激活函数用的非常多,但是在现在的机器学习中稍微用的少了些,主要是有了一些更好的激活函数的兴起如Relu、Tanh函数等。Sigmoid函数之所以用的非常之多主要是它有一个非常优良的性质,它的导数非常容易求解.

  


则f(x)的导数为x*(1-x),自己可以推一下,非常简单。

2、Relu函数

常用激活函数介绍_第1张图片

既然有了Sigmoid函数以后我们为什么还需要其他的激活函数呢,那是因为Sigmoid函数存在一个致命的弊端,容易出现梯度消失问题,什么是梯度消失问题呢,就是在利用反向传播算法进行参数更新的时候,我们需要对激活函数进行一个求导的操作,但当X比较大的时候Sigmoid求导的结果将接近于0,这样一来我们的参数在使用梯度下降算法更新时将失效,所以为了解决这个问题,大家才开始使用除Sigmoid以外的其他的激活函数,如:Relu则不存在梯度消失的问题。将会大大提高我们的训练效率。

3、Tanh函数

常用激活函数介绍_第2张图片

tanh函数相对于前两个来说用的稍微少一点,现在在深度学习中用的最多的就是Relu函数,因为tanh函数也存在梯度消失问题,但它也有一些优良的性质。与Sigmoid不同的是,tanh是0均值的,因此在实际应用中会比Sigmoid效果好,因为Sigmoid的优点都保留了,消除了一些缺点,


激活函数非常之多,上面三种是我们最常用的,也是最基本的,还有许多的激活函数基本都是上面三种的变体。




你可能感兴趣的:(常用激活函数介绍)