La función de activación Mish
La función Mish se define como mish(x) = x·tanh(softplus(x)). Es suave, no monótona y se autorregulariza, propiedades que le permiten superar a Swish y a ReLU en muchas pruebas. El detector de objetos YOLOv4 la adoptó en su columna vertebral como activación por defecto.
La función Mish se define como mish(x) = x·tanh(softplus(x)): la entrada multiplicada por la tangente hiperbólica de su softplus. La propuso Diganta Misra en 2019 como una activación suave, no monótona y autorregularizada, en la misma familia que Swish. Su golpe de fama llegó en 2020, cuando el detector de objetos YOLOv4 la eligió para su columna vertebral. Esta guía la desmonta pieza a pieza: fórmula, derivada, propiedades y coste. La misma explicación está disponible en inglés.
Puntos clave
- La función Mish se define como
mish(x) = x·tanh(softplus(x)), dondesoftplus(x) = ln(1 + e^x). - Es suave y derivable en todo su dominio, a diferencia de ReLU, que tiene un vértice no derivable en 0.
- Es no monótona: alcanza un mínimo global cercano a -0,31 alrededor de
x = -1,19, una hondonada parecida a la de Swish. - Está acotada por abajo y no por arriba, lo que produce un efecto de regularización sin necesidad de dropout adicional.
- El detector YOLOv4 la adoptó en su columna vertebral CSPDarknet53 y con ella alcanzó un 43,5 % de AP en el conjunto COCO.
¿Qué es Mish?
Mish es una función de activación: la operación no lineal que se aplica a la suma ponderada z = Wx + b de una neurona para producir su salida a = f(z). Sin esa no linealidad, apilar capas no serviría de nada, porque la composición de funciones lineales sigue siendo lineal.
La introdujo Diganta Misra en 2019 en el artículo Mish: A Self Regularized Non-Monotonic Activation Function[1]. El propio autor la describe como «una función de activación suave, continua, autorregularizada y no monótona», cuatro adjetivos que resumen toda su gracia. La forma es deliberadamente parecida a la de Swish, pero cambia la puerta sigmoide por la combinación de softplus y tangente hiperbólica.
El nombre softplus designa una versión suavizada de ReLU: softplus(x) = ln(1 + e^x). Cuando se pasa por la tangente hiperbólica y se multiplica por la entrada, aparece la curva característica de Mish, casi lineal para valores grandes y con una suave hondonada en la zona negativa.
Fórmula y derivada
La definición compacta encadena tres funciones bien conocidas:
$$\operatorname{mish}(x) = x \cdot \tanh(\operatorname{softplus}(x)) = x \cdot \tanh(\ln(1+e^x))$$
Su derivada se obtiene con la regla del producto y la de la cadena. Si llamamos $\operatorname{sp}(x) = \operatorname{softplus}(x)$ y recordamos que $\operatorname{sp}'(x) = \sigma(x)$ (la sigmoide) y que la derivada de la tangente hiperbólica es $\operatorname{sech}^2$, resulta:
$$\operatorname{mish}'(x) = \tanh(\operatorname{sp}(x)) + x \cdot \sigma(x) \cdot \operatorname{sech}^2(\operatorname{sp}(x))$$
Mish es suave y derivable en todo su dominio: su gradiente es continuo incluso en el origen, sin el «codo» que la ReLU tiene en cero, donde su derivada salta de golpe de 0 a 1.
Tres consecuencias numéricas conviene retener. Para valores muy positivos, $\tanh(\operatorname{softplus}(x))$ tiende a 1 y Mish se comporta casi como la identidad $x$. Para valores muy negativos, tiende a 0 con suavidad, sin cortar de golpe como ReLU. Y en el entorno de $x=-1{,}19$ alcanza su mínimo global, aproximadamente $-0{,}31$: ahí es donde aparece la hondonada que la vuelve no monótona.
Ver la derivación
Partimos de $\operatorname{mish}(x) = x \cdot \tanh(\operatorname{sp}(x))$ y aplicamos la regla del producto: el primer término deriva $x$ y deja $\tanh(\operatorname{sp}(x))$; el segundo deja $x$ y deriva $\tanh(\operatorname{sp}(x))$. Como $\frac{d}{dx}\tanh(u) = \operatorname{sech}^2(u)\cdot u’$ y aquí $u=\operatorname{sp}(x)$ con $\operatorname{sp}'(x) = \sigma(x)$, la regla de la cadena da $\operatorname{sech}^2(\operatorname{sp}(x))\cdot\sigma(x)$. Sumando los dos términos: $\operatorname{mish}'(x) = \tanh(\operatorname{sp}(x)) + x\cdot\sigma(x)\cdot\operatorname{sech}^2(\operatorname{sp}(x))$.
Suavidad y no monotonía
La suavidad importa por dos razones. Primero, el gradiente es continuo en todas partes, lo que ayuda a la optimización basada en derivadas y evita el pliegue anguloso de ReLU en el origen. Un perfil de error más liso facilita que el descenso de gradiente encuentre buenos mínimos.
Segundo, al permitir un pequeño flujo negativo, Mish no sufre el problema de las "neuronas muertas" de ReLU, donde una neurona que solo recibe entradas negativas deja de aprender porque su gradiente se queda fijo en 0. La no monotonía (esa hondonada por debajo de cero) conserva gradientes pequeños pero útiles para las entradas negativas.
Hay además una propiedad que la distingue: Mish está acotada por abajo, con ese suelo cercano a -0,31, pero no por arriba. Estar acotada por abajo introduce un efecto regularizador, mientras que no estarlo por arriba evita la saturación que frena el aprendizaje en funciones como la sigmoide. Por eso Misra habla de una activación "autorregularizada".
Rendimiento frente a Swish y ReLU
La pregunta práctica es si esa elegancia se traduce en mejores resultados. En el artículo original, Misra probó Mish en más de 70 pruebas de referencia frente a otras activaciones. Uno de los datos más citados: en CIFAR-100, con una Squeeze Excite Network de 18 capas, Mish mejoró la precisión top-1 en un 0,494 % respecto a Swish y en un 1,671 % respecto a ReLU, sin cambiar nada más de la red.
La consagración práctica llegó con la visión por computador. YOLOv4, presentado en 2020 por Bochkovskiy, Wang y Liao en YOLOv4: Optimal Speed and Accuracy of Object Detection[2], usa Mish en su columna vertebral CSPDarknet53 y forma parte de la "bolsa de mejoras" con la que el modelo alcanzó un 43,5 % de AP en COCO a velocidad de tiempo real. Frente a Swish, las diferencias suelen ser pequeñas: ambas comparten forma y ventajas, y a menudo la elección depende más del coste de cómputo disponible que de la precisión.
Coste computacional
Aquí está la contrapartida. Cada evaluación de Mish encadena una exponencial (para softplus), un logaritmo implícito, una tangente hiperbólica y una multiplicación, mientras que ReLU es una simple comparación con cero y Swish necesita una sola sigmoide. En la práctica, Mish es la más cara de las tres tanto en cómputo como en memoria durante la retropropagación.
Ese coste se puede recortar. Existe una implementación fusionada, Mish-CUDA, que combina las operaciones en un solo núcleo de GPU y reduce el consumo de memoria y el tiempo por capa. Aun así, cuando la latencia manda o la red es poco profunda, ReLU sigue siendo la opción sensata. En los marcos actuales tienes la función lista para usar: en PyTorch es torch.nn.Mish[3]. Puedes situar Mish, Swish y ReLU dentro del recorrido completo en el mapa de las matemáticas de las redes neuronales.
Preguntas frecuentes
¿En qué se diferencia Mish de Swish?
Ambas son suaves, no monótonas y autorreguladas, y sus curvas se parecen mucho. La diferencia está en la puerta: Swish usa la sigmoide (x·σ(x)), mientras que Mish usa tanh(softplus(x)). En rendimiento suelen ir muy parejas; Mish es algo más cara de calcular, pero en algunas pruebas ofrece una mejora marginal.
¿Por qué se dice que Mish es autorregularizada?
Porque está acotada por abajo (con un suelo cercano a -0,31) pero no por arriba. Ese límite inferior introduce un efecto de regularización sobre las activaciones, parecido en espíritu al que buscan técnicas como el dropout, sin necesidad de añadir ruido explícito durante el entrenamiento.
¿Cuándo conviene usar Mish?
Merece la pena en redes profundas donde la precisión final es prioritaria, como detectores de objetos o grandes redes de visión. Si la red es pequeña o la velocidad de inferencia es crítica, ReLU suele ser suficiente y bastante más barata de calcular.
Conclusión
La función Mish resume una idea potente en una fórmula compacta: dejar que la entrada pase por una puerta suave hecha de softplus y tangente hiperbólica con x·tanh(softplus(x)). Suavidad, no monotonía y autorregularización se combinan para igualar o superar a Swish y a ReLU en las arquitecturas más exigentes, de CIFAR-100 a YOLOv4. El siguiente paso natural es compararla con la función Swish (SiLU), su pariente más cercano.