最近注意到一个称为Mish的激活函数,这里分析一下~

Mish激活函数分析

Mish激活函数为,

看起来很复杂。我们分解来看一下,首先

是$\operatorname{relu}(x)$的光滑近似,在$\mathbb{R}$上单调递增。对于$x \ge 0$,$\ln(1+e^{x}) \approx x$​,这意味着,

这里$x \tanh(x)$​是$f(x) = |x|$​的光滑近似,也就是说$\operatorname{mish}(x)$​的正半轴图像逼近$y = x$​。而负半轴,$\ln(1+e^{x})$​的取值范围为$(0, \ln2]$​,于是$\tanh{\big[\ln(1+e^{x})\big]}$​​被压制在很小的区间内,于是

因此$x\tanh{\big[\ln(1+e^{x})\big]}$负半轴的图像比较贴近$x$轴。因此,$\operatorname{mish}(x)$激活函数本质上是$\operatorname{relu}(x)$​​激活函数的光滑逼近

Mish激活函数导出

由于,

这里,

要找到$\operatorname{relu}(x)$的光滑逼近,只要找到$H(x)$的光滑逼近即可。光滑逼近$H(x)$的函数有很多,$\sigma(x) = \frac{1}{1 + e^{-x}}$​算一个。$\sigma(x)$容易让人联系到另外一个函数,

不过$\tanh(x)$的取值区间为$(-1, 1)$,与$H(x)$​不符,需要变换到$(0, 1)$区间上,即

但是也有一种简单粗暴的方法,就是对于负半轴$x \lt 0$直接置$0$处理,

这样处理失去了关于点$(0, \frac{1}{2})$对称性质,不过是面向$\operatorname{relu}(x) $​光滑逼近而设计的,这一点可以不同考虑。考虑到$\tanh(0) = 0$,于是可以表示为,

考虑到$\max(0, x) \approx \ln(1 + e^x)$​​,于是

于是有,

对比一下上述三个函数的图像差异,

总结

本文从函数光滑逼近的角度分析了$\operatorname{mish}(x)$的导出思路。

转载请包括本文地址:https://allenwind.github.io/blog/14133
更多文章请参考:https://allenwind.github.io/blog/archives/