1. Home
  2. プログラマーのための線形代数
  3. 行列の操作
  4. 逆行列

逆行列

ここでは機械学習でよく行うことになる行列操作の一つである逆行列について解説します。

当ページで学ぶこと

  • 逆行列とは
  • Pythonで逆行列

逆行列とは

逆行列 \(A^{-1}\)とは、元の行列 \(A\) と掛けると単位行列 \(I\) になる行列のことです。数学的な定義は以下の通りです。

\[
AA^{-1}=A^{-1}A=I
\]

具体例を見てみましょう。

\[\begin{eqnarray}
\overset{A}{
\begin{pmatrix}
1 & 1 \\
3 & 2
\end{pmatrix}
}
\overset{A^{-1}}{
\begin{pmatrix}
-2 & 1 \\
3 & -1
\end{pmatrix}
}
=
\overset{A^{-1}}{
\begin{pmatrix}
-2 & 1 \\
3 & -1
\end{pmatrix}
}
\overset{A}{
\begin{pmatrix}
1 & 1\\
3 & 2
\end{pmatrix}
}
=
\overset{I}{
\begin{pmatrix}
1 & 0\\
0 & 1
\end{pmatrix}
}
\end{eqnarray}\]

これは行列 \(A\) で変形したベクトル(データ)に、あらためて \(A^{-1}\) を掛けるとベクトル(データ)は元に戻るということを意味しています。つまり一度ある行列によって線形変換したベクトルを元に戻すものが逆行列です。

機械学習においては、線形回帰における係数ベクトルを求めるなど、行列の連立方程式で未知のベクトルを求めたいときによく使われます。

なお、すべての行列で逆行列化が可能なわけではありません。あくまでも、掛け合わせることで、単位行列となるような行列が存在するもののみ逆行列化が可能です。具体的には、逆行列が存在する行列は正則行列(行列式の値が 0 以外の行列)のみです。

ポイント

  • 逆行列 \(A^{-1}\) とは、ある行列 \(A\) と掛け合わせると単位行列 \(I\) になるような行列のこと
  • 逆行列が存在する行列は正則行列のみで、非正則行列には逆行列は存在しない

Python で逆行列

Python では NumPy の linalg.inv() 関数を使って、既存の行列の逆行列を作成することができます。

In [1]:
# NumPy のインポート
import numpy as np

# 行列の定義
A = np.array([[1.0,2.0],[3.0,4.0]])
print(A)
[[1. 2.]
 [3. 4.]]
In [2]:
# 逆行列
B = np.linalg.inv(A)
print(B)
[[-2.   1. ]
 [ 1.5 -0.5]]

行列と逆行列を掛け合わせると以下のように単位行列になります。

In [3]:
# 行列と逆行列のドット積
I = A @ B
print(I)
[[1.00000000e+00 1.11022302e-16]
 [0.00000000e+00 1.00000000e+00]]

e-16 などとなっているのは \(10^{-16}\) ということを意味しています。これは 0 を表していることと同じことになります。こういう表記になってしまうのは Python の小数点以下の精度の問題です。