La operación reina del álgebra lineal — y la que hace funcionar a cada capa de cada red neuronal. Le metes un vector a una matriz, sale otro vector. Y es solo... varios productos punto.
Para multiplicar una matriz por un vector: haz el producto punto de cada fila de la matriz con el vector, y junta los resultados. Cada resultado es una componente del vector de salida. Lo vemos directamente con números en la siguiente sección — la fórmula general al final.
Recuerda: M = [[1, 2], [0, 1]] y a = (3, 1). Vamos a calcular M · a:
| 1 | 2 |
| 0 | 1 |
| 3 |
| 1 |
| ? |
| ? |
PRIMERA componente = (fila 1 de M) · (a) = (1, 2) · (3, 1) = 1·3 + 2·1 ← producto punto = 3 + 2 = 5 SEGUNDA componente = (fila 2 de M) · (a) = (0, 1) · (3, 1) = 0·3 + 1·1 ← producto punto = 0 + 1 = 1 Resultado: M · a = (5, 1)
El vector a = (3, 1) ha sido transformado por M en el vector (5, 1). La matriz lo "movió" — lo desplazó horizontalmente sin cambiar su altura.
Ahora que lo viste con números, la fórmula general (con letras para cualquier matriz 2×2 y cualquier vector). Nota: aquí usamos p, q, r, s para los elementos de la matriz — letras distintas a nuestro vector a para evitar confusión:
| p | q |
| r | s |
| x |
| y |
| p·x + q·y |
| r·x + s·y |
primera componente = fila 1 · vector · segunda componente = fila 2 · vector
Una red neuronal tiene capas. Cada capa toma un vector de entradas, lo multiplica por una matriz de pesos y añade un sesgo. Si no has visto el curso de redes, no te preocupes — solo mira que la fórmula es exactamente lo que acabas de calcular:
Esa multiplicación x · W es, palabra por palabra, una multiplicación matriz-por-vector. Cada elemento del resultado z es el producto punto de los pesos de una neurona con el vector de entrada.
M · x. Por eso las GPUs son tan rápidas con esto: están optimizadas exactamente para
esta operación.
Modifica los 4 números de la matriz y observa adónde va a parar el vector a = (3, 1) después de aplicar M. La flecha rosada punteada muestra dónde estaba a antes de la transformación. La flecha verde muestra adónde llegó después.
M · v = (fila 1 de M) · v
(fila 2 de M) · v
...
(fila m de M) · v
→ cada componente de la salida es un PRODUCTO PUNTO.
En la próxima lección veremos qué le hace M (y otras matrices) al espacio entero — rotaciones, escalados, cizallas, espejos.