Ugrás a tartalomhoz

Hadamard-szorzat

A Wikiszótárból, a nyitott szótárból

Kiejtés

  • IPA: [ ˈhɒdɒmɒrtsorzɒt]

Főnév

Hadamard-szorzat

  1. (matematika)

A Hadamard-szorzat (vagy elemenkénti szorzás) egy mátrixművelet, amely két azonos méretű mátrixot összeszoroz úgy, hogy az eredmény mátrix egyes elemei az eredeti mátrixok megfelelő elemeinek szorzatai lesznek. Ez a művelet nem keverendő össze a mátrixszorzással, amely mátrixalgebrában használatos.



📌 Definíció

A Hadamard-szorzat két azonos dimenziójú mátrix között értelmezett művelet, amely során a szorzás az egyes elemek között történik, nem a sor- és oszlopösszegek alapján, mint a hagyományos mátrixszorzásban.



🧮 Formális leírás

Legyen és két azonos méretű, -es mátrix. A Hadamard-szorzatot így jelöljük:

Azaz:



🔢 Példa

Legyen:

A Hadamard-szorzatuk:



🎯 Alkalmazási területek

  • Gépi tanulás és mélytanulás: pl. neuronhálók súlyainak frissítésében.
  • Jelfeldolgozás: különböző szűrők alkalmazásánál.
  • Statisztika: kovariancia mátrix elemenkénti kezelése.
  • Numerikus módszerek: mátrixműveletek gyors végrehajtása SIMD vagy GPU használatával.
  • Képfeldolgozás: képpontok maszkolása, szűrések.



🔄 Hadamard vs Mátrixszorzás

Tulajdonság Hadamard-szorzat Mátrixszorzás
Méretfeltétel Azonos méretű mátrixok B oszlopszáma = A sorszáma
Művelet Elemenkénti szorzás Sor-oszlop szorzatok összege
Jelölés vagy
Kommutatív ✔️ ❌ (általában nem)
Asszociatív ✔️ ❌ (általában nem)



📐 Tulajdonságai

  1. Kommutatív:

  2. Asszociatív:

  3. Disztributív a mátrixösszeadásra nézve:

  4. Skalárral való szorzás:

  5. Nem invertálható általában, még akkor sem, ha minden elem ≠ 0.



💻 Implementáció

C++

vector<vector<int>> hadamard(const vector<vector<int>>& A, const vector<vector<int>>& B) {
    int m = A.size(), n = A[0].size();
    vector<vector<int>> result(m, vector<int>(n));
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
            result[i][j] = A[i][j] * B[i][j];
    return result;
}

Python (NumPy)

import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

C = A * B  # Hadamard product

MATLAB

A = [1 2; 3 4];
B = [5 6; 7 8];
C = A .* B;  % Hadamard-szorzat

🔗 Kapcsolódó fogalmak

  • Schur-szorzat: szinonim a Hadamard-szorzattal.
  • Frobenius norm: , szoros kapcsolatban a Hadamard-szorzattal.
  • Tenzorszorzat: teljesen más művelet, ne keverd!
  • Convolution: nem azonos a Hadamard szorzattal; másfajta elemi művelet.
  • Képmátrix maszkolás: gyakran Hadamard-szorzatot használ.



📚 Összefoglalás

A Hadamard-szorzat egy alapvető mátrixművelet, amely hasznos adatelemzés, gépi tanulás, jelfeldolgozás és képfeldolgozás során. Egyszerű és hatékony, különösen element-wise műveletekhez. Bár nem pótolja a mátrixszorzást algebrai értelemben, sok algoritmus szempontjából kulcsfontosságú eszköz.

Fordítások