一文搞懂常见的激活函数

目录

为什么要用激活函数

常见的激活函数

如何选择激活函数


一、为什么要用激活函数

设想一下,如果我们不使用激活函数的话,那么模型为y=w^{T}*X+b,我们来简单的计算一下,如上图所示:

Z^{[1]}=W^{[1]}\times X+b^{[1]}

A^{[1]}=g^{[1]}\left (Z ^{[1]} \right )

Z^{[2]}=W^{[2]}\times A^{[1]}+b^{[2]}

A^{[2]}=g^{[2]}\left (Z ^{[2]} \right )

由于没有激活函数,那么也就是说g\left ( z \right )=z,那么则有A^{[1]}=g^{[1]}\left (Z ^{[1]} \right )=Z ^{[1]},则:

Z^{[2]}=W^{[2]}\times A^{[1]}+b^{[2]}

       =W^{[2]}\times Z^{[1]}+b^{[2]}

       =W^{[2]}\times \left ( W^{[1]}\times X +b^{[1]}\right )+b^{[2]}

       =W^{[2]} W^{[1]}\times X +b^{[1]}+b^{[2]}

A^{[2]}=g^{[2]}\left (Z ^{[2]} \right )=Z ^{[2]}

可以看出不管经过多少次运算,模型仍然为线性模型,无法处理复杂的分类问题,显然这是不可取的。

举个例子:

如果我们遇到问题是上图这种情况,那么没有损失函数是完全OK的,因为我们使用一个线性模型就能够很好的进行分类。

但是如果上图中蓝色和黄色的点混在一起的话,这个线性模型还能起到这么好的作用吗?

答案是否定的,所以我们需要激活函数来使线性模型变成非线性的。

二、常见的激活函数

Sigmoid函数:

特点:能够把线性模型求得的值压缩到0~1之间。

缺点:

         1、梯度消失:从图像中可以看出,当x值非常大时,sigmoid激活函数的梯度为0,这样会造成的后果就是会产生梯度消失,而且它的导数值最大为0.25,如果权值w也是一个小于1的数,那么通过反向传播也是会产生梯度消失。

         2、计算复杂:公式中有幂运算,对于深层次的神经网络,计算机运算费时。

         3、不是零均值:sigmoid函数的输出不是零均值,会导致参数收敛速度变慢。想了解原理,传送门如下:深度学习图像预处理中为什么使用零均值化(zero-mean)

tanh函数:

tanh解决了Sigmoid函数的不是零均值输出问题,但是梯度消失的问题和计算复杂的问题仍然存在。

Relu函数:

优点:

           1、函数简单,运算速度快

           2、在正区间不会产生梯度消失

           3、比sigmoid和tanh收敛速度快

缺点:

           1、relu函数的输出值也不是零均值。

           2、relu函数在小于0的区域的得到的值为0,这样会导致部分神经元失活,部分参数无法更新,原因有:

                 一、参数初始化化的时候出现问题,导致计算出来的值为负数,这样经过Relu激活函数后值为0。

                 二、在反向传播梯度更新的时候,w=w-\alpha dw,学习率α设的太高,导致更新后的w为负值。

                虽然有上述的缺点,但是Relu激活函数仍是目前使用最广泛的激活函数。

Leaky ReLU函数

 

由图可知,Leaky ReLU函数在x<0时使得y值不为0,这样就解决了Relu激活函数的第二个缺点,而且还有这Relu函数的所有优点。但是在实际中还是使用Relu多一点点。

三、如何选择激活函数

用Relu就完事了

如果您觉得文章对你有帮助,点个关注不迷路~

以上就是本文的全部内容,获取深度学习资料以及吴恩达老师课程(中文字幕),扫描下方公众号,回复“资料”两字即可获取,祝您学习愉快。

猜你喜欢

转载自blog.csdn.net/qq_38230338/article/details/107718378
今日推荐