🧮 Computational Mathematics

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

136 — Producto de Kronecker

intermedio-avanzado clase 16 de 20 4 horas demostración kronecker

El producto de Kronecker construye matrices en bloques cuyo rango es el producto de los rangos.

Fórmulas

(A ⊗ B) shape = (m₁m₂, n₁n₂)
rango(A ⊗ B) = rango(A) · rango(B)
(A⊗B)(C⊗D) = (AC)⊗(BD)

Desarrollo

El producto de Kronecker sustituye cada entrada de A por esa entrada multiplicada por toda la matriz B, generando una matriz en bloques mucho mayor. Su interés es que estructura: representa operaciones que actúan de forma independiente sobre dos factores de un problema.

Aparece de forma natural en problemas separables. Discretizar una ecuación en derivadas parciales sobre una malla rectangular produce matrices de Kronecker, porque el operador actúa por separado en cada dirección. Lo mismo ocurre al modelar un sistema compuesto por dos subsistemas independientes.

Las identidades que cumple son las que lo hacen útil computacionalmente: el rango del producto es el producto de los rangos, y (A⊗B)(C⊗D) = (AC)⊗(BD). Esta última permite operar con los factores pequeños en lugar de con la matriz gigante, ahorrando memoria y tiempo.

En machine learning aparece en K-FAC, un método de optimización de segundo orden que aproxima el Hessiano de una red como un producto de Kronecker de dos matrices pequeñas. Sin esa estructura, el Hessiano de una capa con un millón de parámetros sería una matriz de 10¹² entradas: inmanejable.

Ejemplo trabajado

Kronecker de dos matrices 2×2.

A = [[1,2],[3,4]]      B = [[0,5],[6,7]]

A⊗B (4×4):
  [[ 0,  5,  0, 10],
   [ 6,  7, 12, 14],
   [ 0, 15,  0, 20],
   [18, 21, 24, 28]]

shape: (2·2, 2·2) = (4,4)                  ✓
rango(A⊗B) = rango(A)·rango(B) = 2·2 = 4   ✓

Qué calcula el laboratorio

Producto de Kronecker: estructura en bloques.

python classes/part-06-algebra-lineal-ii-descomposiciones-y-tensores/136-producto-de-kronecker/lab.py
compmath run 136

Salidas del laboratorio (7)

Muestra de la ejecución real

{
  "A_shape": [
    2,
    2
  ],
  "B_shape": [
    2,
    2
  ],
  "A⊗B_shape": [
    4,
    4
  ],
  "A⊗B": [
    [
      0.0,
      5.0,
      0.0,
      10.0
    ],
    [
      6.0,
      7.0,
      12.0,
      14.0
    ],
    [
      0.0,
      15.0,
      0.0,
      20.0
    ],
    [
      18.0,
      21.0,
      24.0,
      28.0
    ]
  ],
  "rango": 4,
  "rango_A_por_rango_B": 4
}

Errores comunes

Dónde se usa

Discretización de PDE separables, sistemas compuestos, K-FAC en optimización de segundo orden y grafos producto.

Idea rectora de la parte

Diagonalizar es elegir la base donde la transformación solo escala.

Error a evitar

Aplicar PCA sin centrar (ni escalar) los datos.

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