4.0 - 激活函数

1. 激活函数背景

1.1 激活函数作用

  全连接层或CNN只是对数据做线性变换,即使添加再多的layer,本质依旧是一个单层神经网络。对此,引入非线性变换,对线性层的输出采用  Pointwise 类型的非线性变换作为下一层的输入,以此解决线性网络表达能力不足的问题。其中的 非线性函数称为 activation function。

2. 常见激活函数

2.1 S型

  1)Sigmoid:具有双向饱和性;导数最大0.25,易产生梯度消失现象;训练过程梯度计算量大。

  2)tanh:导数范围[0, 1], 略微减缓sigmoid梯度消失问题;也存在双向饱和性问题;训练过程梯度计算量也很高。

2.2 Relu系列(Rectified Linear Unit)

  斜坡函数:f = max{0, x} 及其一系列变种。

  1)ReLU:优势:不会梯度消失;x<0时输出为0,造成网络稀疏性;计算简单。 缺点:不做数据幅度压缩,没有上界,训练时易梯度爆炸;由于x<0时输出为0,训练时可能会导致某些神经元一直不被激活而永久坏死。

  2)ReLU6:解决正半轴梯度爆炸问题。

  3)Leaky ReLU、PReLU、RReLU:解决负半轴神经元坏死问题。

  4)ELU、SELU(exponential Linear Units): 正半轴一致,负半轴采用软饱和的策略,由 线性函数 变为 指数函数。

2.3 GeLu(Gaussian Error Linear Unit)

  思想:当x<0时,随着x的降低,其激活值被归为0的概率越大。广泛用于NLP领域。 起初采用高斯概率公式的积分作为激活值被归为0的概率,为了方便计算,采用简化的高斯概率公式的近似值 作为激活被归为0的概率。

2.4 Swish、Hardswish

  旨在寻求最好的激活,略。

3. 好的激活函数的性质

  1)非线性以及可微性

  2)能解决 梯度消失和梯度爆炸 的问题

  3)有一定的稀疏性,且能解决神经元坏死问题

  4)计算复杂度低。

 

posted @ 2024-04-23 22:17  橘子葡萄火龙果  阅读(11)  评论(0编辑  收藏  举报