En matemáticas , el producto de Hadamard (también conocido como producto elemento por elemento , producto entrada por entrada [1] : cap. 5 o producto de Schur [2] ) es una operación binaria que toma dos matrices de las mismas dimensiones y devuelve una matriz de los elementos correspondientes multiplicados. Esta operación puede considerarse una "multiplicación de matrices ingenua" y es diferente del producto de matrices . Se atribuye al matemático francés Jacques Hadamard o al matemático alemán Issai Schur y recibe su nombre de ellos .
Para dos matrices A y B de la misma dimensión m × n , el producto de Hadamard (a veces [4] [5] [6] ) es una matriz de la misma dimensión que los operandos, con elementos dados por [3]
Para matrices de diferentes dimensiones ( m × n y p × q , donde m ≠ p o n ≠ q ), el producto de Hadamard no está definido.
Por ejemplo, el producto de Hadamard para dos matrices arbitrarias de 2 × 3 es:
Propiedades
El producto de Hadamard es conmutativo (cuando se trabaja con un anillo conmutativo), asociativo y distributivo respecto de la suma. Es decir, si A , B y C son matrices del mismo tamaño y k es un escalar:
La matriz identidad bajo la multiplicación de Hadamard de dos matrices m × n es una matriz m × n donde todos los elementos son iguales a 1. Esto es diferente de la matriz identidad bajo la multiplicación de matrices regular, donde solo los elementos de la diagonal principal son iguales a 1. Además, una matriz tiene una inversa bajo la multiplicación de Hadamard si y solo si ninguno de los elementos es igual a cero. [7]
Para los vectores x e y , y las matrices diagonales correspondientes D x y D y con estos vectores como sus diagonales principales, se cumple la siguiente identidad: [1] : 479 donde x * denota la transpuesta conjugada de x . En particular, usando vectores de unos, esto muestra que la suma de todos los elementos en el producto de Hadamard es la traza de AB T donde el superíndice T denota la transpuesta de la matriz , es decir, . Un resultado relacionado para los cuadrados A y B , es que las sumas de filas de su producto de Hadamard son los elementos diagonales de AB T : [8] De manera similar, Además, un producto matriz-vector de Hadamard se puede expresar como: donde es el vector formado a partir de las diagonales de la matriz M .
El producto de Hadamard satisface la desigualdad de rangos
Si A y B son matrices definidas positivas , entonces se cumple la siguiente desigualdad que involucra el producto de Hadamard: [12] donde λ i ( A ) es el i ésimo valor propio más grande de A .
El producto Hadamard de dos vectores es lo mismo que la multiplicación matricial de la matriz diagonal correspondiente de un vector por el otro vector:
El operador de vector a matriz diagonal se puede expresar utilizando el producto de Hadamard como: donde es un vector constante con elementos y es la matriz identidad .
El producto de Hadamard de dos matrices semidefinidas positivas es semidefinida positiva. [3] [8] Esto se conoce como el teorema del producto de Schur, [7] en honor al matemático ruso Issai Schur . Para dos matrices semidefinidas positivas A y B , también se sabe que el determinante de su producto de Hadamard es mayor o igual que el producto de sus respectivos determinantes: [8]
Operaciones análogas
También se ven otras operaciones de Hadamard en la literatura matemática, [15] a saber, laRaíz de Hadamard yPotencia de Hadamard (que en efecto son lo mismo debido a los índices fraccionarios), definida para una matriz tal que:
En MATLAB , el producto Hadamard se expresa como "multiplicación de puntos": a .* b, o la llamada de función: times(a, b). [18] También tiene operadores de punto análogos que incluyen, por ejemplo, los operadores a .^ by a ./ b. [19] Debido a este mecanismo, es posible reservar *y ^para la multiplicación de matrices y exponenciales matriciales, respectivamente.
El lenguaje de programación Julia tiene una sintaxis similar a la de MATLAB, donde la multiplicación de Hadamard se denomina multiplicación de difusión y también se denota con a .* b, y otros operadores se definen de forma análoga elemento por elemento, por ejemplo, las potencias de Hadamard utilizan a .^ b. [20] Pero a diferencia de MATLAB, en Julia esta sintaxis de "punto" se generaliza con un operador de difusión. genérico que puede aplicarse a cualquier función elemento por elemento. Esto incluye tanto operadores binarios (como la multiplicación y la exponenciación antes mencionadas, así como cualquier otro operador binario como el producto de Kronecker), como también operadores unarios como !y √. Por lo tanto, cualquier función en notación de prefijof se puede aplicar como f.(x). [21]
Python no tiene soporte de matriz incorporado, lo que lleva a notaciones inconsistentes o conflictivas. La biblioteca numérica NumPy interpreta a*bo a.multiply(b)como el producto de Hadamard y usa a@bo a.matmul(b)para el producto de matriz. Con la biblioteca simbólica SymPy , la multiplicación de objetos de matriz como a*bo a@bproducirá el producto de matriz. El producto de Hadamard se puede obtener con la llamada al método a.multiply_elementwise(b). [22] Algunos paquetes de Python incluyen soporte para potencias de Hadamard usando métodos como np.power(a, b), o el método Pandasa.pow(b) .
En C++, la biblioteca Eigen proporciona una cwiseProductfunción miembro para la clase Matrix ( ), mientras que la biblioteca Armadillo utiliza el operador para crear expresiones compactas ( ; es un producto de matriz).a.cwiseProduct(b)%a % ba * b
En GAUSS y HP Prime , la operación se conoce como multiplicación de matrices.
En Fortran , R , APL , J y Wolfram Language ( Mathematica ), el operador de multiplicación *o ×aplica el producto de Hadamard, mientras que el producto matricial se escribe utilizando matmul, %*%, +.×, +/ .*y ., respectivamente. El paquete R matrixcalc introduce la función hadamard.prod()para el producto de Hadamard de matrices numéricas o vectores. [23]
Aplicaciones
El producto Hadamard aparece en algoritmos de compresión con pérdida como JPEG . El paso de decodificación implica un producto entrada por entrada, en otras palabras, el producto Hadamard. [ cita requerida ]
En el procesamiento de imágenes , el operador Hadamard se puede utilizar para mejorar, suprimir o enmascarar regiones de la imagen. Una matriz representa la imagen original, la otra actúa como matriz de ponderación o de enmascaramiento.
Se utiliza en la literatura sobre aprendizaje automático , por ejemplo, para describir la arquitectura de redes neuronales recurrentes como GRU o LSTM . [24]
También se utiliza para estudiar las propiedades estadísticas de vectores y matrices aleatorios. [25] [26]
El producto penetrante para el rostro
Según la definición de V. Slyusar, el producto de caras penetrantes de la matriz p × g y la matriz n -dimensional ( n > 1) con bloques p × g ( ) es una matriz de tamaño de la forma: [27]
^ ab Horn, Roger A.; Johnson, Charles R. (2012). Análisis matricial . Cambridge University Press.
^ Davis, Chandler (1962). "La norma de funcionamiento del producto Schur". Matemática numérica . 4 (1): 343–44. doi :10.1007/bf01386329. S2CID 121027182.
^ abc Million, Elizabeth (12 de abril de 2007). "The Hadamard Product" (PDF) . buzzard.ups.edu . Consultado el 6 de septiembre de 2020 .
^ "Producto Hadamard - Glosario de aprendizaje automático". machinelearning.wtf .
^ "álgebra lineal - ¿Qué significa un punto en un círculo?". Intercambio de pila de matemáticas .
^ "¿Notación de operaciones elemento por elemento (o punto por punto)?". Mathematics Stack Exchange .
^ ab Million, Elizabeth. "El producto Hadamard" (PDF) . Consultado el 2 de enero de 2012 .
^ abc Styan, George PH (1973), "Productos de Hadamard y análisis estadístico multivariante", Álgebra lineal y sus aplicaciones , 6 : 217–240, doi :10.1016/0024-3795(73)90023-2, hdl : 10338.dmlcz/102190
^ Liu, Shuangzhe; Trenkler, Götz (2008). "Hadamard, Khatri-Rao, Kronecker y otros productos matriciales". Revista Internacional de Ciencias de la Información y de Sistemas . 4 (1): 160–177.
^ Liu, Shuangzhe; Leiva, Víctor; Zhuang, Dan; Mamá, Tiefeng; Figueroa-Zúñiga, Jorge I. (2022). "Cálculo diferencial matricial con aplicaciones en el modelo lineal multivariado y su diagnóstico". Revista de análisis multivariado . 188 : 104849. doi : 10.1016/j.jmva.2021.104849 . S2CID 239598156.
^ Liu, Shuangzhe; Trenkler, Götz; Kollo, Tõnu; von Rosen, Dietrich; Baksalary, Oskar María (2023). "El profesor Heinz Neudecker y el cálculo diferencial matricial". Artículos estadísticos . doi :10.1007/s00362-023-01499-w.
^ Hiai, Fumio; Lin, Minghua (febrero de 2017). "Sobre una desigualdad de valores propios que involucra el producto de Hadamard". Álgebra lineal y sus aplicaciones . 515 : 313–320. doi : 10.1016/j.laa.2016.11.017 .
^ "Proyecto" (PDF) . buzzard.ups.edu. 2007 . Consultado el 18 de diciembre de 2019 .
^ Slyusar, VI (1998). "Productos finales en matrices en aplicaciones de radar" (PDF) . Radioelectrónica y sistemas de comunicaciones . 41 (3): 50–53.
^ ab Reams, Robert (1999). "Inversas de Hadamard, raíces cuadradas y productos de matrices casi semidefinidas". Álgebra lineal y sus aplicaciones . 288 : 35–43. doi : 10.1016/S0024-3795(98)10162-3 .
^ Wetzstein, Gordon; Lanman, Douglas; Hirsch, Matthew; Raskar, Ramesh. "Material complementario: Pantallas tensoriales: síntesis de campos de luz compresivos utilizando pantallas multicapa con retroiluminación direccional" (PDF) . MIT Media Lab .
^ Cyganek, Boguslaw (2013). Detección y reconocimiento de objetos en imágenes digitales: teoría y práctica. John Wiley & Sons. pág. 109. ISBN9781118618363.
^ "Función de multiplicación de MATLAB".
^ "Operaciones matriciales frente a matrices".
^ "Operadores de "punto" vectorizados" . Consultado el 31 de enero de 2024 .
^ "Sintaxis de puntos para vectorizar funciones" . Consultado el 31 de enero de 2024 .
^ "Matrices comunes — Documentación de SymPy 1.9".
^ "Multiplicación de matrices". Introducción a R. El proyecto R para computación estadística. 16 de mayo de 2013. Consultado el 24 de agosto de 2013 .
^ Sak, Haşim; Senior, Andrew; Beaufays, Françoise (5 de febrero de 2014). "Arquitecturas de redes neuronales recurrentes basadas en memoria de corto y largo plazo para el reconocimiento de voz de vocabulario amplio". arXiv : 1402.1128 [cs.NE].
^ Neudecker, Heinz; Liu, Shuangzhe; Polasek, Wolfgang (1995). "El producto de Hadamard y algunas de sus aplicaciones en estadística". Estadísticas . 26 (4): 365–373. doi :10.1080/02331889508802503.
^ Neudecker, Heinz; Liu, Shuangzhe (2001). "Algunas propiedades estadísticas de los productos Hadamard de matrices aleatorias". Documentos estadísticos . 42 (4): 475–487. doi :10.1007/s003620100074. S2CID 121385730.
^ abc Slyusar, VI (13 de marzo de 1998). "Una familia de productos faciales de matrices y sus propiedades" (PDF) . Análisis de sistemas y cibernética C/C de Kibernetika I Sistemnyi Analiz. 1999 . 35 (3): 379–384. doi :10.1007/BF02733426. S2CID 119661450.
^ Ha D., Dai AM, Le QV (2017). "Hiperredes". Conferencia internacional sobre representaciones del aprendizaje (ICLR) 2017. – Toulon, 2017. : Página 6. arXiv : 1609.09106 .{{cite journal}}: CS1 maint: multiple names: authors list (link)