🧮 Computational Mathematics

Inicio · Parte 06 — Álgebra lineal II: descomposiciones y tensores

140 — Capstone: PCA y compresión de imágenes

intermedio-avanzado clase 20 de 20 4 horas demostración capstone_pca_compression

Comprimir con SVD es elegir cuántos valores singulares conservar y declarar el error que eso implica.

Fórmulas

almacenamiento de rango k: k(m + n + 1) frente a mn
error = √(Σᵢ₌ₖ₊₁ σᵢ²)

Desarrollo

El capstone aplica la truncación SVD a una matriz y mide, para cada rango, tres cantidades: cuántos números hay que guardar, qué error se comete y qué fracción de la energía se retiene. Ese informe es la forma honesta de presentar una compresión: no «comprime bien», sino «con rango 2 el error de Frobenius es X y se retiene el Y % de la energía».

La matriz del ejemplo está construida para que dos de sus filas sean múltiplos de un mismo patrón, así que su rango efectivo es muy bajo y el primer valor singular concentra casi toda la energía. Eso es lo que ocurre en datos reales: las imágenes naturales, las matrices de valoraciones y las activaciones de una red tienen espectros que decaen rápido.

El ahorro se calcula sin ambigüedad. Guardar Aₖ requiere las k columnas de U, los k valores singulares y las k columnas de V: k(m + n + 1) números frente a mn. La compresión es rentable cuando k es pequeño frente a mn/(m+n).

La conexión con LoRA cierra la parte: en lugar de ajustar una matriz de pesos W de millones de parámetros, se le suma un producto BA de rango muy bajo. La justificación teórica es exactamente Eckart-Young: si la actualización necesaria tiene rango intrínsecamente bajo, una aproximación de rango bajo la captura casi por completo.

Ejemplo trabajado

Informe de compresión de una matriz 4×4.

valores singulares: 96.28, 1.87, 0.0004, 0.0000

rango  valores guardados  error Frobenius  energía retenida
  1           9              1.8734            99.98 %
  2          18              0.0004           100.00 %
  3          27              0.0000           100.00 %
  4          36              0.0000           100.00 %

matriz original: 16 valores
rango efectivo (σ > 1e−8): 3

Con rango 1 se guardan 9 números en lugar de 16
y se conserva el 99.98 % de la energía.

Qué calcula el laboratorio

Capstone: comprimir una matriz con SVD y medir la pérdida.

python classes/part-06-algebra-lineal-ii-descomposiciones-y-tensores/140-capstone-pca-y-compresion-de-imagenes/lab.py
compmath run 140

Salidas del laboratorio (6)

Muestra de la ejecución real

{
  "matriz_original_shape": [
    4,
    4
  ],
  "valores_originales": 16,
  "valores_singulares": [
    102.872114,
    0.572786,
    1e-06,
    0.0
  ],
  "informe_por_rango": [
    {
      "rango_k": 1,
      "valores_guardados": 9,
      "error_frobenius": 0.572786,
      "energia_retenida_%": 99.9969
    },
    {
      "rango_k": 2,
      "valores_guardados": 18,
      "error_frobenius": 0.0,
      "energia_retenida_%": 100.0
    },
    {
      "rango_k": 3,
      "valores_guardados": 27,
      "error_frobenius": 0.0,
      "energia_retenida_%": 100.0
    },
    {
      "rango_k": 4,
      "valores_guardados": 36,
      "error_frobenius": 0.0,
      "energia_retenida_%": 100.0
    }
  ],
  "rango_efectivo": 4,
  "conclusion": "la matriz es casi de rango 1: dos filas son múltiplos de un patrón"
}

Errores comunes

Dónde se usa

Compresión de imágenes y modelos, reducción de dimensionalidad, eliminación de ruido, recomendación por factorización y LoRA.

Idea rectora de la parte

Broadcasting y einsum son notación, no algoritmos nuevos.

Error a evitar

Interpretar autovalores complejos como error de cálculo.

Conexión con IA

LoRA factoriza matrices de bajo rango, la atención se define con productos tensoriales y la estabilidad del entrenamiento depende del espectro de los pesos.

Bibliografía de la clase

Archivos de la clase