En matemàtiques, el producte de Hadamard (també conegut com a producte element a element o producte de Schur)[1] és una operació binària que pren dues matrius de les mateixes dimensions i produeix una altra matriu de la mateixa dimensió, on cada element i, j és el producte dels elements i, j de les dues matrius originals. No s'ha de confondre amb el producte de matrius habitual. El producte de Hadamard és atribuït al matemàtic francès Jacques Hadamard i al matemàtic alemany Issai Schur, dels quals rep el nom.
Donades dues matrius A i B, ambdues de mida m × n, es defineix el producte de Hadamard (o )[3][4][5][6] com la matriu m × n que té per elements el producte dels elements corresponents de A i Bː
Si A i B són matrius de dimensions diferents (és a dir, A és una matriu m × n i B és una matriu p x q, on m ≠ p o n ≠ q), aleshores el producte de Hadamard
El producte de Hadamard és commutatiu (sempre que els elements de les matrius formin part d'un anell commutatiu), associatiu i distributiu respecte la suma. És a dir, si A, B, i C són matrius de la mateixa mida, i k és un escalar, es compleix que
La matriu identitat sota el producte de Hadamard de dues matrius m × n és una matriu m × n on tots els elements són iguals a 1. Així doncs, és diferent de la matriu identitat sota el producte de matrius habitual, on només els elements de la diagonal principal són iguals a 1. A més a més, tenim que una matriu té invers sota el producte de Hadamard si i només si cap dels seus elements és igual a zero.[7]
Donats dos vectors x i y, i les matrius diagonals corresponents Dx i Dy que tenen aquests vectors com a diagonals principals, es compleix la identitat següent:[8]:479
on x* denota el conjugat transposat de x. En particular, prenent x i y com a vectors d'uns, la fórmula anterior ens indica que la suma de tots els elements del producte de Hadamard és la traça d'ABT, on el superíndex T denota la matriu transposada. Per matrius A i B quadrades tenim un resultat relacionat, que és que les sumes per fila del producte de Hadamard són iguals als elements diagonals d'ABT:[9]
El producte de Hadamard de dos vectors i és el mateix que el producte de matrius habitual d'un dels vectors per la matriu diagonal corresponent de l'altre vector:
El producte de Hadamard de dues matrius semidefinides positives dona com a resultat una altra matriu semidefinida positiva.[2][9] Aquest resultat es coneix com el teorema del producte de Schur, en honor del matemàtic rus Issai Schur.[7] Per dues matrius semidefinides positives A i B, també es sap que el determinant del seu producte de Hadamard és més gran o igual que el producte dels seus determinants respectius:
El producte de Hadamard ve implementat a alguns llenguatges de programació sota diversos noms. A MATLAB, Octave, GAUSS i HP Prime, rep el nom de producte d'arrays, i a Julia s'anomena producte d'expansió, amb el símbol .*.[13] A Fortran, R, APL, J i Wolfram (Mathematica), el producte de Hadamard es representa amb l'operador *, mentre que el producte matricial habitual es representa amb la funció matmul, i els operadors %*%, +.×, +/ .* i ., respectivament.[14]
A Python, dins de la llibreria NumPy, al multiplicar dos arrays amb a*b obtenim el producte de Hadamard, mentre que a@b representa el producte matricial habitual. Amb la llibreria simbòlica SymPy, el producte de dos arrays tant mitjançant a*b com amb a@b dona el producte matricial, i el producte de Hadamard s'obté amb a.multiply_elementwise(b).[15]
A C++, la llibreria Eigen conté la funció cwiseProduct per a la classe Matrix (per exemple, a.cwiseProduct(b)), mentre que la llibreria Armadillo utilitza l'operador % per obtenir l'expressió compacte a%b (a*b és el producte habitual de matrius). El paquet informàtic matrixcalc de R introdueix la funció hadamard.prod() per a realitzar el producte de Hadamard de matrius i vectors numèricament.
El producte de Hadamard s'utilitza en algoritmes de compressió amb pèrdues com el JPEG. El pas de descodificació implica un producte element a element, és a dir, el producte de Hadamard [cal citació].
També s'utilitza en el camp de l'aprenentatge automàtic, per exemple per descriure l'arquitectura de xarxes neuronals recurrents com GRUs o LSTMs[cal citació].
A la literatura matemàtica[16] també apareixen altres operacions anàlogues al producte de Hadamard com l'arrel de Hadamard o la potència de Hadamard (que de fet són el mateix, ja que una arrel es pot entendre com una potència amb exponent fraccionari). Igual que el producte de Hadamard, aquestes operacions actuen sobre una matriu element a elementː
Potència de Hadamardː
Arrel de Hadamardː
De la mateixa manera, podem definir la inversa de Hadamard:[16]
Segons la definició de Vadym Slyusar, el producte de Hadamard per blocs (en anglès, penetrating face product) és una generalització del producte de Hadamard entre una matriu de mida p×g i una matriu que es pot dividir en n blocs de mida p×g ()ː
↑Horn, Roger A. Matrix analysis. Cambridge University Press, 2012.
↑ 9,09,1Styan, George P. H. «Hadamard Products and Multivariate Statistical Analysis». Linear Algebra and Its Applications. DOI: 10.1016/0024-3795(73)90023-2.
↑Hiai, Fumio; Lin, Minghua Linear Algebra and Its Applications, 515, 2-2017, pàg. 313–320. DOI: 10.1016/j.laa.2016.11.017 [Consulta: free].