Introducción al Deep Learning y fundamentos matemáticos

deep-learning
fundamentos
algebra-lineal
Evolución de Machine Learning a Deep Learning, aplicaciones y representación de datos con vectores y matrices en NumPy.
Author

Wilder Ramírez Delgado

Published

August 29, 2026

Introducción al Deep Learning y fundamentos matemáticosSerie Deep Learning · del perceptrón a los transformers.Contexto, motivación y representación matemática de los datos para comenzar el curso. El entrenamiento de redes se desarrolla en la sesión 3: MLP, pérdida y backpropagation.

# Importaciones necesarias para todo el notebook
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
import warnings
warnings.filterwarnings('ignore')

# Configuración de visualización
plt.style.use('seaborn-v0_8-whitegrid')
plt.rcParams['figure.figsize'] = (10, 6)
plt.rcParams['font.size'] = 11

1. Contexto y Motivación

Evolución de Machine Learning a Deep Learning

El Machine Learning tradicional (regresión lineal, árboles de decisión, SVM, etc.) se basa en que un humano diseñe características (features) a partir de los datos crudos. Por ejemplo, para imágenes se extraían histogramas, bordes o descriptores como SIFT. Ese proceso se llama feature engineering y limita mucho el rendimiento: si las features no capturan bien el problema, el modelo no puede mejorar.

El Deep Learning cambia el paradigma: en lugar de diseñar features a mano, se usan redes neuronales profundas (muchas capas) que aprenden representaciones jerárquicas de los datos de forma automática. Las primeras capas suelen capturar patrones de bajo nivel (bordes, texturas) y las capas profundas combinan esos patrones en conceptos de alto nivel (objetos, escenas). Así, el propio modelo “decide” qué representaciones son útiles para la tarea.

Diferencias clave

Aspecto ML Tradicional Deep Learning
Features Ingeniería manual Aprendidas automáticamente
Escalabilidad Mejora limitada con más datos Mejora continua con más datos
Dominios Tabulares, estructurados Imágenes, texto, audio, secuencias
Interpretabilidad Suele ser más interpretable Modelos más “caja negra”

Aplicaciones industriales actuales

  • Visión artificial: Detección de objetos, reconocimiento facial, vehículos autónomos, diagnóstico por imagen (radiología, dermatología).
  • Procesamiento de lenguaje natural (NLP): Traducción automática, chatbots, análisis de sentimiento, resumen de textos, modelos de lenguaje (GPT, BERT).
  • Sistemas de recomendación: Netflix, Spotify, Amazon y redes sociales usan redes profundas para personalizar contenido y anuncios.
  • Audio: Reconocimiento de voz (asistentes), generación de voz sintética, separación de fuentes.

¿Por qué Deep Learning funciona mejor con grandes volúmenes de datos?

Las redes profundas tienen millones (o miles de millones) de parámetros. Con pocos datos, esos parámetros se ajustan demasiado a los ejemplos de entrenamiento y el modelo sobreajusta: funciona bien en train pero mal en datos nuevos. Con muchos datos, el modelo puede aprender patrones estadísticamente estables y generalizables sin memorizar casos concretos. Por eso el auge del Deep Learning está ligado a la disponibilidad de grandes datasets y capacidad de cómputo (GPUs).


2. Representación Matemática de los Datos

Para entender cómo aprenden las redes neuronales es esencial manejar la representación matemática de los datos y las operaciones que se hacen sobre ellos.

Conceptos clave

  • Vector: Una lista ordenada de números (en ML suele ser un vector columna). Representa las características (features) de una sola muestra. Ejemplo: una persona puede describirse por el vector \((1.75, 70, 25)\) (altura en m, peso en kg, edad en años). La longitud del vector es la dimensionalidad del problema (aquí, 3).

  • Matriz: Un conjunto de vectores dispuestos en filas (o columnas). En ML es habitual que cada fila sea una muestra y cada columna sea una feature. Así, una matriz \(\mathbf{X}\) de tamaño \(m \times n\) tiene \(m\) muestras y \(n\) features. Todas las operaciones de un batch (lote) de datos se expresan con esta matriz.

  • Dimensionalidad: El número de features (columnas) indica la “cantidad de información” que usamos para describir cada muestra. En redes profundas se trabaja con dimensionalidades altas (cientos o miles), lo que hace imprescindible el uso eficiente de operaciones matriciales.

Operaciones fundamentales

  • Producto punto (dot product) entre dos vectores: \(\mathbf{a} \cdot \mathbf{b} = \sum_i a_i b_i\). Da un escalar. Si pensamos en \(\mathbf{a}\) como datos y \(\mathbf{b}\) como pesos, el producto punto es la “combinación lineal” que usa una neurona para una sola muestra.

  • Multiplicación matricial: Para matrices \(\mathbf{A}\) (tamaño \(m \times k\)) y \(\mathbf{B}\) (\(k \times n\)), el resultado \(\mathbf{C} = \mathbf{A}\mathbf{B}\) tiene tamaño \(m \times n\) con \((\mathbf{AB})_{ij} = \sum_{k} A_{ik} B_{kj}\). Así podemos aplicar el mismo conjunto de pesos a todas las muestras de un batch en una sola operación.

  • Interpretación geométrica: Los vectores de datos viven en un espacio de características (cada eje es una feature). Vectores cercanos en ese espacio suelen corresponder a muestras similares. Las transformaciones lineales (producto por una matriz de pesos) rotan y escalan ese espacio; las funciones de activación introducen no linealidad y permiten modelar fronteras de decisión complejas.

# Ejemplo: Vectores y matrices en NumPy

# Un vector (una muestra con 3 features: ej. altura, peso, edad)
x = np.array([1.75, 70, 25])
print("Vector (una muestra):", x)
print("Dimensionalidad:", x.shape[0])

# Una matriz (dataset de 4 muestras, 3 features)
X = np.array([
    [1.75, 70, 25],   # persona 1
    [1.60, 55, 30],   # persona 2
    [1.85, 90, 22],   # persona 3
    [1.70, 65, 28],   # persona 4
])
print("\nMatriz (dataset):")
print(X)
print("Forma: {} muestras × {} features".format(X.shape[0], X.shape[1]))

# Producto punto entre dos vectores
w = np.array([0.5, 0.1, -0.2])
producto_punto = np.dot(x, w)
print("\nProducto punto x · w =", producto_punto)

# Multiplicación matricial: X @ w (cada fila de X con w)
predicciones = X @ w  # o np.dot(X, w)
print("Predicciones para todas las muestras:", predicciones)
Vector (una muestra): [ 1.75 70.   25.  ]
Dimensionalidad: 3

Matriz (dataset):
[[ 1.75 70.   25.  ]
 [ 1.6  55.   30.  ]
 [ 1.85 90.   22.  ]
 [ 1.7  65.   28.  ]]
Forma: 4 muestras × 3 features

Producto punto x · w = 2.875
Predicciones para todas las muestras: [2.875 0.3   5.525 1.75 ]

Continuación

Continúa con Perceptrón y MLP, correspondiente a la sesión 2.

💬 ¿Te sirvió?Deja en los comentarios una duda o un caso donde aplicarías esto —respondo todos. Sígueme para no perderte el próximo artículo de la serie ycomparte con alguien que esté aprendiendo deep learning.👉 El código completo está disponible para ejecutar directamente.