激活函数性质
- 非线性:即导数不是常数,保证多层网络不退化成单层线性网络;
- 可微性:保证了在优化中梯度的可计算性;
- 计算简单:激活函数复杂就会降低计算速度;
- 非饱和性(saturation):饱和指的是在某些区间梯度接近于零(即梯度消失),使得参数无法继续更新的问题;
- 单调性(monotonic):即导数符号不变。当激活函数是单调的时候,单层网络能够保证是凸函数;
- 参数少:大部分激活函数都是没有参数的,像 PReLU 带单个参数会略微增加网络的大小。
高斯误差线性单元(Gaussian Error Linear Unit,GELU)
Dropout 和 ReLU 都希望将“不重要”的激活信息变为零。以 ReLU 为例,对于每个输入 x 都会乘以一个分布,这个分布在 x>0 时为常数 1,在 x≤0 时为常数0。而 GELU 也是在 x(服从标准正态分布)的基础上乘以一个分布,这个分布就是伯努利分布 Φ(x) = P(X≤x)。
因此,高斯误差线性单元(GELU)为 GELU(x) = x*P(X≤x)。
但是这个函数无法直接计算,需要通过另外的方法来逼近这样的激活函数,研究者得出来两个逼近函数:
优点:
- 在 NLP 领域效果最佳,尤其在 Transformer 模型中表现最好
- 类似 RELU 能避免梯度消失问题
缺点:
- 计算量大:类似 ELU,涉及到指数运算。
Swish
Swish 激活函数形式为:f(x)=x*sigmoid(βx)。
- β 是个常数或可训练的参数,通常所说的 Swish 是指 β=1
- β=1.702 时,可以看作是 GELU 激活函数
缺点:
计算量大:sigmoid 涉及到指数运算
Mish
Mish=x * tanh(ln(1+e^x))
在函数形式和图像上,都与 GELU 和 Swish(β=1) 类似。
优点:
- Mish 函数保证在曲线上几乎所有点上的平滑度;
- 随着层深的增加,ReLU 精度迅速下降,其次是 Swish,而 Mish 能更好地保持准确性。
Data Adaptive Activation Function (Dice)
PReLU 和 Dice 的异同:
- 激活函数的形式相同:f(s) = p(s) * s + (1 ? p(s)) · αs
- p(s)的计算方式不同:
- PReLU:p(s) 是指示函数 I(s>0)
- Dice:p(s) 是 sigmoid(BN(s)),BN 代表 Batch Normalization
Dice 可以看作是一种广义的 PReLu,当 E(s) = 0 且 Var(s) = 0 时,Dice 退化为 PReLU。Dice 受到数据影响,E(s) 决定其 rectified point:PReLU 是在 0 的位置,而 Dice 是在 E(s) 位置。
本文暂时没有评论,来添加一个吧(●'◡'●)