アダマール積とは?
アダマール積は「要素ごとの積(element-wise product)」や「シューア積」とも呼ばれ、同じサイズの2つの行列を成分ごとに掛け合わせる演算です。通常の行列の積のように行と列を組み合わせて計算するのではなく、同じ位置にある2つの値をそのまま掛けるだけで出力の各成分が決まります。記号では \(\text{A} \circ \text{B}\) と書き、機械学習・信号処理・画像処理などの分野で幅広く使われています。
この計算ツールの使い方
まず行数と列数を指定し、続いて行列 A と行列 B の値を入力します。1行ぶんの要素を1行に記入し、数値はスペースまたはカンマで区切ってください。入力すると、各成分が \(A_{ij} \times B_{ij}\) となる結果の行列に加えて、全要素の合計値も表示されます。
計算式の解説
m×n の2つの行列 A・B に対して、アダマール積 \(C = \text{A} \circ \text{B}\) は次で定義される m×n 行列です。
$$\left(\text{A} \circ \text{B}\right)_{ij} = A_{ij} \cdot B_{ij}\qquad 1 \le i \le \text{Rows},\; 1 \le j \le \text{Cols}$$両方の行列はまったく同じ形(サイズ)である必要があり、通常の行列の積のような行と列の内積(ドット積)は行いません。
具体例で確認
A = [[1, 2], [3, 4]]、B = [[5, 6], [7, 8]] とします。このとき
$$\text{A} \circ \text{B} = \begin{bmatrix} 1\times 5 & 2\times 6 \\ 3\times 7 & 4\times 8 \end{bmatrix} = \begin{bmatrix} 5 & 12 \\ 21 & 32 \end{bmatrix}$$となります。全要素の合計は \(5 + 12 + 21 + 32 = 70\) です。
よくある質問(FAQ)
通常の行列の積とは何が違いますか? 通常の行列の積は行と列の内積をとる演算で、内側の次元が一致している必要があります。一方アダマール積は同じ位置の成分どうしを掛けるだけで、2つの行列がまったく同じサイズであることが条件です。
行列のサイズが異なる場合はどうなりますか? アダマール積は同じサイズの行列に対してのみ定義されます。本ツールでは、指定された行数・列数に基づいて、足りない要素は 0 で補って計算します。
どんな場面で使われますか? ニューラルネットワーク(ゲーティングやドロップアウトのマスクなど)、共分散の計算、ピクセル単位の画像処理などで広く利用されています。