Deep Learning

``

NLP (Natural Language Processing)

  • Conceptos fundamentales: tokenización, embeddings, transformers
  • Modelos populares: BERT, GPT, T5
  • Aplicaciones: análisis de sentimiento, traducción automática, chatbots
  • Librerías: Hugging Face Transformers, SpaCy, NLTK

Computer Vision

  • Tareas principales: clasificación de imágenes, detección de objetos, segmentación semántica
  • Modelos populares: CNN, ResNet, YOLO, EfficientNet
  • Técnicas: data augmentation, transfer learning, fine-tuning
  • Librerías: OpenCV, TensorFlow, PyTorch, Keras

Plataformas y Herramientas

  • Google Colab: entorno colaborativo en la nube para ejecutar notebooks de Python
  • GitHub Codespaces: desarrollo remoto basado en contenedores con VS Code
  • Azure: servicios en la nube para despliegue y entrenamiento de modelos de IA

Proyectos y Aplicaciones

  • Paridad humana: modelos para simular comportamiento humano o predecir resultados similares a los humanos
  • Ejemplos: asistentes virtuales, sistemas de recomendación, generación de texto o imagen

Bloques de Código

Ejemplo de Regresión Lineal en Python

import numpy as np
from sklearn.linear_model import LinearRegression

# Datos de ejemplo
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([2, 4, 6, 8, 10])

# Crear y entrenar modelo
model = LinearRegression()
model.fit(X, y)

# Predicción
pred = model.predict(np.array(6))
print(pred)

`

Ejemplo Básico de NLP con Hugging Face

from transformers import pipeline

# Crear pipeline de análisis de sentimiento
classifier = pipeline("sentiment-analysis")

# Analizar texto
result = classifier("Me encanta aprender Deep Learning!")
print(result)

Ejemplo de Computer Vision con PyTorch

import torch
import torchvision.models as models
import torchvision.transforms as transforms
from PIL import Image

# Cargar modelo preentrenado
model = models.resnet18(pretrained=True)
model.eval()

# Preparar imagen
img = Image.open("imagen.jpg")
transform = transforms.Compose([
    transforms.Resize(256),
    transforms.CenterCrop(224),
    transforms.ToTensor()
])
img_t = transform(img).unsqueeze(0)

# Predicción
out = model(img_t)
_, pred = torch.max(out, 1)
print(pred)

Deep Learning Intro

Procesamiento de Lenguaje Natural (PLN)

  • Objetivo: que las máquinas comprendan, procesen y generen lenguaje humano.
  • Aplicaciones: traducción automática, chatbots, análisis de sentimiento, generación de texto.

Redes Neuronales Recurrentes (RNN)

  • Diseñadas para manejar secuencias de datos donde el orden importa.
  • Capturan dependencias temporales entre palabras o elementos de la secuencia.
  • Limitaciones:
    • Dificultad con secuencias muy largas (problema de desvanecimiento del gradiente).
    • Memoria limitada sobre estados anteriores.

Transformers

  • Manejan todas las palabras de la secuencia a la vez, eliminando dependencia estricta del orden temporal.
  • Conceptos clave:
    • Tokens: divisiones de texto en unidades que el modelo procesa (palabras, subpalabras o caracteres).
    • Embeddings: vectores numéricos que representan tokens.
    • Positional Encoding: agrega información sobre la posición de cada token para mantener el orden dentro de la secuencia.
  • Ventajas:
    • Mejor manejo de secuencias largas.
    • Paralelización más eficiente durante el entrenamiento.
    • Facilita la captura de relaciones globales en el texto.

Arquitectura Transformers

  • Componentes principales:
    • Encoder: procesa la secuencia de entrada y genera representaciones contextuales.
    • Decoder: genera la secuencia de salida a partir de la información codificada.
  • Funciona sumando embeddings de los tokens con su información posicional.
  • Cambios de estado representados mediante vectores que capturan la atención sobre toda la secuencia.
  • Base de modelos modernos de PLN como GPT, BERT, T5.

Tokens y API Keys

  • Tokens: unidades mínimas de texto que los transformers usan para procesar y generar lenguaje.
  • API Keys: credenciales necesarias para interactuar con servicios de modelos de lenguaje en la nube.

Qué es el Machine Learning y Deep Learning: Un mapa conceptual DotCSV

¿Qué es el Machine Learning?¿Y Deep Learning? Un mapa conceptual | DotCSV

Tipos de Aprendizaje

Supervisado

  • Relación entre variables de entrada y salida.
  • Objetivo: aprender a predecir resultados a partir de muchos ejemplos.
  • Ejemplos:
    • Regla matemática: si la relación existente es multiplicar por 2 → la red aprende esa regla.
    • Clasificación de correos electrónicos como SPAM mediante patrones.
    • Predicción de depresión a partir de interacciones en Instagram.
  • Concepto clave: aprender relaciones entre datos y generalizar a valores desconocidos.

No supervisado

  • No se proporciona información previa sobre la salida.
  • Objetivo: reconocer patrones, estructuras o clusters en los datos.
  • Ejemplos:
    • Agrupamiento de símbolos en lenguaje poligonal o lineal.
    • Identificación de diferentes tipos de estructuras sin etiquetas.
  • Problemas:
    • No hay respuesta conocida para evaluar el algoritmo.
    • Determinar cuántas categorías o lenguajes existen.
  • Ventajas:
    • Datasets más fáciles y baratos de obtener, ya que no requieren etiquetado manual.
  • Conceptos:
    • Patrones de similitud en datos de entrada → descubrimiento de estructura interna.
    • Reconocer caras, similitudes entre objetos, espacios latentes o estructuras conceptuales.
    • Permite analizar cómo interactúa el sistema con la información de entrada y salida (Black Box).

Reforzado

  • Aprendizaje basado en recompensas y castigos según las acciones del agente.
  • Objetivo: maximizar la recompensa acumulada aprendiendo a interactuar con el entorno.
  • Ejemplos: juegos, robots, optimización de procesos.

Modelos de Machine Learning

  • Representación: mapas, ecuaciones, relaciones matemáticas o diagramas.
  • Tipos de modelos:
    • Modelos probabilísticos: describen incertidumbre y relaciones estadísticas.
    • Modelos físicos o geométricos: por ejemplo, modelos geocéntricos para predecir posición de Marte.
  • Componentes de un modelo:
    • Datos observacionales: puntos en un espacio multidimensional.
    • Parámetros variables: ej. radios de órbitas, pesos de una red neuronal.
    • Restricciones: ej. Tierra en el centro, órbitas circulares.
  • Objetivo del modelo:
    • Ajustar la representación matemática para minimizar el error entre predicciones y datos reales.
    • Construir modelos aproximados a la realidad.
    • Permitir predicciones futuras y comprender fenómenos.
  • Manejo de dimensiones: los datos pueden ser multidimensionales, cada punto representa una instancia (persona, objeto, medición).

Parámetros y Función de Error

  • Parámetros del modelo: valores que el algoritmo ajusta para mejorar su desempeño.
  • Función de error:
    • Mide la diferencia entre predicciones y valores reales.
    • Supervisado: se calcula a partir de los datos de salida suministrados.
    • No supervisado: se calcula a partir de la estructura de los datos de entrada.
  • Señal de error:
    • Utilizada para reajustar parámetros.
    • El proceso de optimización se denomina entrenamiento o ajuste del modelo.
  • Consideraciones:
    • No siempre más flexibilidad es mejor; puede causar sobreajuste.
    • El objetivo es encontrar algoritmos capaces de aprender los valores óptimos de los parámetros a partir de los datos.

Conceptos clave

  • Aprendizaje a partir de datos.
  • Generalización a casos desconocidos.
  • Estructuras internas y espacios latentes.
  • Optimización mediante señal de error.
  • Equilibrio entre flexibilidad del modelo y capacidad de generalizar.

Deep Learning: Arquitectura y Fundamentos

  • Data Science
  • Machine Learning

    Fundamentos de Deep Learning

  • Neuronas artificiales: unidades básicas que simulan el comportamiento de las neuronas biológicas.
  • Funciones de activación: introducen no linealidad en la red.
    • Ejemplos: ReLU, Sigmoid, Tanh, Softmax
  • Propagación hacia adelante (Forward Propagation): cálculo de la salida de la red a partir de las entradas.
  • Función de pérdida (Loss Function): mide el error entre la predicción y la salida real.
    • Ejemplos: MSE, Cross-Entropy, Huber Loss
  • Retropropagación (Backpropagation): algoritmo para ajustar los pesos de la red usando gradientes.
  • Optimización: métodos para minimizar la función de pérdida.
    • Ejemplos: SGD, Adam, RMSProp
  • Regularización: técnicas para evitar sobreajuste.
    • Dropout, L1/L2, Data Augmentation
  • Batching: procesar múltiples muestras a la vez para eficiencia computacional.
  • Epochs: número de pasadas completas por el dataset durante el entrenamiento.

Arquitectura de Redes Neuronales

  • Redes Feedforward (FFNN):
    • Conexión unidireccional de la entrada a la salida.
    • Ideal para regresión y clasificación básica.
  • Redes Convolucionales (CNN):
    • Especializadas en procesamiento de imágenes.
    • Capas: Convolución, Pooling, Fully Connected.
  • Redes Recurrentes (RNN):
    • Diseñadas para datos secuenciales (texto, series temporales).
    • Variantes: LSTM, GRU.
  • Transformers:
    • Basadas en mecanismos de atención.
    • Uso principal en NLP y cada vez más en visión computacional.
    • Ejemplos: BERT, GPT, T5.
  • Redes Generativas (GANs):
    • Generan datos nuevos a partir de un conjunto de entrenamiento.
    • Componentes: Generador y Discriminador.
  • Redes Autoencoder:
    • Aprendizaje no supervisado.
    • Útiles para reducción de dimensionalidad y denoising.

Consideraciones de Diseño

  • Número de capas y neuronas por capa.
  • Selección de función de activación y pérdida.
  • Elección de optimizador y tasa de aprendizaje.
  • Estrategias de regularización para mejorar generalización.
  • Selección de tamaño de batch y número de epochs.
  • Preprocesamiento de datos y normalización.

Plataformas y Herramientas

  • Google Colab: ejecutar notebooks y entrenar modelos en la nube.
  • GitHub Codespaces: desarrollo remoto de modelos.
  • Azure: despliegue de modelos, entrenamiento a gran escala y servicios de IA.

Ejemplo: Arquitectura Simple de Red Neuronal con Keras

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout

# Crear modelo
model = Sequential([
    Dense(64, activation='relu', input_shape=(100,)),
    Dropout(0.5),
    Dense(32, activation='relu'),
    Dense(1, activation='sigmoid')
])

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

`

Ejemplo: Red Convolucional Básica

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense

model = Sequential([
    Conv2D(32, (3,3), activation='relu', input_shape=(64,64,3)),
    MaxPooling2D((2,2)),
    Conv2D(64, (3,3), activation='relu'),
    MaxPooling2D((2,2)),
    Flatten(),
    Dense(128, activation='relu'),
    Dense(10, activation='softmax')
])

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.summary()