2022. 1. 21. 14:34ㆍDeep 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 |