AI Math - Matrix

15393 ワード

行列の概念と演算,およびベクトル空間におけるそれらの意味を記述する.
連立方程式群の解と線形回帰解析に応用する方法を紹介した.
ベクトル拡張の概念であるマトリクスは、行(row)ベクトルを要素とする2次元配列であり、計算結果はベクトルとは異なることに注意してください.
マトリクス演算は深さ学習の中で最も核心的な演算であり、非常に重要であり、よく使われているため、マトリクス演算のメカニズムと幾何学的意義と機械学習における応用を十分に理解し、スキップしてください.
行列は、ベクトルを要素とする2 D配列です.
x = np.array([[1, -2, 3],
              [7, 5, 0],
              [-2, -1, 2]])

行列のインデックスは行(row)と列(column)です.
固定マトリクス内の特定の行(列)を行(列)ベクトルと呼ぶ



マトリクスの形状が同じで、加算と減算を計算できます.
マトリクス乗算(matrix multiply)は、i第1行ベクトルとj第1列ベクトルとの間の内積が成分であるマトリクスを計算する.
x = np.array([[1, -2, 3],
              [7, 5, 0],
              [-2, -1, 2]])

y = np.array([[0, 1],
              [1, -1],
              [-2, 1]])

# (0 + -2 + -6), (1 + 2 + 3)

x @ y

array([[-8,  6],
       [ 5,  2],
       [-5,  1]])
Nompiのnp内部はi行ベクトルとj行ベクトルの間の内積を成分として計算する行列である.
x = np.array([[1, -2, 3],
              [7, 5, 0],
              [-2, -1, 2]])

y = np.array([[0, 1, -1],
              [1, -1, 0]])

# 1 + -2 + -3
np.inner(x, y)

array([[-5,  3],
       [ 5,  2],
       [-3, -1]])
行列をベクトル空間で使用される演算子として理解する

マトリクス積により、ベクトルを異なる次元の空間に送信できます.
マトリクス積によりモードを抽出したり、データを圧縮したりすることができます.

ある行列Aを逆転させる演算の行列を逆行列と呼び,Aは1である.
逆行列は、行と列の数値が等しい行列式です.
(行列式)が0でない場合のみ計算
x = np.array([[1, -2, 3],
              [7, 5, 0],
              [-2, -1, 2]])

np.linalg.inv(x)

array([[ 0.21276596,  0.0212766 , -0.31914894],
       [-0.29787234,  0.17021277,  0.44680851],
       [ 0.06382979,  0.10638298,  0.40425532]])
x @ np.linalg.inv(x)

array([[ 1.00000000e+00, -1.38777878e-17,  0.00000000e+00],
       [-2.22044605e-16,  1.00000000e+00, -5.55111512e-17],
       [-2.77555756e-17,  0.00000000e+00,  1.00000000e+00]])
逆行列を計算できない場合は、類似逆行列(pseudo-reverse)またはモア・ペンロス(Moore-Penrose)逆行列A+を使用する
y = np.array([[0, 1],
              [1, -1],
              [-2, 1]])

np.linalg.pinv(y)

array([[ 5.00000000e-01,  4.09730229e-17, -5.00000000e-01],
       [ 8.33333333e-01, -3.33333333e-01, -1.66666667e-01]])
       
np.linalg.pinv(y) @ y

array([[ 1.00000000e+00, -2.22044605e-16],
       [ 5.55111512e-17,  1.00000000e+00]])