Las funciones de activacion son componentes clave en las redes neuronales artificiales. Su papel principal es introducir np linealidad en el modelo, permitiendo que las redes aprendar relaciones complejas. Estas son alguna de las funciones de activacion con sus respectivas visualizaciones y derivadas.

Función Sigmoide

La función sigmoide, también conocida como función logística, es una función de activación clásica en redes neuronales artificiales. Su expresión matemática es:

\[ \sigma(x) = \frac{1}{1 + e^{-x}} \] Su derivada se puede expresar como:

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

sigmoid <- function(x) { 1 / (1 + exp(-x)) }
sigmoid_deriv <- function(x) {
  s <- sigmoid(x)
  s * (1 - s)
}
x <- seq(-10, 10, 0.1)
y <- sigmoid(x)
dy <- sigmoid_deriv(x)

plot(x, y, type = "l", col = "blue", lwd = 2, ylim = c(0, 1),
     main = "Función Sigmoide y su Derivada", xlab = "x", ylab = "valor")
lines(x, dy, col = "red", lty = 2, lwd = 2)
legend("topleft", legend = c("Sigmoid", "Derivada"), col = c("blue", "red"), lty = c(1, 2))
grid()

Esta función transforma cualquier número real (desde −∞ hasta ∞) en un valor entre 0 y 1, lo cual la hace especialmente útil en tareas donde necesitamos interpretar la salida como una probabilidad.

Ejemplo: Clasificación binaria en redes neuronales simples Se usa comúnmente en la capa de salida de una red neuronal cuando el objetivo es predecir una probabilidad entre 0 y 1, por ejemplo, para detectar si un correo es spam (1) o no (0).

Tangente Hiperbólica(Tanh)

La función Tanh, o tangente hiperbólica, es una función de activación ampliamente utilizada en redes neuronales. Matemáticamente se define como:

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

Su derivada es:

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

tanh_deriv <- function(x) {
  1 - tanh(x)^2
}
y <- tanh(x)
dy <- tanh_deriv(x)

plot(x, y, type = "l", col = "darkgreen", lwd = 2,
     main = "Tanh y su Derivada", xlab = "x", ylab = "valor", ylim = c(-1.1, 1.1))
lines(x, dy, col = "red", lty = 2, lwd = 2)
legend("bottomright", legend = c("Tanh", "Derivada"), col = c("darkgreen", "red"), lty = c(1, 2))
grid()

Su gráfica tiene una forma de “S” similar a la función sigmoide, pero con una diferencia importante: su rango de salida va de -1 a 1, en lugar de 0 a 1 como en la sigmoide.

Ejemplo: Capas ocultas de redes recurrentes (RNN) La función tanh es muy utilizada en las capas ocultas de redes como las RNN o LSTM, porque tiene un rango de salida centrado en cero (-1, 1), lo que favorece el aprendizaje.

ReLU

La ReLU es actualmente la función más utilizada en redes neuronales. Su simplicidad y eficiencia computacional la hacen ideal para arquitecturas profundas.

La función ReLU se define como:

\[ \text{ReLU}(x) = \max(0, x) \]

O de forma más explícita:

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

Su derivada es:

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

relu <- function(x) { ifelse(x > 0, x, 0) }
relu_deriv <- function(x) { ifelse(x > 0, 1, 0) }

y <- relu(x)
dy <- relu_deriv(x)

plot(x, y, type = "l", col = "red", lwd = 2,
     main = "ReLU y su Derivada", xlab = "x", ylab = "valor", ylim = c(0, 10))
lines(x, dy, col = "black", lty = 2, lwd = 2)
legend("topleft", legend = c("ReLU", "Derivada"), col = c("red", "black"), lty = c(1, 2))
grid()

Ejemplo: Redes convolucionales (CNN) Es la función de activación por excelencia en redes profundas para visión por computador, como detección de objetos, reconocimiento facial o clasificación de imágenes (e.g., usando Conv2D + ReLU).

Leaky ReLU

La función Leaky ReLU (Rectified Linear Unit con fuga) es una variante de la ReLU tradicional. Se diseñó para evitar el problema de las “neuronas muertas” permitiendo un pequeño gradiente negativo cuando la entrada es menor o igual a cero. Esto mantiene activas las neuronas incluso con valores negativos.


Fórmula matemática: \[ leaky_relu <- function(x) { ifelse(x > 0, x, 0.01 * x) } \] (x) = \[\begin{cases} x & \text{si } x > 0 \\ \alpha x & \text{si } x \leq 0 \end{cases}\]

= 0.01


Derivada: \[ leaky_relu_deriv <- function(x) { ifelse(x > 0, 1, 0.01) } \] ’(x) = \[\begin{cases} 1 & \text{si } x > 0 \\ \alpha & \text{si } x \leq 0 \end{cases}\]
leaky_relu <- function(x) {
  ifelse(x > 0, x, 0.01 * x)
}
leaky_relu_deriv <- function(x) {
  ifelse(x > 0, 1, 0.01)
}
y1 <- leaky_relu(x)
dy1 <- leaky_relu_deriv(x)

plot(x, y1, type = "l", col = "blue", lwd = 2,
     main = "Leaky ReLU y su Derivada", xlab = "x", ylab = "valor")
lines(x, dy1, col = "red", lty = 2, lwd = 2)
legend("bottomright", legend = c("Leaky ReLU", "Derivada"),
       col = c("blue", "red"), lty = c(1, 2))
grid()

Se utiliza frecuentemente en redes neuronales profundas para evitar que las neuronas queden “apagadas” permanentemente, especialmente en modelos como:

Generative Adversarial Networks (GANs)

Redes neuronales densas profundas

Modelos donde la propagación del gradiente es crítica y ReLU puede causar bloqueos por salidas nulas prolongadas.

Softplus

La función Softplus es una función matemática utilizada como activación en redes neuronales. Esta función transforma cualquier número real en un valor positivo, generando una curva suave y creciente. Su principal característica es que es diferenciable en todo su dominio, lo cual permite que los algoritmos de optimización funcionen correctamente al calcular gradientes. funcion matematica: \[ softplus <- function(x) { log(1 + exp(x)) } \] Derivada: \[ softplus_deriv <- function(x) { 1 / (1 + exp(-x)) } \]

softplus <- function(x) {
  log(1 + exp(x))
}
softplus_deriv <- function(x) {
  1 / (1 + exp(-x))
}
y3 <- softplus(x)
dy3 <- softplus_deriv(x)

plot(x, y3, type = "l", col = "orange", lwd = 2,
     main = "Softplus y su Derivada", xlab = "x", ylab = "valor")
lines(x, dy3, col = "red", lty = 2, lwd = 2)
legend("bottomright", legend = c("Softplus", "Derivada"),
       col = c("orange", "red"), lty = c(1, 2))
grid()

Softplus es útil en redes neuronales donde se requiere que las salidas de ciertas neuronas sean siempre positivas y suaves, como en:

Modelos probabilísticos donde se calculan desviaciones estándar o varianzas.

Capas donde se necesita una salida continua y diferenciable para funciones posteriores que dependen del gradiente.