Funciones de activación
Las funciones de activación en Keras son esenciales para las redes neuronales, ya que introducen no linealidad en el modelo, permitiendo que la red aprenda y modele relaciones complejas en los datos. En Keras, se pueden especificar en cada capa y ayudan a determinar la salida de cada neurona en función de su entrada ponderada.
Tipos Comunes de Funciones de Activación en Keras
- ReLU (Rectified Linear Unit)
- Sintaxis:
activation='relu'
- Descripción: Es una de las funciones de activación más comunes y devuelve el valor de entrada si es positivo y 0 si es negativo.
- Ventaja: Introduce no linealidad y es computacionalmente eficiente.
- Uso común: En capas ocultas de redes neuronales profundas.
from tensorflow.keras.layers import Dense layer = Dense(units=64, activation='relu')
- Sintaxis:
- Sigmoid
- Sintaxis:
activation='sigmoid'
- Descripción: Mapea la entrada a un valor entre 0 y 1, aplicando la función ( \sigma(x) = \frac{1}{1 + e^{-x}} ).
- Ventaja: Es útil para modelos de clasificación binaria.
- Uso común: En la capa de salida para problemas de clasificación binaria.
layer = Dense(units=1, activation='sigmoid')
- Sintaxis:
- Tanh (Tangente hiperbólica)
- Sintaxis:
activation='tanh'
- Descripción: Mapea la entrada en el rango de -1 a 1, aplicando la función ( \tanh(x) = \frac{e^x – e^{-x}}{e^x + e^{-x}} ).
- Ventaja: Similar a la sigmoid, pero con un rango más amplio y centrada en 0.
- Uso común: En capas ocultas, a veces preferida a la sigmoid en redes recurrentes.
layer = Dense(units=64, activation='tanh')
- Sintaxis:
- Softmax
- Sintaxis:
activation='softmax'
- Descripción: Convierte un vector de valores en probabilidades, de modo que la suma de todas las salidas es igual a 1.
- Ventaja: Ideal para problemas de clasificación multi-clase.
- Uso común: En la capa de salida de una red de clasificación con múltiples clases.
layer = Dense(units=3, activation='softmax')
- Sintaxis:
- Leaky ReLU
- Sintaxis:
tf.keras.layers.LeakyReLU(alpha=0.2)
- Descripción: Una variación de ReLU que permite una pequeña pendiente cuando la entrada es negativa, resolviendo problemas de gradiente cero en esa región.
- Ventaja: Mantiene una pequeña gradiente en los valores negativos, útil para redes profundas.
- Uso común: En capas ocultas de redes neuronales profundas.
from tensorflow.keras.layers import LeakyReLU layer = Dense(units=64) layer.add(LeakyReLU(alpha=0.2))
- Sintaxis:
Ejemplo Completo de Modelo con Funciones de Activación
Supongamos que queremos clasificar imágenes en una de tres clases. Utilizaremos ReLU
en las capas ocultas y softmax
en la capa de salida para obtener probabilidades por clase.
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
# Definición del modelo
model = Sequential([
Flatten(input_shape=(28, 28)), # Aplana la entrada (por ejemplo, una imagen de 28x28 píxeles)
Dense(128, activation='relu'), # Primera capa oculta con ReLU
Dense(64, activation='relu'), # Segunda capa oculta con ReLU
Dense(3, activation='softmax') # Capa de salida con Softmax para clasificación de 3 clases
])
# Compilación del modelo
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# Resumen del modelo
model.summary()
En este ejemplo:
- Capa de entrada: Se aplana la entrada de una imagen 28×28 a un vector de 784 características.
- Capas ocultas: Ambas usan la activación
ReLU
para aprender relaciones no lineales. - Capa de salida: Utiliza
softmax
, ideal para problemas de clasificación con múltiples clases (en este caso, 3 clases).
Selección de Función de Activación según el Tipo de Problema
- Clasificación Binaria:
sigmoid
en la capa de salida. - Clasificación Multi-Clase:
softmax
en la capa de salida. - Capas Ocultas en Redes Profundas:
relu
oleaky_relu
. - Redes Recurrentes (Secuencias):
tanh
orelu
en capas ocultas.
Las funciones de activación tienen un impacto directo en cómo aprende el modelo. Elegir la adecuada es clave para obtener buenos resultados.