🧮 Computational Mathematics

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

139 — Einstein summation

intermedio-avanzado clase 19 de 20 4 horas demostración einsum

En notación de Einstein los índices repetidos se suman, y una sola expresión cubre producto, traza y contracción.

Fórmulas

'ij,jk->ik'  producto matricial
'ii->'       traza
'ij,ij->'    producto de Frobenius
'ij->ji'     transposición

Desarrollo

La notación de Einstein, introducida en 1916 para simplificar la escritura de la relatividad general, establece un convenio: los índices que aparecen repetidos se suman. Con esa única regla, operaciones que en notación matricial requieren nombres distintos se escriben de forma uniforme.

La implementación moderna, einsum, hace explícitos los índices de entrada y de salida. 'ij,jk->ik' dice: toma dos tensores con esos índices, suma sobre j —repetido— y deja i y k. Eso es el producto matricial. Cambiar la cadena a 'ij,ij->' da el producto de Frobenius, y a 'ij->ji', la transpuesta.

Su ventaja práctica es doble. Primero, legibilidad: en operaciones con tensores de orden 4 o 5 —habituales en atención multi-cabeza— la cadena de índices dice exactamente qué se contrae con qué, mientras que una secuencia de transpose, reshape y matmul no lo dice. Segundo, optimización: la implementación puede elegir el orden de contracción más barato, igual que el orden de evaluación de la clase 111.

La atención escalada se escribe en una línea con einsum: 'bqd,bkd->bqk' calcula todos los productos punto entre consultas y claves de un lote. Leer esa cadena es leer la operación.

Ejemplo trabajado

Cinco operaciones con la misma notación.

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

'ij,jk->ik'  producto     [[19,22],[43,50]]
'ii->'       traza de A   5
'ij,ij->ij'  Hadamard     [[5,12],[21,32]]
'ij,ij->'    Frobenius    70
'ij->ji'     transpuesta  [[1,3],[2,4]]

Una sola notación para todas.

Qué calcula el laboratorio

Notación de Einstein: índices repetidos se suman.

python classes/part-06-algebra-lineal-ii-descomposiciones-y-tensores/139-einstein-summation/lab.py
compmath run 139

Salidas del laboratorio (6)

Muestra de la ejecución real

{
  "'ij,jk->ik' (producto)": [
    [
      19.0,
      22.0
    ],
    [
      43.0,
      50.0
    ]
  ],
  "'ii->' (traza)": 5.0,
  "'ij,ij->ij' (Hadamard)": [
    [
      5.0,
      12.0
    ],
    [
      21.0,
      32.0
    ]
  ],
  "'ij,ij->' (Frobenius)": 70.0,
  "'ij->ji' (transpuesta)": [
    [
      1.0,
      3.0
    ],
    [
      2.0,
      4.0
    ]
  ],
  "ventaja": "una sola notación para producto, traza, contracción y reordenamiento"
}

Errores comunes

Dónde se usa

Atención multi-cabeza, contracciones tensoriales, operaciones por lotes y cualquier manipulación de tensores de orden alto.

Idea rectora de la parte

El número de condición es el cociente entre el mayor y el menor valor singular.

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