【DeepLeaning】 行列の積がよくわからない

Deep Learning とは何なのか・・・まったく知らない状態から挑戦してみたいと思います!

行列の積とは

行列の積とは2つ以上の行列を掛け合わせることによって新しい行列を得る計算方法です。
例えば、2つの行列AとBがあった場合、AとBの積をCとすると、

C = AB

と表記されます。

ただし、行列Aの列数と行列Bの行数が一致する必要があります。

行列Aがm行n列で、行列Bがn行p列の場合、Cの行数はm、列数はpとなります。

行列Cの(i, j)成分は、Aのi行とBのj列の内積に相当します。つまり、以下の式で表されます。

C(i, j) = A(i,1)B(1,j) + A(i,2)B(2,j) + … + A(i,n)B(n,j)

このように、行列の積は、各成分ごとに内積を計算していくことで得られます。

行列の積は、線形代数において非常に重要な概念であり多くの応用分野において利用されています。

行列の積のお仕事いろいろ

行列の積が誕生した理由は線形代数の理論の発展によるものです。
線形代数は、ベクトルや行列を使って数学的な問題を扱う理論であり現代科学技術の基礎となる分野です。

行列の積は行列同士を掛け算することで新しい行列を作る方法です。
行列の積は、線形変換を表現する際に重要な役割を果たします。
線形変換は、例えば回転や拡大縮小など数学的な対象を変形させるもので行列の積を使うことで簡単に表現できます。

行列の積を使って線形変換ができることを初めて発見した人は、イギリスの数学者アーサー・ケイリー(Arthur Cayley)と言われています。
彼は19世紀に線形代数の理論を発展させ、行列を用いた線形変換の理論を確立しました。

また、行列の積は連立方程式を解く際にも利用されます。
連立方程式とは、複数の方程式からなる式の集まりであり、それらを解くことで、未知数の値を求めることができます。
行列の積を使うことで、複雑な連立方程式を簡単に解くことができます。

連立方程式を解く方法を初めて確立したのは、またしてもイギリスの数学者アーサー・ケイリー(Arthur Cayley)。そして
ドイツの数学者ヘルマン・グスタフ・グラスマン(Hermann Grassmann)です。
こちらも、19世紀に線形代数の理論を発展させ行列を使って連立方程式を解く方法を提唱しました。

さらに、行列の積は統計学や機械学習などの分野でも重要な役割を果たします。
例えば、データの分析や画像処理などに用いられます。

行列の積を使って統計学や機械学習で有効な効果が期待できることを初めて発表した人物は、現在では「データ解析の父」とも呼ばれるジョン・チュー(John Tukey)です。
彼は20世紀半ばから多変量解析や時間変数の分析、スペクトル解析など、様々な統計学的手法を開発し、その中で行列の積を用いることが有効であることを指摘しました。
また、機械学習においても行列の積を用いた手法が多く開発されその中でも特に代表的なのは、ニューラルネットワークです。
これは、多層の行列の積を用いて非線形の関数を近似する手法であり、深層学習などに応用されています。

行列の積の計算の疑問

なぜ行列Aの列数と行列Bの行数が一致する必要があるのでしょうか?

「行列Aの列数と行列Bの行数が一致」という条件が満たされていない場合、単純い行列の積を計算することができません。
なぜなら掛け合わせることのできない要素が存在するからです。

例えば、行列Aがm行n列の行列で行列Bがk行l列の行列である場合、nとkの値が一致しないため、Aのn列目とBのk行目の要素を掛け合わせることができません。
そのため行列の積を計算するためには、行列Aの列数と行列Bの行数が一致する必要があるのです。

DeepLeaninの世界の行列の積

Deep Learningにおいても、行列Aの列数と行列Bの行数が一致する必要があります。
つまり、行列の積の計算においてはこの前提が崩れるような場合は処理ができません

一方で、Deep Learningの世界においても、現実のデータに対しては完全に前提が成り立たない場合があることは確かです。
そのため、データの前処理やモデルの構築など、前提が成り立たない場合でも処理可能な手法が存在します。

例えば、畳み込みニューラルネットワーク (CNN) では、入力データを2次元の行列として扱います。
しかし、入力データが必ずしも正方形ではなく縦横のサイズが異なる場合があります。
この場合、行列の積を直接的に扱うことはできませんが、畳み込み演算を用いることで、データの形状を維持しながら処理することができます。

また、行列の積を直接的に扱うことができない場合でも、行列の分解や転置などの手法を用いて、データを変換することで処理可能な場合があります。
ただし、こうした処理を行う場合は前提が成り立たなくなったことがモデルの性能にどのような影響を与えるかを検証する必要があります。