アダマール積とは

アダマール積(Hadamard Product)とは、線形代数学において、同じ行数と列数を持つ2つの行列(または同じ次元を持つ2つのベクトル)に対して、対応する位置にある要素同士をそれぞれ乗算して得られる新しい行列(またはベクトル)を生成する演算を指します。要素ごとの積(Element-wise Product)とも呼ばれ、通常の行列積とは異なる特性を持ちます。

アダマール積の基本的な概念

アダマール積は、数学者ジャック・アダマールにちなんで名付けられました。通常の行列積が線形変換の合成を表すのに対し、アダマール積は各要素が独立してスケーリングされるような操作を表現する際に用いられます。

主な概念は以下の通りです。

  1. 要素ごとの積: 行列またはベクトルの対応する位置にある要素同士を一つずつ乗算します。
  2. 同サイズであること: アダマール積を計算するためには、演算対象となる2つの行列またはベクトルが、全く同じ行数と列数(または次元)を持っている必要があります。サイズが異なる場合は、アダマール積を計算することはできません。
  3. 結果のサイズ: 結果として得られる行列またはベクトルのサイズは、元の行列またはベクトルと同じサイズになります。

アダマール積の計算式と例

2つの行列 AとBが同じサイズm×nであるとします。A=​a11​a21​⋮am1​​a12​a22​⋮am2​​……⋱…​a1n​a2n​⋮amn​​​[/LaTeX]

B=<img src="">​b11​b21​⋮bm1​​b12​b22​⋮bm2​​……⋱…​b1n​b2n​⋮bmn​​<img src="">​

このとき、アダマール積 A∘B(または A⊙B)は、要素 (A∘B)ij​=aij​×bij​ で定義されます。

A∘B=<img src="">​a11​b11​a21​b21​⋮am1​bm1​​a12​b12​a22​b22​⋮am2​bm2​​……⋱…​a1n​b1n​a2n​b2n​⋮amn​bmn​​<img src="">​

具体例:

行列 AB が次のように与えられたとします。

A=(13​24​)

B=(57​68​)

このとき、アダマール積 A∘B は、

A∘B=(1×53×7​2×64×8​)=(521​1232​)

となります。

ベクトルでの例:

ベクトル uv が次のように与えられたとします。

u=<img src="">​123​<img src="">​

v=<img src="">​456​<img src="">​

このとき、アダマール積 u∘v は、

u∘v=<img src="">​1×42×53×6​<img src="">​=<img src="">​41018​<img src="">​

となります。

アダマール積の特性

  • 交換法則: A∘B=B∘A が成り立ちます。
  • 結合法則: A∘(B∘C)=(A∘B)∘C が成り立ちます。
  • 分配法則: A∘(B+C)=A∘B+A∘C が成り立ちます。
  • 単位元: 全ての要素が1である行列(またはベクトル)J がアダマール積の単位元となります。つまり、A∘J=A です。

これらの特性は通常の行列積とは異なります。特に、通常の行列積は一般的に交換法則が成り立ちません。

アダマール積の応用分野

アダマール積は、そのシンプルさと要素ごとの独立した操作性から、様々な分野で活用されています。

  1. 機械学習・深層学習:
    • 活性化関数との組み合わせ: ニューラルネットワークにおいて、ある層の出力と活性化関数の適用(要素ごとに行われる)の後に、重み付けされたマスクを適用する際などに利用されることがあります。
    • Attention機構: TransformerモデルなどのAttention機構において、特定の要素に重みを適用する際に、要素ごとの積として表現されることがあります。
    • マスク処理: 画像処理において、特定の領域を強調したり、無視したりするためのマスクを適用する際に、アダマール積が用いられます。例えば、ある画像(行列)と、特定の部分を抽出するための0と1のマスク(行列)のアダマール積を取ることで、その部分だけを抽出できます。
  2. 画像処理:
    • 画像合成・フィルタリング: 画像のピクセル値に対する要素ごとの操作(例:輝度調整、コントラスト調整、特定の色チャネルの強調)に利用されます。
    • ノイズ除去: 特定のノイズパターンを持つマスクとのアダマール積により、ノイズ成分を抑制する手法があります。
  3. 統計学:
    • 分散共分散行列の操作: 統計モデリングにおいて、分散共分散行列の特定の要素を操作する際に用いられることがあります。
  4. 信号処理:
    • フィルタリング: 特定の周波数成分を強調したり除去したりするデジタルフィルタにおいて、周波数領域での要素ごとの積として表現されることがあります。
  5. 量子情報科学:
    • 量子計算や量子情報理論において、アダマールゲートや特定の量子状態の操作に関連して、要素ごとの積が用いられることがあります。

アダマール積(Hadamard Product)は、同じサイズの2つの行列またはベクトルの対応する要素同士を乗算して新しい行列またはベクトルを生成する演算です。要素ごとの積とも呼ばれ、通常の行列積とは異なり、交換法則や結合法則などが成り立ちます。そのシンプルさと各要素が独立して操作される特性から、機械学習や深層学習における活性化関数の適用やマスク処理、画像処理におけるフィルタリングや合成、統計学、信号処理など、多岐にわたる分野で重要なツールとして活用されています。

関連用語

深層学習 | 今更聞けないIT用語集
自然言語処理 | 今更聞けないIT用語集
AIソリューション

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。