Mish:一种自正则化的非单调激活函数.

1. 动机

Swish激活函数是通过神经结构搜索构造的,使用ResNet-20CIFAR-10分类数据集上搜索了$10K$步,获得以下结果:

\[\text{Swish}(x) = x\cdot \text{sigmoid}(x)\]

作者进一步设计了一些与Swish相似的激活函数,通过实验验证它们的表现:

作者选出了表现最好、实验最稳定的一个激活函数,将其称为Mish激活函数:

\[\text{Mish}(x) = x\cdot \text{tanh}(\text{softplus}(x)) \\ =x\cdot \text{tanh}(\ln(1+e^x))\]

2. Mish的特性

Mish激活函数主要有以下几个特点

此外,Mish使得输出平面(output landscape)和损失平面(loss landscape)更平滑。

输出平面是指随机初始化一个网络,将可视化空间的坐标输入网络,输出相应的标量。作者展示了使用ReLUMish激活函数对应的输出平面,后者更加平滑:

更平滑的输出平面会产生更平滑的损失平面,有助于更容易的优化和更好的泛化。作者展示了使用ReLUMishSwish激活函数对应的损失平面。Mish对应的损失平面更加平滑,具有更宽的最小区域,取得的损失值也更小;而其余两个损失平面具有多个局部极小值。

3. Mish与Swish的联系

Mish的一阶导数可以与Swish建立联系:

\[f(x) = x\cdot \text{tanh}(\text{softplus}(x)) \\ f'(x) = \text{tanh}(\text{softplus}(x)) +x\cdot (\text{sech}^2(\text{softplus}(x)))\cdot \text{sigmoid}(x) \\ = (\text{sech}^2(\text{softplus}(x)))\cdot(x\cdot \text{sigmoid}(x)) + \text{tanh}(\text{softplus}(x)) \\ = \Delta(x)\text{Swish}(x)+\frac{f(x)}{x}\]

上式中$\Delta(x)$相当于一个预条件算子(preconditioner),使得梯度更加平滑,且提供了更强的正则化效果,使得MishSwish在更深更复杂的网络中表现更好。