글을 시작하기에 앞서 해당 글은 Marc Peter Deisenroth, A. Aldo Faisal, Cheng Soon Ong의 저서인 mathematics for machine learning을 바탕으로 요약 및 정리한 글임을 알려드립니다.
연립 선형방정식 풀기
이전 글에서 연립 선형방정식을 행렬로 나타내는 과정을 살펴보았다. 이제는 행렬로 표현된 연립 선형방정식을 풀어보자. 참고로 연립 선형방정식은 다양한 풀이를 가진다.
위의 행렬곱은 4개의 변수를 가진 2개의 선형방정식으로 이루어져 있다. 위의 행렬곱을 수식으로 정리하면 다음과 같다. 우리는 위의 식에서 4개의 변수 해(solution)를 찾는 것이 목표이다.
해당 식에서 $c_i$는 첫 번째 행렬의 $i$번째 열이며, $b$는 두 행렬곱의 결과이다. $b$는 $c_1 \times 42$과 $c_2 \times 8$로 나타낼 수 있다.
따라서 변수 4개의 해(solution)로 $[42, 8, 0, 0]^T$를 도출할 수 있다. 이와 같이 결과값 $b$를 역추하여 변수를 추정한 해를 ‘특수 해(special solution)’라고 한다. 하지만 연립 선형방정식에는 더 많은 해가 존재하기도 한다. 특수 해를 찾는 방법은 $Ax=b$에 해당하는 $x$값을 찾는 것이다. 다음으로 살펴볼 방법은 $Ax=0$으로 만드는 $x$값을 찾는 것이다. $Ax=0$에 해당하는 방정식을 ‘동차(homogeneous) 연립 선형방정식’이라고 한다. 첫 번째 행렬의 세 번째 열인 $c_3$은 다음과 같이 풀어서 쓸 수 있다.
위의 식은 $c_1$과 $c_2$를 사용하여 $c_3$을 나타낸 것이다. 따라서 $c_3$는 $8c_1 + 2c_2$로 표현할 수 있다. 우리의 목표는 행렬 A와 변수 x를 곱했을 때 0이 나오는 해를 찾는 것이므로 $c_3$에 -1를 곱하여 앞의 $8c_1 + 2c_2$을 제거하고 $c_4$에 0을 곱하여 결과를 0으로 맞춰준다. 그렇게 하면 식은 다음과 같다.
따라서 $Ax=0$의 결과를 만족시키는 변수 $(x_1,x_2,x_3,x_4)$는 $(8,2,-1,0)$이다. 위의 식은 무작위 실수 $\lambda_1 \in \mathbb R$를 곱해도 값은 0이다.
위 흐름과 같이 $c_4$도 $c_1, c_2$을 사용하여 $-4c_1 + 12c_2$로 나타낼 수 있고, 이를 이용하여 $Ax=0$을 도출할 수 있다.
$\lambda_1$과 마찬가지로 $\lambda_2$도 어떤 실수든지 가능하다.
지금까지 구한 변수 $x$를 종합하면, 우리는 해당 연립 선형방정식의 ‘일반 해( general solution)’를 구할 수 있다.
Remark
일반 해를 구하는 접근 방식은 세 단계로 구성되며, 다음과 같다.
- $Ax=b$의 특수 해를 찾기
- $Ax=0$의 모든 해 찾기
- 찾은 모든 해들을 결합하기 (일반 해 완성)
지금까지 예시를 통해서 연립 선형방정식을 풀어보았다. 예시는 간단한 형식의 행렬이었기에 해를 구하기 편했지만, 실제 사용되는 선형식들은 매우 복잡하다.
운좋게도 우리는 매우 편리한 알고리즘인 ‘가우시안 소거법(Gaussian elimination)’이 있다. 가우시안 소거법은 복잡한 방정식 시스템을 간단한 형태로 변환해준다. 그후 위에서 배운 세 단계를 적용할 수 있다.
요소 변환 (elementary transformations)
선형 방정식을 쉽게 해결하는 핵심 방법은 바로 ‘요소 변환 (elementary transformations)’이다. 요소를 변환하는 것은 해는 동일하지만 선형방정식의 식을 더 간편하게 만들어준다.
- 방정식 2개(행 단위)의 위치를 바꾸기
- 한 방정식에 $0$을 제외한 실수 $\lambda$ 곱하기
- 두 방정식을 합치기
제시된 3개가 요소를 변환하는 방법이다. 아래의 예시를 통해서 하나씩 알아보자.
위의 수식은 5개의 변수를 가진 연립 선형방정식이다. 총 4개의 수식이 포함되어 있으며, 우리는 위 문제에서 $a \in \mathbb R$일 때의 모든 해를 찾으려 한다.
먼저 $Ax=b$인 특수 해를 찾아보자. 특수 해를 찾기 위해서는 각 방정식의 변수들을 최소화해야 한다. 변수를 최소화하기 위해서 방정식들의 요소를 변환해야 한다. 지금부터는 변수 $x$를 명시하지 않고 설명하는 방법을 사용할 것이다. 이 방법을 ‘확장 행렬(augmented matrix)’이라고 하며, $[A\ |\ b]$의 형태이다.
위의 확장 행렬에서 첫 번째 행과 세 번째 행의 위치를 바꿔주자.
그 다음 두 번째 행에서 $-4\mathbb R_1$을 더해준다. 그러면 두번째 행은 아래와 같은 결과가 나온다.
위와 같은 방법으로 세 번째 행에는 $+2\mathbb R_1$을 더해주고, 네 번째 행에는 $-1\mathbb R_1$을 더해준다. 그 결과는 다음과 같다.
변수 $x_1, x_2$의 계수는 $\mathbb R_1$에만 남은 것을 확인할 수 있다. 이와 같은 방법으로 연립 선형방정식을 정리하면 다음과 같다.
-네 번째 행에 $-\mathbb R_2 -\mathbb R_3$을 더해준다.
- 두번째 행에 $-1$을 곱해주고 세 번째 행에 $-\frac{1}{3}$을 곱해준다.
- 위의 식을 연립 선형방정식으로 표현하면 다음과 같다.
복잡했던 확장 행렬에서 요소 변환을 통해 간단하게 정리되었다. 이와 같은 형태를 ‘행 사다리꼴(row-echelon form, REF)’이라고 한다. 행 사다리꼴은 아래와 같은 특징을 가진다.
- 열의 앞에 오는 계수(leading coefficient)는 주성분(pivot)이라고 한다.
- 행 사다리꼴은 각 열의 주성분이 위의 열보다 한칸 이상 뒤에 있다. 따라서 계단식(staircase) 구조를 가진다.
- 0만 포함하는 열은 행렬의 가장 아래에 위치한다.
- 주성분에 속하는 변수를 ‘기본 변수(basic variables)’라고 하며, 그 외의 변수들은 ‘자유 변수(free variables)’라고 한다. 예로 위의 행 사다리꼴은 보면 변수 $x_1, x_3, x_4$는 기본 변수이며, $x_2, x_5$는 자유 변수이다.
이제 위의 행 사다리꼴로 $a=-1$일 때의 특수 해를 찾아보자. 해당 연립 선형방정식은 $a=-1$일 때만 특수 해를 구할 수 있다.
자유 변수는 행 사다리꼴에서 주성분이 없다. 따라서 임의적으로 자유 변수를 0으로 처리한다. 그럼 위의 행 사다리꼴의 자유 변수인 $x_2, x_5$은 0으로 처리된다. 그 다음 주성분이 존재하는 기본 변수의 값을 구하면 된다.
위의 확장 행렬을 다시 살펴보자.
여기서 기본 변수인 $x_1, x_3, x_4$와 곱해지는 열은 아래와 같다.
위의 행렬을 다시 연립 선형방정식으로 나타내면 다음과 같다.
따라서 이를 정리하면 $x_4 = 1, x_3 = -1, x_1 = 2$를 구할 수 있다. 따라서 위의 연립 선형방정식의 특수 해는 $[2, 0, -1, 1, 0]^T$인 것이다.
이제 헤당 연립 선형방정식의 일반 해를 구해보자. 일반 해를 구하기 위해서는 ‘기약 행 사다리꼴(educed row-echelon form, RREF)를 알아야 한다. 기약 행 사다리꼴의 특징은 다음과 같다.
- 행 사다리꼴이다.
- 모든 주성분(pivot)이 1이다.
- 주성분이 포함된 열에서는 주성분을 제외한 모든 수가 0이다.
기약 행 사다리꼴은 선형방정식들의 일반 해를 간단하게 구할 수 있게 해주기에 매우 중요한 개념이다. 또한 우리는 앞서 ‘가우시안 소거법(Gaussian Elimination)’을 복잡한 방정식 시스템을 간단한 형태로 변환해준다고 언급한 적이 있었다. 이제 기약 행 사다리꼴의 개념을 이해했으니 가우시안 소거법의 정의를 더 정확하게 할 수 있다. 가우시안 소거법은 일반 선형방정식을 기약 행 사다리꼴로 만들어주는 알고리즘이다.
그럼 우리가 예시로 사용하는 확장행렬을 기약 행 사다리꼴로 변환해보자.
위 확장 행렬에서 주성분을 포함한 열은 $c_1, c_3, c_4$이다. $c_1$은 주성분을 제외한 나머지가 모두 0이라서 기약 행 사다리꼴의 기준을 만족하지만 $c_3, c_4$는 아니다. 따라서 요소변환을 통해 $c_3, c_4$도 변환해주어야 한다.
이를 위해 $\mathbb R_3$을 $\mathbb R_1, \mathbb R_2$에 각각 더해준다. 그럼 다음과 같은 행렬이 된다.
그후 $\mathbb R_2$를 $\mathbb R_1$에서 빼주면, 아래와 같은 기약 행 사다리꼴이 완성된다.
드디어 기약 행 사다리꼴이 완성되었다. 이제 $Ax=0$을 만족하는 해를 찾을 수 있다. 변수 $x$와 행렬 A의 열인 $c$가 곱해졌을 때 0이 되기 위해서는 자유 변수와 열의 곱을 제거하는 방식으로 풀면 된다.
여기서 자유 변수는 $x_2, x_5$이며, $c_2$를 먼저 살펴보자. $c_2$는 $[-2, 0, 0, 0]^T$이기 때문에 $c_1$에 2를 곱하여 더하면 0이 된다.
따라서 첫 번째 해는 $[2, 1, 0, 0, 0]^T$이다.
다음으로 $c_5$를 본다면, $[-2, 1, -2 , 1]^T$은 $c_1, c_4$에 2를 곱한 것과 $c_3$를 더해주면 0이 된다.
따라서 두 번째 해는 $[2, 0, -1, 2, 1]^T$이다.
드디어 선형방정식의 해를 모두 구하였다. 이를 바탕으로 일반 해를 구하면 아래와 같다.
‘마이너스 1’ 트릭 (The Minus-1 Trick)
지금까지 우리는 연립 선형방정식의 일반 해를 구하는 방법을 살펴보았다. 물론 수식으로 푸는 것보다는 위의 방식이 편리하지만 우리는 더 쉽게 $Ax =0$일 때의 해를 구할 수 있다. 먼저 기약 행 사다리꼴을 다시 보자.
여기서 자유 변수인 $x_2, x_5$의 수와 같은 $\mathbb R_2, \mathbb R_5$의 위치에 $’-1’$을 대입한다. 즉, 자유 변수와 곱해지는 열 $c$에 값을 대입하여 기본 변수로 만들어주는 것이다
위의 확장 행렬에서 $c_2, c_5$를 보면 $Ax=0$을 만족하는 해가 있음을 확인할 수 있다. 위의 식에서는 ‘-1’을 $\lambda$로 묶어서 빼주면 위에서 구했던 해와 똑같은 결과를 얻을 수 있다.
역행렬 계산
우리는 행렬 $A, A \in \mathbb R^{n \times n}$의 역행렬을 구하기 위해서 $AX=I_n$을 만족하는 $X$를 찾았으며,해당 $X$를 역행렬 $A^{-1}$이라고 불렀다. 확장 행렬도 다음과 같은 식을 만족한다.
위식을 직접 풀어보자. 먼저 행렬 $A$와 항등행렬을 첨가 행렬 형태로 작성한다.
위 식에서 행렬 $A$를 가우시안 소거법을 사용하여 항등 행렬로 바꿔준다.
원래 항등 행렬이었던 오른쪽 부분이 바로 역행렬이다.
가우시안 소거법을 사용하면 역행렬도 편리하게 구할 수 있다.
선형방정식을 해결하는 알고리즘
지금까지 우리는 해(solution)가 있는 $Ax = b$형태의 선형방정식들을 풀어보았다.
하지만 해가 없는 선형방정식은 어떻게 풀어야 하는가? 이 부분은 이후 chapter 8에서 자세하게 살펴볼 것이다.
$A$가 정방행렬이며 동시에 가역행렬인 경우, 우리는 $Ax = b$의 해로 $x = A^{-1}b$가 주어지도록 역행렬 $A^{-1}$을 구할 수 있다. 하지만 그외의 경우에는 ($A$의 행(column)이 독립적인 선형방정식이라는 전제 하에) 전치행렬과 ‘무어-펜로즈의 의사역행렬(Moore-Penrose pseudo-inverse)’을 사용하여 해를 구해야 한다.
무어-펜로즈의 의사역행렬(Moore-Penrose pseudo-inverse)’은 의사역행렬(pseudo inverse)이라고도 불리며, 정방행렬이 아닌 행렬에 대해서 $x$값을 근사적으로 구할 수 있는 방법이다. 이 방법은 미지수보다 선형방정식의 수가 더 많을 때 사용한다.
NOTE
미지수 $x$와 선형방정식의 관계
미지수는 방정식의 개수와 동일할 때 해를 갖는다. 즉, $x_1, x_2, x_3$이 미지수로 주어졌다면, 선형방정식도 3개가 주어져야 한다는 뜻이다. 하지만 그 외에도 방정식의 개수보다 미지수 수가 더 많거나 적은 경우가 존재한다. 미지수보다 방정식 개수가 더 적다면 이는 무수히 많은 해가 존재한다. 또한 미지수보다 방정식 개수가 더 많다면 해가 없는데, 이 경우에는 ‘근사 해’를 구해야 한다.
- (미지수 개수 > 방정식 개수) -> 해가 무수히 많음
- (미지수 개수 < 방정식 개수) -> 해가 없음 -> 근사 해 구할 수 있음
위 식은 의사역행렬을 적용하는 과정을 보여준다. 하나씩 천천히 살펴보면서 원리를 이해해보자.
평범한 선형방정식이 있다. 하지만 행렬 $A$는 정방행렬이 아니다. 즉, 위 식은 미지수 $x$가 2개인데, 선형방정식은 3개인 경우이다. 이 상태에서는 행렬 $A$의 역행렬을 구할 수 없다. 역행렬이 존재하기 위해서는 정방행렬이어야 하기 때문이다. 따라서 각 항에 전치행렬을 곱해서 정방행렬의 형태로 만들어준다.
이제 $A^TA$는 $3 \times 3$ 형태의 정방행렬이기에 역행렬을 구할 수 있다. $A^TA$의 역행렬은 $(A^TA)^{-1}$이다. 해당 역행렬을 양쪽 항에 곱해주자.
특정 행렬과 그의 역행렬을 곱하면 항등 행렬이 되며, 이는 $x$와 같다. 그 이유는 항등행렬은 각 행마다 하나의 1만을 가지고 있기 때문에 $Ix$는 $x$와 똑같은 결과를 도출한다. 따라서 식을 정리해보면 다음과 같다.
이 방법은 근사 해를 구할 수 있게 해주기에 매우 유용하지만, 많은 행렬 계산이 들어가고 근사값을 구하는 것이기에 일반적으로 사용하기를 추천하지는 않는다. 이의 대안으로 우리는 chapter2에서 벡터 사이의 유사성을 계산할 수 있는 방법을 살펴볼 것이다.