目录
一、为什么要用激活函数
设想一下,如果我们不使用激活函数的话,那么模型为,我们来简单的计算一下,如上图所示:
由于没有激活函数,那么也就是说,那么则有,则:
可以看出不管经过多少次运算,模型仍然为线性模型,无法处理复杂的分类问题,显然这是不可取的。
举个例子:
如果我们遇到问题是上图这种情况,那么没有损失函数是完全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。
二、在反向传播梯度更新的时候,,学习率α设的太高,导致更新后的为负值。
虽然有上述的缺点,但是Relu激活函数仍是目前使用最广泛的激活函数。
Leaky ReLU函数
由图可知,Leaky ReLU函数在x<0时使得y值不为0,这样就解决了Relu激活函数的第二个缺点,而且还有这Relu函数的所有优点。但是在实际中还是使用Relu多一点点。
三、如何选择激活函数
用Relu就完事了
如果您觉得文章对你有帮助,点个关注不迷路~
以上就是本文的全部内容,获取深度学习资料以及吴恩达老师课程(中文字幕),扫描下方公众号,回复“资料”两字即可获取,祝您学习愉快。