학습목표
본 강의에서는 선형방정식과 선형시스템의 개념을 구체적인 예시와 함께 배워보겠습니다. 그리고 선형방정식을 풀기 위한 방법 중 한 가지인 역행렬과 항등 행렬의 개념을 배우게됩니다.
핵심 키워드
- 선형방정식(Linear Equation)과 선형시스템(Linear System)
- 항등 행렬(Identity Matrix)과 역행렬(Inverse Matrix)
학습하기
다음으로는, 선형시스템이라고 부르는 문제에 대해서 다뤄보도록 하겠습니다. 이를 위해서는 선형방정식을 먼저 생각해봐야합니다. 선형방정식이란 아래와 같이 변수와 계수, 상수로 구성된 방정식인데요. 이런 식을, 저희가 알고있는 내적을 통해서 a^T * x = b라는 식으로, 간단히 표현할 수 있게됩니다. 여기서 a와 x는 벡터, b는 상수값입니다. 행렬곱간 사이즈의 변화를 보시면 자명하겠죠.
선형시스템이라는 건, 선형방정식의 집합. 그러니까 연립방정식을 의미합니다.
이제 예제와 함께 이야기를 해보죠. 저희가 아래와 같은 테이블을 다루겠다고 생각해보죠. Weight, Height, Is-smoking이 Feature로써의 역활을 할테고, Life-span이 Label로써의 역활을 하겟죠. 이를 선형 시스템을 사용해, 최적의 계수를 찾는다고 한다면, 아래의 3개의 식을 만들 수 있을 것이고, 이걸 푸는게 저희들의 목적이 되겠죠.
이것을 하나하나 풀어나갈수도 있겠지만, 저희의 목표는 이것을 행렬과 그 연산을 통해 한 번에 풀어내는 것이겠죠. 먼저 선형시스템을 아래와 같이 행렬을 통해 간단히 표현합시다.
그러면 아래와 같이, 아름답게 정리가 되겠죠.
이러한 행렬으로 부터, 저희가 x를 구해내는 가장 기본적인 방법은 역행렬을 사용하는 것이겠죠. 이를 위해서 Identity matrix에 대해 이해할 필요가 있습니다. Identity matrix는 아래와 같이 구성된 Square matrix이며, 어떤 행렬 A에 항등행렬을 곱하게 되면, 본행렬 A가 나올 수 있게 되겠죠.
다음으로 항등행렬을 통해 역행렬을 정의해보죠. 어떤 행렬 A에 행렬 B를 곱하였을 때, 항등행렬이 나온다면 그 행렬 B는 행렬 A의 역행렬 A^-1가 됩니다. 다만 중요한건, 행렬 A는 Square matrix여야 한다는 점이겠죠. 2x2 행렬에서 역행렬을 계산하는 것은 아마 고등학생 때에도 해보셨을 겁니다. 아래와 같은 수식이죠. 그렇다면 3x3 이상의 행렬에서는 어떻게 구할 것인가. 가 문제가 될텐데, 단순한 공식은 없지만, 계산 가능한 프로세스는 존재합니다. 이후 공부하시면, 충분히 이해되실 것입니다. 자 추가로, 2x3와 같은 Rectangular matrix A에 대해서는 왜 Inverse matrix가 없는 지에 대해 생각해봅시다. 분명히, BA = I를 만족시키는 3x2 matrix B는 존재할 수 있습니다. 다만, 이러한 B를 A의 우측에 곱하였을 때도, 그러니까 AB = I를 만족한다는 보장이 없습니다. 행렬의 곱셈 정의를 생각하면 자명하겠죠. 때문에 Non-square matrix에 대해서는 역행렬을 정의할 수 없습니다.
이제 이런 역행렬을 구했다고 한다면, 본래 하고자 했던 선형방정식을 어떻게 푸는지를 이해해보죠. 간단합니다. 아래와같이 양변에 A의 역행렬을 곱해주면, 자연스럽게 x를 계산할 수 있겠죠.
실제 계산을 해보면, 아래와 같은 결과가 도출됩니다.
그리고 이렇게 구해진 x의 의미는 아래와 같은 수식을 완성할 수 있게해주겠죠.
이렇듯, 역행렬이 있다면 간단하게 끝나겠지만, 역행렬이 존재하지 않는 경우에는 어떻게 처리해야할까요? 역행렬이 존재한다면, 위의 수식에서 자명하듯, 방정식은 Unique solution을 얻게 됩니다. 역행렬이 존재하지 않는 경우에는, 그러니까 판별식(Determinant)가 0라면 반대로 Unique solution을 얻는 것이 불가능하겠죠. 즉 No solution 또는 Infinitely many solution의 경우가 됩니다.
또 2x2 이상의 사이즈를 가진 Matrix에 대한 Inverse matrix 또는 Determinant에 대해서는 Gaussian elimination 등의 방법론을 찾아보시면, 충분히 좋은 해결방법을 찾아내실 수 있으실겁니다.
이렇게 역행렬이 존재하지 않는 경우는 그래서 어떻게 해야하는가? 앞서 2가지 경우로 나뉘어진다고 했었죠. [ [1,2], [2,4] ]와 같은 경우를 예로 들면, 이 경우 첫 번째 방정식과 두 번째 방정식은 정확히 같은 방정식이기 때문에, 0x+0y=0라는 식이 나오며, 이와같은 경우에는 무수히 많은 해를 갖는 선형시스템이라고 말할 수 있겠죠. 이 경우에서 3,6을 3,7로 바꾼다면, 최종적으로 0x+0y=-1이라는 식이 나옴으로써, 해가 없는 선형시스템이 구성됩니다.
이렇게 역행렬을 계산하기 위해서는, 기본적으로 Square matrix가 가정되어야합니다. 그런데 생각을 해보면, 저희가 다루는 테이블이 Square할 것이라는 가정은 너무 튼튼하죠. 대개는 Rectangular일겁니다. 때문에 이번에는, Rectangular matrix의 상황을 생각해봅시다. 그러니까 행의 개수를 m, 열의 개수를 n이라고 가정해보죠.
첫째, m<n인 경우. 생각을 해보면, n의 개수는 곧 변수의 개수에 직결됩니다. 내가 추론해야하는 변수의 개수는 많은데 이를 위한 방정식의 개수가 부족하다면, Infinitely many solution을 갖게 되겠죠. 이런 상황을 Under-determined system이라고 합니다.
둘째, m>n인 경우. 내가 추론해야하는 변수의 개수는 적은데, 이를 위한 방정식의 개수는 굉장히 많다면, No solution입니다. 그리고 이런 상황은 Over-determined system이라고 합니다.
이러한 상황들에서도, 그나마 찾을 수 있는 최적의 해를 계산하는 방법이, 머신러닝, 딥러닝을 활용하는 방법이겠죠. 아마 저희가 다룰 데이터는, 대개 행의 개수는 굉장히 많지만 열의 개수는 그에 비해 적은, m>n. 두 번째 경우가 될겁니다. 이런 시스템 아래에서 Solution에 근사하는 값을 찾는게 목적이구요. 이상입니다.