Producte de Hadamard de matrius

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 Plantilla:Math és el producte dels elements Plantilla:Math 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.
El producte de Hadamard és associatiu i distributiu. A diferència del producte matricial, també és commutatiu.[2]
Definició
Donades dues matrius Plantilla:Math i Plantilla:Math, ambdues de mida Plantilla:Math, es defineix el producte de Hadamard (o )[3][4][5][6] com la matriu Plantilla:Math que té per elements el producte dels elements corresponents de Plantilla:Math i Plantilla:Mathː
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
no està definit.
Exemple
Per exemple, el producte de Hadamard de dues matrius A i B de dimensions 3 × 3 és
Propietats
- 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 Plantilla:Math és una matriu Plantilla:Math 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 Plantilla:Math i Plantilla:Math, i les matrius diagonals corresponents Plantilla:Math i Plantilla:Math que tenen aquests vectors com a diagonals principals, es compleix la identitat següent:[8]Plantilla:Rp
- on Plantilla:Math denota el conjugat transposat de Plantilla:Math. En particular, prenent Plantilla:Math 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'Plantilla:Math, on el superíndex T denota la matriu transposada. Per matrius Plantilla:Mvar i Plantilla:Mvar quadrades tenim un resultat relacionat, que és que les sumes per fila del producte de Hadamard són iguals als elements diagonals d'Plantilla:Math:[9]
- Similarment,
- El producte de Hadamard és una submatriu principal del producte de Kronecker.
- El producte de Hadamard satisfà la desigualtat de rang
- Si Plantilla:Math i Plantilla:Math són matrius definides positives, llavors la desigualtat següent és vàlida:[10]
- on Plantilla:Math és el i-èssim valor propi més gran d'A.
- Si Plantilla:Mvar i Plantilla:Mvar són matrius diagonals, aleshores[11]
- 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:
La propietat del producte mixt
- , on denota el producte de Kronecker.
- , on denota el producte de Khatri-Rao per files.[12]
- , on denota el producte de Khatri–Rao per columnes.
Teorema del producte de Schur
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 Plantilla:Mvar i Plantilla:Mvar, també es sap que el determinant del seu producte de Hadamard és més gran o igual que el producte dels seus determinants respectius:
En llenguatges de programació
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 Plantilla:Mono (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.
Aplicacions
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 Plantilla:Citació necessària.
També s'utilitza en el camp de l'aprenentatge automàtic, per exemple per descriure l'arquitectura de xarxes neuronals recurrents com GRUs o LSTMsPlantilla:Citació necessària.
Operacions anàlogues
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]
I també la divisió de Hadamard:[17][18]
Producte de Hadamard per blocs

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 (
)ː
Exemple
Si
aleshores
Propietats principals
- ,[12]
- ,
on denota el producte de Khatri-Rao per files,
- , on és un vector.
Aplicacions
El producte de Hadamard per blocs s'utilitza en la teoria tensor-matriu de les agrupacions d'antenes digitals.[12] També s'utilitza en models de xarxes neuronals artificials, especialment en capes convolucionals.[19]
Referències
Vegeu també
- ↑ Plantilla:Ref-publicació
- ↑ 2,0 2,1 Plantilla:Ref-web
- ↑ Plantilla:Ref-web
- ↑ Plantilla:Ref-web
- ↑ Plantilla:Ref-web
- ↑ Plantilla:Ref-web
- ↑ 7,0 7,1 Plantilla:Ref-web
- ↑ Plantilla:Ref-llibre
- ↑ 9,0 9,1 Plantilla:Citar ref
- ↑ Plantilla:Ref-publicació
- ↑ Plantilla:Ref-web
- ↑ 12,0 12,1 12,2 Plantilla:Ref-publicació
- ↑ Plantilla:Ref-web
- ↑ Plantilla:Ref-web
- ↑ Plantilla:Format ref https://docs.sympy.org/latest/modules/matrices/common.html?highlight=multiply_elementwise#sympy.matrices.common.MatrixCommon.multiply Plantilla:Webarchive
- ↑ 16,0 16,1 Plantilla:Ref-publicació
- ↑ Plantilla:Ref-web
- ↑ Plantilla:Ref-llibre
- ↑ Plantilla:Ref-publicació