🧮 Computational Mathematics

Inicio · Parte 05 — Álgebra lineal I: vectores y matrices

111 — Producto de matrices

intermedio clase 11 de 20 4 horas demostración matrix_product

El producto matricial compone transformaciones, es asociativo y no conmuta.

Fórmulas

(AB)ᵢⱼ = Σₖ AᵢₖBₖⱼ
(AB)C = A(BC)  pero  AB ≠ BA
(AB)ᵀ = BᵀAᵀ

Desarrollo

El producto matricial no se define elemento a elemento porque no representa una suma: representa una composición. Aplicar B y luego A es aplicar la matriz AB, y de esa definición se deduce la fórmula «filas por columnas», no al revés.

Que sea asociativo pero no conmutativo tiene consecuencias prácticas. La asociatividad permite elegir el orden de evaluación, y esa elección puede cambiar radicalmente el coste: calcular (AB)C con A de (1000,1000), B de (1000,1) y C de (1,1000) cuesta muchísimo más que A(BC). Es una optimización real que hacen los compiladores de grafos de cómputo.

La no conmutatividad es la que hace que el orden de las capas importe, que rotar y luego escalar difiera de escalar y luego rotar (clase 073), y que las derivadas matriciales tengan que respetar el orden.

El coste del algoritmo ingenuo es O(n³). Strassen redujo el exponente a 2.807 en 1969, y el récord teórico actual está por debajo de 2.372, aunque esos algoritmos no son prácticos por sus constantes. En la práctica, el rendimiento lo determinan la localidad de caché y el paralelismo, no el exponente asintótico, y esa es la razón de existir de BLAS y de las unidades tensoriales de las GPU.

Ejemplo trabajado

El producto no conmuta.

A = [[1,2],[3,4]]      B = [[0,1],[1,0]]   (intercambia columnas)

AB = [[2,1],[4,3]]
BA = [[3,4],[1,2]]
¿AB = BA?  No                              ✗

Transpuesta del producto:
  (AB)ᵀ = [[2,4],[1,3]]
  BᵀAᵀ  = [[2,4],[1,3]]                    ✓ con el orden invertido

Coste ingenuo n×n: O(n³)

Qué calcula el laboratorio

AB ≠ BA y el coste cúbico del producto.

python classes/part-05-algebra-lineal-i-vectores-y-matrices/111-producto-de-matrices/lab.py
compmath run 111

Salidas del laboratorio (9)

Muestra de la ejecución real

{
  "A": [
    [
      1.0,
      2.0
    ],
    [
      3.0,
      4.0
    ]
  ],
  "B": [
    [
      0.0,
      1.0
    ],
    [
      1.0,
      0.0
    ]
  ],
  "AB": [
    [
      2.0,
      1.0
    ],
    [
      4.0,
      3.0
    ]
  ],
  "BA": [
    [
      3.0,
      4.0
    ],
    [
      1.0,
      2.0
    ]
  ],
  "conmutan": false,
  "(AB)ᵀ": [
    [
      2.0,
      4.0
    ],
    [
      1.0,
      3.0
    ]
  ]
}

Errores comunes

Dónde se usa

Composición de capas, pipelines de transformación gráfica, optimización del orden de evaluación en grafos de cómputo y atención multi-cabeza.

Idea rectora de la parte

Una matriz es una función lineal escrita en una base concreta.

Error a evitar

Confundir dimensión del espacio con número de vectores.

Conexión con IA

Cada capa densa es un producto matriz-vector. Los embeddings viven en subespacios y la similitud entre ellos es producto punto normalizado.

Bibliografía de la clase

Archivos de la clase