역행렬(inverse Matrix) 구하는 방법

2022. 1. 21. 14:34Deep Learning/PyTorch

역행렬을 구하기 위해서는 2가지 조건이 성립해야 한다.

1. 행과 열의 수가 같다.

2. 행렬식(determinant)가 0이 아닌 경우만 가능하다.

 

역행렬은 표기는

일반적으로 A^(-1)이고,

A 연산을 거꾸로 되돌린다는 의미를 갖는다.

 

A A^(-1) = A^(-1) A = I (항등행렬)

import np.linalg.inv
X @ inv(X) = I

 

 

유사역행렬 A^+

무어펜로즈 역행렬 이라고도 부른다.

이는 앞선 역행렬 조건1과 달리, 행과 열의 수가 달라도 계산이 가능하다.

하지만 출력도 행과 열의 수가 다를 수 있으니, 다음 조건에 따라 연산한다.

 

n >=m 이면, A^+ = (A^T A)^(-1) A^T

n <= m 이면, A^+ =  A^T (A A^T)^(-1)

import numpy as np
from np.linalg import pinv

pinv(Y) @ Y = I

X = np.array([[1,0,1],[0,1,0]])
print(pinv(X))

 

 

활용 예시 1. 연립방정식의 해 구하기

(풀기 위한 식보다 변수의 수/해의 수가 많은 경우, 유사역행렬로 해결 가능)

a1x1 + a2x2 + ... + anxn = b

a1x1 + a2x2 + ... +anxn = b

...

==> Ax = b

==> x = A^+ b

 

활용 예시 2. 선형회귀 분석

(변수의 수보다 데이터의 수가 더 많을 경우)

[ -- x1 -- ][ -bi- ] = [ -y1- ]

Xb = y

==> 위 식을 만족하는 b 찾기는 사실상 불가능

==> 가장 유사한 b 찾기는 가능하기 때문에, 그 값을 ^y으로 하여 유사역행렬로 풀이 가능

b = X^+ y

   = (X^T X)^(-1) X^T y

 

이는 실제로 코드로 적용하면, sklearn.linear_model.LinearRegression 과 같은 결과임.

 

 

 

반응형

'Deep Learning > PyTorch' 카테고리의 다른 글

Module 클래스  (0) 2022.01.28
PyTorch 란?  (0) 2022.01.28
Dataset의 기본 구성 요소  (0) 2022.01.28
다변수에 대해 미분(differentiation)하는 방법  (0) 2022.01.21
Vector (벡터)란?  (0) 2022.01.21