Descomponiendo cualquier matriz en sus componentes fundamentales
La descomposición en valores singulares (SVD) es una técnica del álgebra lineal que permite descomponer cualquier matriz en tres matrices más simples. Es una de las herramientas más poderosas en machine learning para compresión, reducción de dimensionalidad y análisis de datos.
👉 En esencia, la SVD revela cómo una matriz transforma el espacio en términos de rotaciones y escalados.
Definición corta
La SVD descompone una matriz en tres matrices que representan rotaciones y escalados.
Definición detallada
Dada una matriz de tamaño , su descomposición SVD es:
👉 Donde:
- = matriz ortogonal (vectores singulares izquierdos)
- = matriz diagonal (valores singulares)
- = matriz ortogonal transpuesta (vectores singulares derechos)
Intuición
La SVD descompone una transformación en tres pasos:
- Rotación inicial ()
- Escalado ()
- Rotación final ()
👉 Es como decir:
“Primero giro el espacio, luego lo estiro, luego lo vuelvo a girar”
Interpretación geométrica
Si aplicas una matriz a un círculo:
👉 Se convierte en una elipse
- V define la orientación inicial
- Σ define cuánto se estira cada eje
- U define la orientación final
Valores singulares
Los valores en Σ:
👉 Indican:
- cuánto se estira cada dirección
- qué tan importante es cada componente
Relación con valores propios
- SVD funciona para cualquier matriz
- Valores propios solo para matrices cuadradas
👉 Además:ATA→valores propios=σ2
SVD en redes neuronales
🔹 1. Reducción de dimensionalidad
Mantener solo los valores singulares más grandes:
👉 reduce dimensiones sin perder información clave
🔹 2. Compresión de modelos
Aproximar matrices de pesos:
👉 menos parámetros, mismo rendimiento
🔹 3. Eliminación de ruido
Valores singulares pequeños:
👉 suelen representar ruido
🔹 4. Análisis de embeddings
Detecta estructura en representaciones.
Ejemplo conceptual
Matriz:
SVD:
👉 Donde:
- contiene los valores singulares
- , contienen direcciones importantes
Relación con otros conceptos
Ejemplo en Python
import numpy as npA = np.array([ [3, 1], [1, 3]])U, S, Vt = np.linalg.svd(A)print("U:\n", U)print("Valores singulares:", S)print("V^T:\n", Vt)
Ejemplo en PyTorch
import torchA = torch.tensor([ [3.0, 1.0], [1.0, 3.0]])U, S, Vt = torch.linalg.svd(A)print("U:\n", U)print("Valores singulares:", S)print("V^T:\n", Vt)
Ejemplo: reducción de dimensionalidad
import numpy as npA = np.random.rand(5, 5)U, S, Vt = np.linalg.svd(A)# Mantener solo los 2 valores principalesk = 2S_reduced = np.zeros_like(A)S_reduced[:k, :k] = np.diag(S[:k])A_reduced = U @ S_reduced @ Vtprint("Matriz original:\n", A)print("Matriz reducida:\n", A_reduced)
Ejemplo en deep learning
import torch# Matriz de pesos simuladaW = torch.randn(4, 4)U, S, Vt = torch.linalg.svd(W)# Aproximación de bajo rangok = 2W_approx = U[:, :k] @ torch.diag(S[:k]) @ Vt[:k, :]print("Original:\n", W)print("Aproximada:\n", W_approx)
Qué muestra este ejemplo
- Reduce complejidad
- Mantiene estructura principal
- Aproxima matrices grandes
👉 Base de compresión en redes neuronales.
Errores comunes
Confundir con valores propios
No son lo mismo, aunque relacionados.
No ordenar valores singulares
Siempre van de mayor a menor.
Usar todos los componentes
Pierde sentido de reducción.
Ejemplo conceptual en ML
Datos de alta dimensión → SVD → reducción → modelo más eficiente
Interpretación profunda
La SVD permite:
- entender transformaciones complejas
- identificar estructuras ocultas
- comprimir modelos
- mejorar eficiencia
👉 Es una de las herramientas más poderosas del machine learning.
Conclusión
La descomposición en valores singulares (SVD) permite descomponer cualquier matriz en componentes fundamentales, revelando su estructura interna. Es clave para reducción de dimensionalidad, compresión y análisis de datos.
👉 Dominar SVD es dominar cómo las matrices transforman el mundo.
Related Concepts
- Valores propios
- Vectores propios
- Matriz
- PCA
- Norma
- Transformación lineal