4种不同的激活函数及其应用特点

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

上一篇文章末尾有对激活函数做了简单的介绍,本文将对激活函数做一个重要讲解,在后面的网络中将经常用到激活函数,它的作用不容小觑。

1. sigmoid函数

数学定义如下

s1.jpg

x取值范围在负无穷到正无穷之间,而y的取值范围在(0,1)内。该函数在区间内取值连续,变化缓慢。如下图所示

s2.png

上一篇博客中举例用到的线性函数y=wx+b,此处仍然以该公式为例子进行说明。假设一个神经元用sigmoid函数作为激活函数,那么s(wx+b)函数,带入上面的公式计算可知,当wx+b接近于正无穷大时,函数整体趋近于1,相反,则函数整体趋近于0,由于sigmoid函数是连续的,所以这个神经元中输入得到的输出也是连续变化的,只不过非常缓慢。

2. tanh函数

数学定义如下

t1.png

从函数的数学公式不难计算,tanh的取值范围为(-1,1),它的变化范围相对于sigmoid相对更大一些,在此处只涉及相关理论,可能体会不到其间更大的差异性,当体现在实际的网络中时区别很大,后面的博文中会慢慢讲解,现在只需要了解一下每个函数的形式以及取值即可,留个印象。函数的变化公式如下

t2.jpg

3. ReLu函数

数学定义如下

f(x)=max(0,x)

函数定义非常简洁,明了,在x>0的部分,f(x)=x,是最简单的线性函数,在x<0的部分,f(x)=0.relu函数的出现,对于解决sigmoid函数带来的问题有一些非常明显的效果,但是同样带来了梯度爆炸的新问题,这个在后面会详细讲述。对于函数的图像如下

r1.PNG

4. LeakyReLu函数

为了解决有ReLU带来的梯度爆炸问题,LeakyReLU被提出,它的数学定义如下

l1.PNG

相对于ReLU,在小于零的部分,没有直接赋值为0,而是加了一个缓慢变化的系数,让其始终不为0.函数的图像如下所示。

l2.PNG

总结

前面介绍了四个激活函数,那么激活函数的作用是什么,应用位置又是什么,这一点本博文一定要说清楚。 首先,在一个梯度下降的算法中,无论是用sigmoid还是ReLU,都是为了让算法通过不断学习逐渐的减少错误,是一个缓慢的过程。而激活函数所用的位置就是在神经元的后面部分,可以由下图直观的看到激活函数的作用位置。

rest.PNG

猜你喜欢

转载自juejin.im/post/7086085063653359623