Mish: A Self Regularized Non-Monotonic Activation Function
论文链接: https://arxiv.org/abs/1908.08681 BMVC 2020
一、 Problem Statement
对swish的一个提升。
二、 Direction
提出一个self regularized non-monotonic self gating 激活函数。
三、 Method
函数本体是:
f
(
x
)
=
x
tanh
(
s
o
f
t
p
l
u
s
(
x
)
)
=
x
tanh
(
l
n
(
1
+
e
x
)
)
f(x)=x\tanh(softplus(x))=x\tanh(ln(1+e^x))
f(x)=xtanh(softplus(x))=xtanh(ln(1+ex))
范围在
[
≈
−
0.31
,
∞
]
[\approx-0.31, \infty]
[≈−0.31,∞]。
一阶导数为:
f ′ ( x ) = e x ω δ 2 f'(x)=\frac{e^x \omega}{\delta^2} f′(x)=δ2exω
其中 ω = 4 ( x + 1 ) + 4 e 2 x + e 3 x + e x ( 4 x + 6 ) \omega=4(x+1)+4e^{2x}+e^{3x}+e^{x}(4x+6) ω=4(x+1)+4e2x+e3x+ex(4x+6), δ = 2 e x + e 2 x + 2 \delta=2e^x+e^{2x}+2 δ=2ex+e2x+2
来看看其样式:
Mish保留了small amount of negative information, 消除了Dying ReLU现象。这个性质有助于更好的表达性和信息传递。Mish也避免了saturation, 这个饱和状态会使得训练变慢。所谓的saturation,就是激活函数值接近边界的时候,它们的梯度为0,也就是反向传播的时候梯度消失。
上图例:左边是Sigmoid,右边是tanh。所以为了防止saturation,必须对于权重矩阵初始化特别留意。比如,如果初始化权重过大,那么大多数神经元将会饱和,导致网络就几乎不学习了。
作者也比较了Mish的其他优点:
- 随着网络层增加,accuracy下降的不多。
- 增加高斯噪声到输入,mish相对于Swish和ReLU,loss较小。
- 初始化对精度影响较Swish小。
四、 Conclusion
一个新型的激活函数,提升了网络的性能。在YOLOv4等检测器上都使用了。
五、 Reference
- https://zhuanlan.zhihu.com/p/67054518
- https://www.zhihu.com/question/48010350/answer/109446932