Introducción

Deep Learning es un subcampo del machine learning que se enfoca en el uso de redes neuronales profundas para modelar y resolver problemas complejos. A diferencia de los algoritmos de machine learning tradicionales, que a menudo requieren la extracción manual de características, las redes neuronales profundas pueden aprender representaciones de datos de manera automática y jerárquica.

Conceptos Clave

  1. Redes Neuronales Profundas (DNN):

    • Compuestas por múltiples capas de neuronas (o nodos).
    • Cada capa transforma la entrada de la capa anterior en una representación más abstracta.
    • Capaces de modelar relaciones no lineales complejas.
  2. Aprendizaje Supervisado y No Supervisado:

    • Supervisado: La red se entrena con datos etiquetados.
    • No Supervisado: La red se entrena con datos no etiquetados, buscando patrones y estructuras inherentes.
  3. Capas de una Red Neuronal:

    • Capa de Entrada: Recibe los datos iniciales.
    • Capas Ocultas: Transforman los datos a través de funciones de activación.
    • Capa de Salida: Produce la predicción final.
  4. Función de Activación:

    • Introduce no linealidad en la red.
    • Ejemplos: ReLU (Rectified Linear Unit), Sigmoid, Tanh.
  5. Propagación hacia Adelante y hacia Atrás:

    • Propagación hacia Adelante: El proceso de pasar los datos de entrada a través de la red para obtener una predicción.
    • Propagación hacia Atrás: El proceso de ajustar los pesos de la red para minimizar el error de predicción.

Ejemplo Práctico

Para ilustrar cómo funciona una red neuronal profunda, consideremos un ejemplo simple de clasificación de imágenes:

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten

# Cargar un conjunto de datos de ejemplo (MNIST)
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# Normalizar los datos
x_train, x_test = x_train / 255.0, x_test / 255.0

# Definir el modelo
model = Sequential([
    Flatten(input_shape=(28, 28)),  # Aplanar las imágenes de 28x28 píxeles
    Dense(128, activation='relu'),  # Capa oculta con 128 neuronas y ReLU
    Dense(10, activation='softmax')  # Capa de salida con 10 neuronas (una por cada dígito)
])

# Compilar el modelo
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# Entrenar el modelo
model.fit(x_train, y_train, epochs=5)

# Evaluar el modelo
model.evaluate(x_test, y_test)

Explicación del Código

  1. Importación de Librerías:

    • tensorflow es una de las librerías más populares para Deep Learning.
    • Sequential, Dense, y Flatten son componentes de Keras, una API de alto nivel para construir y entrenar modelos de deep learning.
  2. Carga y Normalización de Datos:

    • mnist.load_data() carga el conjunto de datos MNIST, que contiene imágenes de dígitos escritos a mano.
    • Los datos se normalizan dividiendo por 255.0 para que los valores estén entre 0 y 1.
  3. Definición del Modelo:

    • Sequential define un modelo secuencial.
    • Flatten convierte cada imagen de 28x28 píxeles en un vector de 784 elementos.
    • Dense define una capa completamente conectada. La primera capa oculta tiene 128 neuronas con la función de activación ReLU. La capa de salida tiene 10 neuronas con la función de activación softmax (adecuada para clasificación multiclase).
  4. Compilación del Modelo:

    • optimizer='adam' especifica el optimizador Adam.
    • loss='sparse_categorical_crossentropy' especifica la función de pérdida para clasificación multiclase.
    • metrics=['accuracy'] indica que se debe medir la precisión durante el entrenamiento y la evaluación.
  5. Entrenamiento del Modelo:

    • model.fit(x_train, y_train, epochs=5) entrena el modelo durante 5 épocas.
  6. Evaluación del Modelo:

    • model.evaluate(x_test, y_test) evalúa el modelo en el conjunto de prueba.

Ejercicio Práctico

Ejercicio

Modifica el código anterior para agregar una segunda capa oculta con 64 neuronas y la función de activación tanh.

Solución

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten

# Cargar un conjunto de datos de ejemplo (MNIST)
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# Normalizar los datos
x_train, x_test = x_train / 255.0, x_test / 255.0

# Definir el modelo
model = Sequential([
    Flatten(input_shape=(28, 28)),  # Aplanar las imágenes de 28x28 píxeles
    Dense(128, activation='relu'),  # Primera capa oculta con 128 neuronas y ReLU
    Dense(64, activation='tanh'),   # Segunda capa oculta con 64 neuronas y tanh
    Dense(10, activation='softmax')  # Capa de salida con 10 neuronas (una por cada dígito)
])

# Compilar el modelo
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# Entrenar el modelo
model.fit(x_train, y_train, epochs=5)

# Evaluar el modelo
model.evaluate(x_test, y_test)

Conclusión

En esta lección, hemos introducido los conceptos básicos de Deep Learning y las redes neuronales profundas. Hemos visto cómo estas redes pueden aprender representaciones jerárquicas de datos y cómo se pueden aplicar a tareas como la clasificación de imágenes. En la próxima lección, exploraremos la historia y evolución del Deep Learning para entender cómo ha llegado a ser una herramienta tan poderosa en la inteligencia artificial moderna.

© Copyright 2024. Todos los derechos reservados