Softsign

Una alternativa suave a Tanh con comportamiento más estable

La Softsign es una función de activación suave que transforma los valores de entrada en un rango acotado entre -1 y 1, similar a Tanh, pero con una transición más gradual.

👉 Es menos común que Tanh, pero útil para evitar saturación agresiva.

Definición corta

La Softsign es una función que escala suavemente los valores hacia el rango [1,1][-1, 1][−1,1].

Definición matemática

f(x)=x1+xf(x) = \frac{x}{1 + |x|}

👉 crece de forma más lenta que Tanh.

Intuición

Softsign responde:

👉 “Suavizo los valores grandes sin comprimirlos demasiado rápido”


Valores pequeños → casi lineal  
Valores grandes → suavemente limitados

Interpretación geométrica

  • curva en forma de “S”
  • más plana que Tanh en extremos

Comparación visual conceptual

Tanh:
__
--/ \--Softsign:
/
-/---

🔄 Comparación con Tanh

PropiedadTanhSoftsign
Rango[-1, 1][-1, 1]
Saturaciónrápidalenta
Gradientedecrece rápidodecrece gradual
Suavidadaltaalta

Diferencia clave

👉 Softsign satura más lentamente que Tanh

Ejemplo conceptual

Tanh → se aplana rápido  
Softsign → transición más progresiva

Impacto en el gradiente

Derivada:f(x)=1(1+x)2f'(x) = \frac{1}{(1 + |x|)^2}

👉 decrece de forma más suave que Tanh.

Interpretación

Gradiente disminuye lentamente  

Mejor flujo de aprendizaje

Ventajas

  • transición suave
  • menos saturación abrupta
  • gradiente más estable en extremos

Desventajas

  • menos utilizada en práctica
  • no tan eficiente como ReLU
  • aún puede sufrir gradientes pequeños

Cuándo usar Softsign

Usa Softsign cuando:

  • quieres alternativa a Tanh
  • necesitas suavidad
  • buscas estabilidad en gradiente

Evítala cuando:

  • necesitas máxima eficiencia
  • trabajas con redes profundas modernas

Ejemplo en Python

Python
import numpy as np
def softsign(x):
return x / (1 + np.abs(x))
x = np.array([-2, -1, 0, 1, 2])
print(softsign(x))

Ejemplo en PyTorch

Python
import torch
import torch.nn as nn
softsign = nn.Softsign()
x = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])
print(softsign(x))

Ejemplo en modelo

import torch.nn as nn
model = nn.Sequential(
nn.Linear(10, 20),
nn.Softsign(),
nn.Linear(20, 1)
)

Qué muestra este ejemplo

  • activación suave
  • alternativa a Tanh
  • comportamiento más gradual

Errores comunes

Pensar que reemplaza a ReLU

No es su objetivo.

Ignorar saturación

Sigue existiendo, aunque más suave.

Usarla en redes profundas modernas

Hay mejores opciones (ReLU, GELU).

Ejemplo conceptual en ML

Entrada  

Softsign

Salida suavizada

Gradiente estable

Interpretación profunda

Softsign representa una idea clave:

👉 No todas las activaciones necesitan saturar agresivamente

Permite:

  • transición más natural
  • aprendizaje más estable
  • mejor comportamiento en algunos casos

Conclusión

La Softsign es una alternativa suave a Tanh que reduce la saturación agresiva y mejora el flujo del gradiente, aunque no es tan popular como las funciones modernas.

👉 Es útil para entender la evolución de las funciones de activación.

Related Concepts

  • Tanh
  • Sigmoid
  • ReLU
  • GELU
  • Función de activación