激活函数的目的就是为网络提供非线性化

梯度消失:梯度为0, 无法反向传播,导致参数得不到更新
梯度饱和:随着数据的变化,梯度没有明显变化
梯度爆炸:梯度越来越大,无法收敛

梯度消失问题:
1、反向传播链路过长,累积后逐渐减小
2、数据进入梯度饱和区

如何解决:
1、选正确激活函数,relu, silu
2、BN 归一化数据
3、 resnet 较短反向传播路径
4、LSTM 记忆网络

1、Sigmoid

函数和导数:


特点落入两端的数据导数趋于0,造成梯度消失,用在深度网络难以收敛。用 BN 批量归一化可以优化此问题。

2、Tanh

函数和导数:


特点和sigmoid 差不多,就是映射区间不同而已。

3、ReLU



特点简单粗暴,解决梯度消失问题,响应区间导数为1。小于0 的神经元被抑制,造成网络稀疏,抑制过拟合,利于网络学习有效信息,加快收敛速度。

4、Leaky_ReLU



特点:** 对relu的改进,小于0也有微小激活,避免梯度锯齿问题。**

5、SiLU(swish)



特点:** 对relu的改进,在0附近进行平滑,缺点:引入指数运算,增加计算量。**

6、Mish

特点:** 和silu 差不多。**