意味 同じ次元m × nの 2 つの行列 A とB に対して、アダマール積はA ⊙ B {\displaystyle A\odot B} (時々A ∘ B {\displaystyle A\circ B} ) [ 4 ] [ 5 ] [ 6 ] はオペランドと同じ次元の行列で、要素は[ 3 ]で与えられます。
( A ⊙ B ) 私 j = ( A ) 私 j ( B ) 私 j 。 {\displaystyle (A\odot B)_{ij}=(A)_{ij}(B)_{ij}.} 異なる次元の行列(m × n とp × q 、ただしm ≠ p またはn ≠ q )の場合、アダマール積は定義されません。
任意の2 × 3行列2つに対するアダマール積の例:
[ 2 3 1 0 8 − 2 ] ⊙ [ 3 1 4 7 9 5 ] = [ 2 × 3 3 × 1 1 × 4 0 × 7 8 × 9 − 2 × 5 ] = [ 6 3 4 0 72 − 10 ] 。 {\displaystyle {\begin{bmatrix}2&3&1\\0&8&-2\end{bmatrix}}\odot {\begin{bmatrix}3&1&4\\7&9&5\end{bmatrix}}={\begin{bmatrix}2\times 3&3\times 1&1\times 4\\0\times 7&8\times 9&-2\times 5\end{bmatrix}}={\begin{bmatrix}6&3&4\\0&72&-10\end{bmatrix}}.}
物件 アダマール積は、可 換環を扱う場合、可換性、結合性 、および加法に関する分配 法則を満たします。つまり、A 、B 、C が同じサイズの行列で、k がスカラーである場合、次のようになります。A ⊙ B = B ⊙ A 、 A ⊙ ( B ⊙ C ) = ( A ⊙ B ) ⊙ C 、 A ⊙ ( B + C ) = A ⊙ B + A ⊙ C 、 ( k A ) ⊙ B = A ⊙ ( k B ) = k ( A ⊙ B ) 、 A ⊙ 0 = 0 ⊙ A = 0. {\displaystyle {\begin{aligned}A\odot B&=B\odot A,\\A\odot (B\odot C)&=(A\odot B)\odot C,\\A\odot (B+C)&=A\odot B+A\odot C,\\(kA)\odot B&=A\odot (kB)=k(A\odot B),\\A\odot 0&=0\odot A=0.\end{aligned}}} 2 つのm × n 行列のアダマール乗算における単位行列は、すべての要素が 1 に等しい m × n 行列です。これは、通常の行列乗算における単位行列 とは異なります。通常の行列乗算では、主対角要素のみが 1 に等しくなります。さらに、行列がアダマール乗算において逆行列を持つのは、すべての要素が可逆である場合、または体上では、どの要素も 0 に等しくない場合のみです。[ 7 ] ベクトルx とy 、およびこれらのベクトルを主対角成分とする対応する対角行列D x とD y に対して、次の恒等式が成り立つ。[ 1 ] : 479x * ( A ⊙ B ) y = tr ( D x * A D y B T ) 、 {\displaystyle \mathbf {x} ^{*}(A\odot B)\mathbf {y} =\演算子名 {tr} \left({D}_{\mathbf {x} }^{*}A{D}_{\mathbf {y} }{B}^{\mathsf {T}}\right),} ここで、x * は x の共役転置 を表します。特に、1 のベクトルを使用すると、これは、アダマール積のすべての要素の合計がAB T のトレース であることを示しています。ここで、上付き文字 T は行列の転置 を表します。つまり、tr ( A B T ) = 1 T ( A ⊙ B ) 1 {\displaystyle \operatorname {tr} \left(AB^{\mathsf {T}}\right)=\mathbf {1} ^{\mathsf {T}}\left(A\odot B\right)\mathbf {1} } 正方形A とB に関する関連結果として、それらのアダマール積の行和はAB T の対角要素である: [ 8 ] ∑ 私 ( A ⊙ B ) 私 j = ( B T A ) j j = ( A B T ) 私 私 。 {\displaystyle \sum _{i}(A\odot B)_{ij}=\left(B^{\mathsf {T}}A\right)_{jj}=\left(AB^{\mathsf {T}}\right)_{ii}.} 同様に、( y x * ) ⊙ A = D y A D x * 。 {\displaystyle (\mathbf {y} \mathbf {x} ^{*})\odot A=D_{\mathbf {y} }AD_{\mathbf {x} }^{*}.} さらに、アダマール行列とベクトルの積は次のように表すことができます。( A ⊙ B ) y = 診断 ( A D y B T ) 、 {\displaystyle (A\odot B)\mathbf {y} =\演算子名 {diag} (AD_{\mathbf {y} }B^{\mathsf {T}}),} どこ診断 ( M ) {\displaystyle \operatorname {diag} (M)} は、行列M の対角線から形成されるベクトルです。y = 1 {\displaystyle \mathbf {y} =\mathbf {1} } これは、( A ⊙ B ) 1 = 診断 ( A B T ) {\displaystyle (A\odot B)\mathbf {1} =\operatorname {diag} (AB^{\mathsf {T}})} アダマール積はクロネッカー積 の主小行列 である。[ 9 ] [ 10 ] [ 11 ] アダマール積はランク不等式を満たすランク ( A ⊙ B ) ≤ ランク ( A ) ランク ( B ) 。 \displaystyle \operatorname {rank} (A\odot B)\leq \operatorname {rank} (A)\operatorname {rank} (B). A とBが 正定値行列 である場合、アダマール積に関する次の不等式が成り立つ。[ 12 ] ∏ 私 = k n λ 私 ( A ⊙ B ) ≥ ∏ 私 = k n λ 私 ( A B ) 、 k = 1 、 … 、 n 、 {\displaystyle \prod _{i=k}^{n}\lambda _{i}(A\odot B)\geq \prod _{i=k}^{n}\lambda _{i}(AB),\quad k=1,\ldots ,n,} ここで、λ i ( A )はA のi 番目に大きい固有値 です。D とEが 対角行列 である場合、[ 13 ] D ( A ⊙ B ) E = ( D A E ) ⊙ B = ( D A ) ⊙ ( B E ) = ( A E ) ⊙ ( D B ) = A ⊙ ( D B E ) 。 {\displaystyle {\begin{aligned}D(A\odot B)E&=(DAE)\odot B=(DA)\odot (BE)\\&=(AE)\odot (DB)=A\odot (DBE).\end{aligned}}} 2つのベクトルのアダマール積1 {\displaystyle \mathbf {a} } そしてb {\displaystyle \mathbf {b} } これは、一方のベクトルの対応する対角行列 と他方のベクトルとの行列乗算と同じです。1 ⊙ b = D 1 b = D b 1 。 {\displaystyle \mathbf {a} \odot \mathbf {b} =D_{\mathbf {a} }\mathbf {b} =D_{\mathbf {b} }\mathbf {a} .} の診断 {\displaystyle \operatorname {diag} } ベクトルを対角行列に変換する演算子は、アダマール積を用いて次のように表すことができる。 診断 ( 1 ) = ( 1 1 T ) ⊙ 私 、 {\displaystyle \operatorname {diag} (\mathbf {a} )=(\mathbf {a} \mathbf {1} ^{T})\odot I,} どこ1 {\displaystyle \mathbf {1} } は要素を持つ定数ベクトルです1 {\displaystyle 1} 、 そして私 {\displaystyle I} は単位行列 です。
シュール積定理 2 つの正定値行列 のアダマール積は正定値行列です。[ 3 ] [ 8 ] これは、ロシアの数学者イサイ・シュール にちなんでシュール積定理として知られています。 [ 7 ] 2 つの正定値行列A とBについては、それらのアダマール積の 行列式は 、それぞれの行列式の積以上であることも知られています。 [ 8 ] 検出 ( A ⊙ B ) ≥ 検出 ( A ) 検出 ( B ) 。 {\displaystyle \det({A}\odot {B})\geq \det({A})\det({B})。}
類似の操作 他のアダマール演算も数学文献に見られる[ 15 ] 、すなわちアダマール根 とアダマールべき乗 (分数指数のため実質的には同じもの)は、次のような行列に対して定義される。
のために B = A ∘ 2 B 私 j = A 私 j 2 {\displaystyle {\begin{aligned}{B}&={A}^{\circ 2}\\B_{ij}&={A_{ij}}^{2}\end{aligned}}}
そして B = A ∘ 1 2 B 私 j = A 私 j 1 2 {\displaystyle {\begin{aligned}{B}&={A}^{\circ {\frac {1}{2}}}\\B_{ij}&={A_{ij}}^{\frac {1}{2}}\end{aligned}}}
のアダマール逆 行列は次のようになります。 [ 15 ] B = A ∘ − 1 B 私 j = A 私 j − 1 {\displaystyle {\begin{aligned}{B}&={A}^{\circ -1}\\B_{ij}&={A_{ij}}^{-1}\end{aligned}}}
Aアダマール分割は 次のように定義されます。 [ 16 ] [ 17 ]
C = A ⊘ B C 私 j = A 私 j B 私 j {\displaystyle {\begin{aligned}{C}&={A}\oslash {B}\\C_{ij}&={\frac {A_{ij}}{B_{ij}}}\end{aligned}}}
プログラミング言語では ほとんどの科学計算や数値計算のプログラミング言語 には、様々な名称でアダマール積が含まれています。
MATLAB では、アダマール積は「ドット乗算」としてa .* b、または関数呼び出しとして表現されますtimes(a, b)。[ 18 ] また、例えば演算子a .^ bやなど、類似のドット演算子もありますa ./ b。[ 19 ] *このメカニズムにより、と^をそれぞれ行列乗算と行列指数用に予約することが可能です。
プログラミング言語Julia はMATLAB と同様の構文を持ち、アダマール乗算は ブロードキャスト乗算 と呼ばれ、 で表されa .* b、他の演算子も同様に要素ごとに定義され、たとえばアダマールべき乗は を使用しますa .^ b。[ 20 ] しかし、MATLAB とは異なり、Julia ではこの「ドット」構文は、任意の関数を要素ごとに適用できる汎用ブロードキャスト演算子. で一般化されています。これには、二項演算子 (前述の乗算やべき乗、クロネッカー積などの他の二項演算子) と、!やなどの単項演算子の両方が含まれます。したがって、前置記法 √の任意の関数はとして適用できます。[ 21 ] ff.(x)
Python に は組み込みの配列サポートがないため、表記が不整合または矛盾します。NumPy数値ライブラリは、またはをアダマール積として解釈し、またはを行列積に使用します。SymPy記号ライブラリでは、 配列オブジェクトをまたはのいずれかとして乗算すると 、行列積が生成されます。アダマール 積は、メソッド呼び出しで取得できます。[ 22 ] 一部の Python パッケージには、などのメソッド、またはPandas メソッドを使用してアダマールべき乗をサポートする機能が含まれています。a*ba.multiply(b)a@ba.matmul(b)a*ba@ba.multiply_elementwise(b)np.power(a, b)a.pow(b)
C++では、Eigenライブラリは Matrix cwiseProductクラスのメンバ関数( )を提供しますが、Armadillo ライブラリは演算子を使用して簡潔な式を作成します(;は行列積です)。a.cwiseProduct(b)%a % ba * b
GAUSS やHP Prime では、この演算は配列乗算と呼ばれています。
Fortran 、R 、APL 、J 、およびWolfram Language (Mathematica )では、乗算演算子*またははアダマール積を×適用しますが、行列積はそれぞれ、、、、、を使用して記述さmatmulれ%*%ます。+.×+/ .*.
Mapleプログラミング言語 では、行列とベクトルに対する乗算演算子は*定義されていません。行列積は で記述され.、アダマール積は で取得できます*~。( はJuliaの~と同様の「ブロードキャスト演算子」です.。)
R パッケージmatrixcalc は、数値行列またはベクトルのアダマール積を計算する関数を導入していますhadamard.prod()。[ 23 ]
コンピュータ代数システムMaximaは .、行列乗算と*アダマール積の計算にこのシステムを使用しています。
浸透型フェイス製品 行列の貫通面積 V. Slyusar の定義によれば、p × g 行列の貫通面積はA {\displaystyle {A}} およびn 次元行列B {\displaystyle {B}} ( n > 1) p × g ブロック (B = [ B n ] {\displaystyle {B}=[B_{n}]} )はサイズの行列ですB {\displaystyle {B}} 形式: [ 27 ] A [ ∘ ] B = [ A ∘ B 1 A ∘ B 2 ⋯ A ∘ B n ] 。 {\displaystyle {A}[\circ ]{B}=\left[{\begin{array}{c | c | c | c }{A}\circ {B}_{1}&{A}\circ {B}_{2}&\cdots &{A}\circ {B}_{n}\end{array}}\right].}
例 もし A = [ 1 2 3 4 5 6 7 8 9 ] 、 B = [ B 1 B 2 B 3 ] = [ 1 4 7 2 8 14 3 12 21 8 20 5 10 25 40 12 30 6 2 8 3 2 4 2 7 3 9 ] {\displaystyle {A}={\begin{bmatrix}1&2&3\\4&5&6\\7&8&9\end{bmatrix}},\quad {B}=\left[{\begin{array}{c | c | c }{B}_{1}&{B}_{2}&{B}_{3}\end{array}}\right]=\left[{\begin{array}{c c c | c c c | c c c }1&4&7&2&8&14&3&12&21\\8&20&5&10&25&40&12&30&6\\2&8&3&2&4&2&7&3&9\end{array}}\right]}
それから
A [ ∘ ] B = [ 1 8 21 2 16 42 3 24 63 32 100 30 40 125 240 48 150 36 14 64 27 14 32 18 49 24 81 ] 。 {\displaystyle {A}[\circ ]{B}=\left[{\begin{array}{c c c | c c c | c c c }1&8&21&2&16&42&3&24&63\\32&100&30&40&125&240&48&150&36\\14&64&27&14&32&18&49&24&81\end{array}}\right].}
参考文献 1 2 Horn, Roger A.; Johnson, Charles R. (2012).行列解析 . Cambridge University Press. ↑ デイビス、チャンドラー (1962)。 「シュール製品運用の規範」。 数学数学 。 4 (1): 343–44 . 土井 : 10.1007/bf01386329 。 S2CID 121027182 。 1 2 3 Million, Elizabeth (2007 年 4 月 12 日). 「アダマール積」 (PDF) . buzzard.ups.edu . 2020 年 9 月 6 日 取得 . ↑ 「アダマール積 - 機械学習用語集 」 .machinelearning.wtf . ↑ 「線形代数 - 円の中の点は何を意味するのか?」 。 Mathematics Stack Exchange 。 ↑ 「要素ごとの(またはポイントごとの)演算表記法?」 。 Mathematics Stack Exchange 。 1 2 ミリオン、エリザベス。 「アダマール積」 (PDF) 。 2012年 1月2日 取得 。 1 2 3 Styan, George PH (1973), "Hadamard Products and Multivariate Statistical Analysis", Linear Algebra and Its Applications , 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 and other matrix products". International Journal of Information and Systems Sciences . 4 (1): 160– 177. ↑ 劉双哲。レイバ、ヴィクトル。荘、ダン。マー、ティフェン。フィゲロア・スニガ、ホルヘ I. (2022)。 「多変量線形モデルおよびその診断への応用を伴う行列微分積分」 。 多変量解析ジャーナル 。 188 104849. doi : 10.1016/j.jmva.2021.104849 。 S2CID 239598156 。 ↑ 劉双哲。トレンクラー、ゲッツ。コロ、トゥヌ。フォン・ローゼン、ディートリッヒ。バクサラリー、オスカー・マリア(2023)。 「ハインツ・ノイデッカー教授と行列微分積分」。 統計論文 。 65 (4): 2605–2639 。 土井 : 10.1007/s00362-023-01499-w 。 ↑ Hiai, Fumio; Lin, Minghua (2017年2月). 「アダマール積を含む固有値不等式について」 . 線形代数とその応用 . 515 : 313– 320. doi : 10.1016/j.laa.2016.11.017 . ↑ 「プロジェクト」 (PDF) . buzzard.ups.edu. 2007 . 2019-12-18 に取得. ↑ Slyusar, VI (1998). "レーダーアプリケーションにおけるマトリックス内の最終製品" (PDF) . Radioelectronics and Communications Systems . 41 (3): 50– 53. 1 2 Reams, Robert (1999). "Hadamard inverses, square roots and products of almost semidefinite matrices" . Linear Algebra and Its Applications . 288 : 35–43 . doi : 10.1016/S0024-3795(98)10162-3 . ↑ Wetzstein, Gordon; Lanman, Douglas; Hirsch, Matthew; Raskar, Ramesh. "補足資料: テンソルディスプレイ: 指向性バックライト付き多層ディスプレイを使用した圧縮光場合成" (PDF) . MIT Media Lab . 2021年5月11日に オリジナル (PDF) からアーカイブ済み. 2016年10月18日 取得 . ↑ Cyganek, Boguslaw (2013). デジタル画像における物体検出と認識:理論と実践 . John Wiley & Sons. p. 109. ISBN 9781118618363 。↑ 「MATLAB の times 関数」 。 ↑ 「配列演算と行列演算 」 ↑ 「ベクトル化されたドット演算子」 。 2024年 1月31日 取得 。 ↑ 「関数のベクトル化のためのドット構文」 。 2024年 1月31日 取得 。 ↑ 「共通行列 — SymPy 1.9 ドキュメント」 。 2021年8月2日に オリジナル からアーカイブされました 。 2021年5月4日 に取得。 ↑ 「行列乗算」 . R入門 . Rプロジェクト統計計算. 2013年5月16日. 2013年 8月24日 取得 . ↑ Sak, Haşim; Senior, Andrew; Beaufays, Françoise (2014-02-05). "大規模語彙音声認識のための長短期記憶に基づくリカレントニューラルネットワークアーキテクチャ". arXiv : 1402.1128 [ cs.NE ]. ↑ Neudecker, Heinz; Liu, Shuangzhe; Polasek, Wolfgang (1995). "アダマール積とその統計学における応用". Statistics . 26 (4): 365–373 . doi : 10.1080/02331889508802503 . ↑ Neudecker, Heinz; Liu, Shuangzhe (2001). "ランダム行列のアダマール積のいくつかの統計的性質". Statistical Papers . 42 (4): 475– 487. doi : 10.1007/s003620100074 . S2CID 121385730 . 1 2 3 Slyusar, VI (1998 年 3 月 13 日). 「行列の面積の族とその特性」 (PDF) . Cybernetics and Systems Analysis C/C of Kibernetika I Sistemnyi Analiz. 1999 . 35 (3): 379– 384. doi : 10.1007/BF02733426 . S2CID 119661450 . ↑ Ha D., Dai AM, Le QV (2017). "HyperNetworks". The International Conference on Learning Representations (ICLR) 2017. – Toulon, 2017. : Page 6. arXiv : 1609.09106 . {{cite journal}}: CS1 maint: 複数の名前: 著者リスト (リンク)