行列の演算(加算、積、転置、逆行列)

機械学習や強化学習では、大量のデータやその変換・計算を効率的に処理するために**行列(Matrix)**が頻繁に使われます。以下では、行列の基本的な演算「加算、積、転置、逆行列」についてそれぞれ詳しく解説します。


1. 行列の加算(Matrix Addition)

定義
同じ形状(行数と列数が等しい)の行列同士でのみ加算が可能です。対応する要素をそれぞれ加える操作です。


A, B が共に m×n 行列なら、

makefile
C = A + B = [a_ij + b_ij] (各要素ごとの加算)

csharp
A = [1 2] [3 4] B = [5 6] [7 8] A + B = [1+5 2+6] [3+7 4+8] = [6 8] [10 12]

2. 行列の積(Matrix Multiplication)

定義
A(m×n行列)と B(n×p行列)の積 AB は、m×p 行列となります。Aの各行とBの各列の内積(ドット積)で定義されます。

(AB)_{ij} = Σ (A_{ik} × B_{kj}) (k = 1 ~ n)

csharp
A = [1 2] [3 4] (2×2 行列) B = [5 6] [7 8] (2×2 行列) AB = [1×5 + 2×7 1×6 + 2×8] [3×5 + 4×7 3×6 + 4×8] = [19 22] [43 50]

注意点

  • 行列の積は 交換法則が成り立たない(AB ≠ BA)ことがある。

  • 機械学習では、重み行列と特徴ベクトルの積として使われる。


3. 行列の転置(Transpose)

定義
行列の行と列を入れ替える操作です。行列 A の転置を Aᵗ(または A^T)と書きます。

(Aᵗ)_{ij} = A_{ji}

csharp
A = [1 2 3] [4 5 6] Aᵗ = [1 4] [2 5] [3 6]

応用

  • 内積や距離計算、勾配の転置などで利用される。

  • 転置によって列ベクトルと行ベクトルを変換することができる。


4. 逆行列(Inverse Matrix)

定義
行列 A に対して、ある行列 A⁻¹ が存在して、

mathematica
A × A⁻¹ = I (単位行列)

となるとき、A⁻¹ を A の 逆行列と呼びます。ただし、**A が正則(正方行列でかつ行列式 ≠ 0)**である必要があります。

markdown
A = [a b] [c d] A⁻¹ = (1 / (ad - bc)) × [ d -b] [-c a]

制約

  • 逆行列が存在しない(= 特異行列)場合もある。

  • 高次元行列では、数値的に不安定なことがあるため、実際の機械学習では逆行列を直接求めず、擬似逆行列(Moore-Penrose逆行列)LU分解勾配降下法が使われることが多い。


応用例(機械学習・強化学習において)

操作 応用例の一部
行列の加算 バイアス項の追加、重み更新(W = W + ΔW)
行列の積 ニューラルネットワークの順伝播、線形変換
行列の転置 内積計算、逆伝播での勾配の整理
逆行列 線形回帰の解析解(W = (XᵗX)⁻¹Xᵗy)

生成日:2025/06/01