Índice de Navegación


Sigmoide

La función sigmoide es ampliamente usada en redes neuronales para transformar valores reales en el intervalo \((0, 1)\).

Fórmula:

\[ \sigma(x) = \frac{1}{1 + e^{-x}} \]

Derivada:

\[ \sigma'(x) = \sigma(x) (1 - \sigma(x)) \]

sigmoid <- function(x) {
  1 / (1 + exp(-x))
}
curve(sigmoid, from = -10, to = 10, col = "blue", lwd = 2, 
      ylab = "f(x)", xlab = "x", main = "Función Sigmoide")
abline(h = c(0, 1), lty = 2, col = "gray")

La sigmoide es útil en clasificación binaria, pero puede saturarse para valores extremos (problema del gradiente).


Tangente Hiperbólica (Tanh)

Es similar a la sigmoide, pero su salida está centrada en cero.

Fórmula:

\[ \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} \]

Derivada:

\[ \tanh'(x) = 1 - \tanh^2(x) \]

curve(tanh, from = -5, to = 5, col = "darkgreen", lwd = 2, 
      ylab = "f(x)", xlab = "x", main = "Tangente Hiperbólica")
abline(h = c(-1, 1), lty = 2, col = "gray")

Se prefiere sobre la sigmoide en redes profundas por estar centrada en cero.


ReLU

Función lineal rectificada. Muy utilizada por su simplicidad.

Fórmula:

\[ f(x) = \max(0, x) \]

Derivada:

\[ f'(x) = \begin{cases} 1 & \text{si } x > 0 \\ 0 & \text{si } x \leq 0 \end{cases} \]

relu <- function(x) ifelse(x > 0, x, 0)
curve(relu, from = -5, to = 5, col = "red", lwd = 2,
      ylab = "f(x)", xlab = "x", main = "ReLU")

ReLU es rápida y eficiente, pero puede causar el problema de neuronas muertas.


Leaky ReLU

Mejora la ReLU permitiendo un pequeño gradiente cuando \(x < 0\).

Fórmula:

\[ f(x) = \begin{cases} x & \text{si } x > 0 \\ \alpha x & \text{si } x \leq 0 \end{cases} \quad \text{con } \alpha \approx 0.01 \]

Derivada:

\[ f'(x) = \begin{cases} 1 & \text{si } x > 0 \\ \alpha & \text{si } x \leq 0 \end{cases} \]

leaky_relu <- function(x, alpha = 0.01) ifelse(x > 0, x, alpha * x)
curve(leaky_relu, from = -5, to = 5, col = "purple", lwd = 2,
      ylab = "f(x)", xlab = "x", main = "Leaky ReLU")

Evita neuronas muertas al mantener una pequeña pendiente negativa.


Softplus

Es una versión suave de ReLU.

Fórmula:

\[ f(x) = \ln(1 + e^x) \]

Derivada:

\[ f'(x) = \frac{1}{1 + e^{-x}} = \text{sigmoide}(x) \]

softplus <- function(x) log(1 + exp(x))
curve(softplus, from = -5, to = 5, col = "orange", lwd = 2,
      ylab = "f(x)", xlab = "x", main = "Softplus")

Es continua y diferenciable, pero computacionalmente más costosa.


Referencias