激活函数的目的就是为网络提供非线性化
梯度消失:梯度为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 差不多。**