总结激活函数
从各个博客上扒来然后总结的
sigmoid激活函数
函数图像
sigmoid导数
导数图像
sigmoid的缺点:
1)输出范围在0~1之间,均值为0.5需要做数据偏移,不方便下一层学习
2)当x很大或很小时,存在导数很小的情况,另外神经网络的主要训练方法是BP算法(反向传播),其基础是导数的链式法则,即多个导数的乘积,而sigmoid的导数最大值为0.25,多个小于等于0.25的数值相乘,运算结果很小,随着网络的加深,梯度反向传播到浅层网络时,基本没法引起参数的扰动,造成梯度消失。
tanh 激活函数
函数图像
tanh导数
导数图像
tanh通常要优于sigmoid,因为tanh的输出在(-1,1)之间,均值为0,更方便下一层网络的学习,但是如果做二分类,输出层使用sigmoid更好,因为它可以算出某一类的概率。
tanh和sigmoid都有一个缺点,在深层网络中容易出现梯度消失,造成学习无法进行。
Relu(x)激活函数
relu(x)的导数
优点
1)反向传播避免了梯度消失
2)Relu使一部分神经元输出为0,造成了网络的稀疏性(减少了参数间的相互依存关系,缓解了过拟合问题的发生)
3)求导更简单
缺点
1)过于宽广的接受域,在接受叫大数据时输出不稳定(改进有Relu6)
2)输出数据的负数部分,Relu把其置为0,梯度也为0,那么训练过程中负数部分就不会进行参数更新。(改进有leakyRelu)