Multiplicación matricial en redes neuronales

Resumen

El producto matriz-matriz es la operación que permite a un modelo de machine learning transformar lotes completos de datos en predicciones interpretables. Si ya entendiste cómo multiplicar una matriz por un vector, este paso te abre la puerta a entender redes neuronales, clasificadores de imágenes y sistemas de recomendación.

Aquí vas a ver cómo aplicar esta operación con NumPy, cómo verificar dimensiones y cómo usar la transpuesta cuando las formas no coinciden.

¿Qué regla siguen las dimensiones en el producto matriz-matriz?

La regla es la misma que ya conocías, solo que ahora aplicada a dos matrices.

Si tienes una matriz A de dimensión M por N y una matriz B de dimensión N por P, el resultado será una matriz C de dimensión M por P. Las dimensiones internas deben coincidir y las externas definen la forma final [0:38].

¿Cuándo se pueden multiplicar dos matrices? Cuando el número de columnas de la primera es igual al número de filas de la segunda. Si A es 3x2 y B es 2x3, la multiplicación es válida y produce una matriz 3x3.

¿Cómo clasificar películas por género con una matriz de pesos?

Imagina tres películas descritas por dos características: nivel de acción y nivel de comedia. Un modelo entrenado debe clasificarlas en tres géneros posibles: aventura, familiar y romance [1:15].

El conocimiento del modelo vive en una matriz de pesos, donde cada columna representa la importancia de una característica para cada género.

python import numpy as np

peliculas_features = np.array([ [5, 1], [1, 5], [4, 4] ])

pesos_generos = np.array([ [1.1, 0.4, 0.1], [0.2, 0.5, 1.2] ])

La primera matriz tiene forma 3x2 (tres películas, dos características). La segunda tiene forma 2x3 (dos características, tres géneros). Las dimensiones internas coinciden, así que la multiplicación es posible [3:45].

python scores_prediccion = peliculas_features @ pesos_generos print(scores_prediccion.shape) print(scores_prediccion)

El resultado es una matriz 3x3. Cada fila corresponde a una película y cada columna al score o nivel de confianza que el modelo asigna a cada género.

¿Cómo se interpretan los scores del modelo?

Para la primera película, los valores son 5.9, 3.0 y 2.9. El más alto corresponde a aventura, lo cual tiene sentido porque esa película tenía mucha acción [5:20].

Para la tercera película, los scores de aventura y romance son los más altos, reflejando el balance entre acción y comedia que definía sus características originales.

En una sola operación, aplicaste el conocimiento del modelo (sus pesos) a un lote completo de datos y obtuviste resultados interpretables.

¿Qué hacer cuando las dimensiones no coinciden?

Aquí entra en juego la transpuesta, una herramienta que ya viste en la clase anterior y que aparece con aún más frecuencia al multiplicar matrices [6:30].

Supón que tienes una matriz con los perfiles de tres usuarios y otra con los perfiles de dos películas. Ambas están descritas por cuatro características: acción, comedia, drama y ciencia ficción.

python usuarios = np.array([ [0.9, 0.2, 0.1, 0.8], [0.1, 0.8, 0.7, 0.2], [0.8, 0.7, 0.1, 0.1] ])

peliculas = np.array([ [0.8, 0.1, 0.1, 0.9], [0.2, 0.9, 0.8, 0.1] ])

La matriz de usuarios es 3x4 y la de películas es 2x4. Si intentas multiplicarlas directamente, NumPy lanza un error porque las dimensiones internas no coinciden [8:10].

¿Qué hace la transpuesta de una matriz? Intercambia filas por columnas. Si una matriz es 2x4, su transpuesta es 4x2. Se obtiene con .T en NumPy.

¿Cómo aplicar la transpuesta para alinear las matrices?

python peliculas_transpuesta = peliculas.T matriz_similitud = usuarios @ peliculas_transpuesta print(matriz_similitud)

Ahora la matriz de películas tiene forma 4x2, que sí coincide con los usuarios 3x4. El resultado es una matriz 3x2 de similitud entre cada usuario y cada película.

El valor en la posición [0,0] es 1.47, que representa la afinidad entre el primer usuario y la primera película. Como ambos tienen valores altos en acción y ciencia ficción, su score es el más alto. En cambio, el usuario uno con la película dos da 0.52, mucho más bajo, lo cual refleja la baja coincidencia en sus características originales [9:50].

¿Cómo practicar el producto matriz-matriz?

Una buena forma de afianzar lo aprendido es construir tus propias matrices.

  • Crea una matriz A de forma 4x3 con el contexto que quieras.
  • Crea una matriz B de pesos de forma 3x2.
  • Realiza la multiplicación A por B y verifica la forma resultante.

Deja en los comentarios la forma o shape de tu matriz final. Hasta ahora los pesos del modelo han sido predefinidos, pero la siguiente pregunta es cómo un modelo encuentra esos pesos por sí mismo, revirtiendo la transformación para despejarlos.