반응형

역행렬(Inverse matrix)

역행렬을 배우는 이유

2x = 6라는 일차방정식에서 x의 해를 구하면 얼마인가? 답은 x=3이다. 이를 구할 때 x는 그대로 좌변에 두고 상수항 2를 우변으로 이항하여 정리하였다. 그러면 x=6/2라는 식이 만들어 진다. 다르게 표현하면 x=6*2^-1로 표현할 수도 있다.

즉, 일차방정식 ax=b 에서 a≠0이면 x=a^-1b를 구할 수 있다.

그렇다면 행렬의 곱을 활용하여 이 역원(A^-1)을 구함으로써 선형방정식 AX=B의 해를 X=A^-1B로 구할 때 바로 A^-1가 역행렬이기 때문에 역행렬을 학습한다면 선형방정식을 해결할 수 있다.

역행렬이 선형방정식을 해결할 수 있는 것에는 도움이 되는 것은 이제 알게 되었다. 그렇다면 역행렬이 인공지능(AI)에서는 어떻게 활용이 될까?

예를 들어, 이미지나 텍스트 데이터를 처리할 때, 그 데이터를 행렬로 변환하고 다양한 행렬 연산을 통해 패턴을 찾거나 분석한다. 역행렬은 행렬의 분해와 합성 과정에서 중요하게 사용되며, 데이터의 특성을 파악하거나 모델을 조정하는데 도움을 준다. 또한 AI 모델을 구현할 때 머신러닝과 딥러닝 같은 알고리즘을 사용하는데, 이들은 행렬 계산을 포함한 복잡한 연산을 많이 사용한다. 이때 역행렬은 데이터를 더 잘 이해하고 모델을 효과적으로 학습시키는 데 도움이 된다. 요약하면, 인공지능 연구에서는 데이터를 다루고 모델을 최적화하는 과정에서 행렬과 행렬 연산이 빈번하게 나타나는데, 이때 역행렬 개념과 계산이 필요하기 때문에 역행렬을 배워야 한다.

 

역행렬

역행렬은 일차방정식의 해를 구하기 위한 곱셈의 역원을 행렬로 표현하여 행렬의 역원을 구하여 행렬 방정식을 해결하기 위한 것이다.

따라서 A*□=I 일 때, □가 A^-1이고 이것을 역행렬이라 한다. 즉, '서로 곱해서 단위행렬(I)이 될 때 한 행렬을 다른 행렬의 역행렬'이라고 하며 'A inverse'라고 읽는다.

(단, A는 Invetible 해야 하며 n x n matrix라면 A^-1도 n x n matrix가 되어야 한다.)

 

2x2 역행렬

[[a, b],

 [c, d]] 의 역행렬을 구하기 위한 공식을 외우기만한 사람은 '역행렬의 정의'를 아래와 같이 답할 것이다.

(1 / ad-bc) * [[d -b],

                      [-c a]]

이는 2x2 행렬의 역행렬을 어떻게 구하는지에 대한 대답은 되지만 역행렬의 정의에 대한 옳은 대답은 아니다.

역행렬은 간단히 생각하면 '행렬의 곱셈에 대한 역원'이다.

그렇다면 2x2 행렬 A에 대해 가우스 조던 소거법으로 한번 해를 구해보자.

A*A^-1 = I

A = [[a, b],

        [c, d]]

I2 = [[1, 0],

         [0, 1]]

--------------

1)

[[a, b | 1, 0],

 [c, d | 0, 1]]

 

2)

[[a, b | 1, 0],

 [0, d-(bc/a) = (ad-bc)/a] | -c/a, 1]]

 

3) 

[[a, b | 1, 0],

 [0, 1 | -c/(ad-bc), a/(ad-bc)]]

 

4)

[[a, 0 | 1+bc/(ad-bc) = ad/(ad-bc), -ab/(ad-bc)],

 [0, 1 | -c/(ad-bc), a/(ad-bc)]]

 

5)

[[1, 0 | d/(ad-bc), -b/(ad-bc)]

 [0, 1 | -c/(ad-bc), a/(ad-bc)]]

 

ad-bc는 공통이므로 정리하면

 

A^-1 = 1/(ad-bc) * [[d, -b],

                                 [-c, a]]

이다.

 

그리고 이때 ad-bc를 결정자(determinant)라고 하는데 다음 포스팅에서 이어서 다루도록 하겠다.