分析Mish激活函数的设计思路
最近注意到一个称为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/