神经网络中的激活函数用来提升网络的非线性(只有非线性的激活函数才允许网络计算非平凡问题),以增强网络的表征能力。对激活函数的一般要求是:必须非常数、有界、单调递增并且连续,并且可导。 SiLU(Swish 激活函数):f(x)=x*sigmoid(x)
relu的优缺点?
- SGD算法的收敛速度比 sigmoid 和 tanh 快;(梯度不会饱和,解决了梯度消失问题)
- 计算复杂度低,不需要进行指数运算, 适合用于后向传播。
缺点
- 对参数初始化和学习率非常敏感,存在神经元死亡;
- ReLU的输出均值也大于0,偏移现象和神经元死亡会共同影响网络的收敛性;
SiLU是Sigmoid和ReLU的改进版。SiLU具备无上界有下界、平滑、非单调的特性。SiLU在深层模型上的效果优于 ReLU。可以看做是平滑的ReLU激活函数。
f ( x ) = x ⋅ sigmoid ( x ) f(x) = x · \text{sigmoid}(x)
Hardswish
HardSwish平滑地在ReLU和线性函数之间进行了非线性差值。HardSwish的属性与Swish相似,因为它们都是上下无界的,它是非单调的。该函数与Swish相比,它的计算速度更快。
Mish:Mish = x*tanh(ln(1+e^x))
激活函数无边界这个特点,让他避免了饱和这一问题
比如sigmoid,tanh激活函数通常存在梯度饱和问题,在两边极限情况下,梯度趋近于1
而Mish激活函数则巧妙的避开了这一点
另外Mish函数也保证了每一点的平滑,从而使得梯度下降效果比Relu要好
FReLU: FReLU的形式为 y = m a x ( x , T ( x ) ) y = max(x, T(x))y=max(x,T(x)) ,其中 T ( ⋅ ) T(·)T(⋅) 为二维空间条件。
AconC: (p1*x-p2*x) * sigmoid(beta*(p1*x-p2*x)) + p2*x ;beta is a learnable parameter 它通过引入开关因子去学习非线性(激活)和线性(非激活)之间的参数切换
MetaAconC:(p1*x-p2*x) * sigmoid(beta*(p1*x-p2*x)) + p2*x;beta is generated by a small network