Multiplicación elemento a elemento en vectores y matrices
El producto Hadamard es una operación que multiplica dos vectores o matrices elemento por elemento, produciendo una nueva estructura del mismo tamaño.
👉 A diferencia de la multiplicación matricial, no combina filas con columnas, sino que opera directamente sobre cada posición.
Definición corta
El producto Hadamard multiplica dos estructuras del mismo tamaño elemento a elemento.
Definición detallada
Dados dos vectores:x=[x1,x2,…,xn] y=[y1,y2,…,yn]
El producto Hadamard se define como:
Para matrices
👉 Requisito:
Ambas estructuras deben tener la misma dimensión.
Intuición
El producto Hadamard responde:
👉 “Multiplica cada valor con su correspondiente”
Ejemplo:
Interpretación
- No mezcla información entre posiciones
- Opera localmente
- Mantiene la estructura original
👉 Es una operación element-wise.
🔄 Comparación con otras operaciones
| Operación | Tipo |
|---|---|
| Producto escalar | suma de productos |
| Multiplicación matricial | combinación global |
| Hadamard | elemento a elemento |
🧠 Producto Hadamard en redes neuronales
🔹 1. Funciones de activación
Se aplica elemento a elemento:
z → ReLU(z)
🔹 2. Backpropagation
Gradientes:
👉 Uso directo del producto Hadamard.
🔹 3. Atención (Transformers)
Se usa en:
- masking
- scaling
- weighting
🔹 4. Dropout
x ⊙ mask
👉 Apaga neuronas.
🔹 5. Gating (LSTM, GRU)
👉 Control de flujo de información.
📊 Ejemplo paso a paso
Relación con otros conceptos
- Vector
- Matriz
- Producto escalar
- Gradiente
- Activación
Ejemplo en Python
# Producto Hadamard manualx = [1, 2, 3]y = [4, 5, 6]result = [x[i] * y[i] for i in range(len(x))]print("Resultado:", result)
Ejemplo en NumPy
import numpy as npx = np.array([1, 2, 3])y = np.array([4, 5, 6])result = x * yprint("Hadamard:", result)
Ejemplo en matrices
import numpy as npA = np.array([ [1, 2], [3, 4]])B = np.array([ [5, 6], [7, 8]])result = A * Bprint("Resultado:\n", result)
Ejemplo en PyTorch
import torchx = torch.tensor([1.0, 2.0, 3.0])y = torch.tensor([4.0, 5.0, 6.0])result = x * yprint("Hadamard:", result)
Ejemplo en backpropagation
import torch# Activacionesa = torch.tensor([0.5, 0.2, 0.8], requires_grad=True)# Gradiente simuladograd = torch.tensor([1.0, 1.0, 1.0])# Derivada de activación (ejemplo)deriv = torch.tensor([1.0, 0.0, 1.0])# Producto Hadamardresult = grad * derivprint("Gradiente final:", result)
Qué muestra este ejemplo
- Operación local
- Uso en gradientes
- Base de muchas operaciones en redes
Errores comunes
Confundir con multiplicación matricial
Son completamente distintas.
Dimensiones incompatibles
Debe ser el mismo tamaño.
Ignorar broadcasting
Puede cambiar el resultado esperado.
Ejemplo conceptual en ML
Entrada: [1, 2, 3]
Máscara: [1, 0, 1]Salida: [1, 0, 3]
👉 Dropout usando Hadamard.
Interpretación profunda
El producto Hadamard permite:
- aplicar transformaciones locales
- controlar flujo de información
- combinar señales
- implementar gradientes
👉 Es una operación simple pero esencial en deep learning.
Conclusión
El producto Hadamard es una operación fundamental que permite multiplicar elementos directamente sin mezclar información global. Es clave en activaciones, gradientes, atención y muchas otras partes de redes neuronales.
👉 Entenderlo es clave para entender cómo fluye la información dentro de un modelo.
Related Concepts
- Producto escalar
- Multiplicación matricial
- Gradiente
- Activación
- Tensor