神经网络中激活函数的主要作用是提供网络的非线性建模能力,如不特别说明,激活函数一般而言是非线性函数。假设一个示例神经网络中仅包含线性卷积和全连接运算,那么该网络仅能够表达线性映射,即便增加网络的深度也依旧还是线性映射,难以有效建模实际环境中非线性分布的数据。加入(非线性)激活函数之后,深度神经网络才具备了分层的非线性映射学习能力。
本文代码链接:23种激活函数示例及可视化代码
目录
一、ELU
paper:Fast and Accurate Deep Network Learning by Exponential Linear Units (ELUs)
特点:
1、输出有负值,使得其输出的平均值为0;
2、右侧的正值特性,可以像relu一样缓解梯度消失的问题;
3、ELU在负值时是一个指数函数,具有软饱和特性,对噪声更鲁棒;
公式:
图像:
二、Hardshrink
公式:
图像:
三、Hardsigmoid
特点:
1、sigmoid的近似,计算速度很快;
2、x在[-3,3]范围内,梯度固定;
公式:
图像:
四、Hardtanh
特点:
1、tanh的近似函数;
2、x在[-1,1]范围内梯度值固定;
公式:
图像:
五、Hardswish
特点:
1、swish激活函数的近似函数,简化计算;
2、在更深的层中使用才能体现效果;
公式:
图像:
六、LeakyReLU
特点:
1、对于ReLU, 当输入为负值时,其输出为0,在反向传播时梯度为0,对应的神经元参数将无法更新,如果所有的输入都是负值,那么网络将无法学习,LeakyReLU可以解决该问题;
公式:
图像(绘图时为了方便看出负值,系数取0.1,一般LeakyReLU负值斜率为0.01):
七、LogSigmoid
公式:
图像:
八、PReLU
公式:
图像:
九、ReLU
特点:
1、当输入大于0时,梯度为1,能够有效避免链式求导法则梯度相乘引起的梯度消失和梯度爆炸;
2、计算成本低;
3、当输入都小于0时,输出全部为0,梯度为0,神经元将全部“死亡”,参数无法更新。
公式:
图像:
十、ReLU6
公式:
图像:
十一、RReLU
paper:Empirical Evaluation of Rectified Activations in Convolutional Network
特点:
1、在训练阶段,负数部分的斜率是一定范围内随机抽样的;
2、推理时,负数部分的斜率固定。
公式:
图像:
十二、SELU
ELU加上了一个scale。
公式:
图像:
十三、CELU
ELU当输入小于0时,指数上添加缩放因子。
公式:
图像:
十四、GELU
公式(是高斯分布的累计分布密度函数):
公式近似:
图像:
十五、Sigmoid
特点:
1、输出范围(-1,1),是饱和激活函数;
2、梯度最大为0.25(x=0),可能发生梯度消失;
3、常用于输出2分类概率
公式:
图像:
十六、SiLU
公式:
图像:
十七、Mish
paper:Mish: A Self Regularized Non-Monotonic Activation Function
公式(Softplus见下一个激活函数):
图像:
十八、Softplus
公式:
图像:
十九、Softshrink
和Hardshrink区别在于是否连续。
公式:
图像:
二十、Softsign
公式:
图像:
二十一、Tanh
公式:
图像:
二十二、Tanhshrink
公式:
图像:
二十三、Threshold
公式:
图像(threshold=1, value=3):
参考
2、激活函数(relu,prelu,elu,+BN)对比on cifar10
3、ELU激活函数
4、 本文代码链接:23种激活函数示例及可视化代码