선형 시스템(Linear system)

선형 조합

선형 조합의 개념 - 01

선형 조합의 개념 - 02

  • 벡터/행렬에 다음처럼 스칼라값을 곱한 후 더하거나 뺀 것을 벡터/행렬의 선형조합(linear combination)이라고 한다. 벡터나 행렬을 선형조합해도 크기는 변하지 않는다.
  • 벡터나 행렬의 크기를 직사각형으로 표시하면 다음과 같다.

행렬과 벡터의 곱

  • 행렬의 곱셈 중 가장 많이 사용되는 것은 아래와 같은 형태의 행렬 $M$과 벡터 $v$의 곱이다.

열 벡터의 선형조합

  • 행렬 X와 벡터 $w$의 곱은 행렬 $X$를 이루는 열벡터 $c_{1}, c_{2}, \ldots ,c_{M}$을 뒤에 곱해지는 벡터 $w$의 각 성분 $w_{1}, w_{1}, \ldots, w_{M}$으로 선형조합(linear combination)을 한 결과 벡터와 같다.
  • 벡터의 크기를 직사각형으로 표시하면 다음과 같다.
  • 벡터의 선형조합은 다양한 분야에 응용된다. 예를 들어 두 이미지 벡터의 선형조합은 두 이미지를 섞어놓은 모핑(morphing)효과를 얻는 데 사용할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from sklearn.datasets import fetch_olivetti_faces

faces = fetch_olivetti_faces()

f, ax = plt.subplots(1, 3)

ax[0].imshow(faces.images[6], cmap=plt.cm.bone)
ax[0].grid(False)
ax[0].set_xticks([])
ax[0].set_yticks([])
ax[0].set_title("image 1: $x_1$")

ax[1].imshow(faces.images[10], cmap=plt.cm.bone)
ax[1].grid(False)
ax[1].set_xticks([])
ax[1].set_yticks([])
ax[1].set_title("image 2: $x_2$")

new_face = 0.7 * faces.images[6] + 0.3 * faces.images[10]
ax[2].imshow(new_face, cmap=plt.cm.bone)
ax[2].grid(False)
ax[2].set_xticks([])
ax[2].set_yticks([])
ax[2].set_title("image 3: $0.7x_1 + 0.3x_2$")

plt.show()

올리베티 이미지 벡터의 선형조합

선형 시스템 예시

여러 개의 벡터에 대한 가중합 동시 계산

  • 벡터 하나의 가중합은 $w^{T} x$ 또는 $x^{T}w$로 표시할 수 있다는 것을 배웠다. 그런데 만약 이렇게 $w$가중치를 사용한 가중합을 하나의 벡터 $x$가 아니라 여러 벡터 $x_{1}, x_{2}, \ldots, x_{M}$개에 대해서 모두 계산해야 한다면 어떻게 해야 할까? 예를 들어 선형회귀 모형을 사용하여 여러 데이터 $x_{1}, x_{2}, \ldots, x_{N}$개의 데이터 모두에 대해 예측값 $y_{1}, y_{2}, \ldots, y_{M}$을 한꺼번에 계산하고 싶다면 다음처럼 데이터 행렬 $X$를 사용하여 $\hat{y} = Xw$라는 수식으로 간단하게 표현할 수 있다.
  • 아래 그림과 같이 몸무게, 키 그리고 흡연여부를 통해 기대 수명을 예측하고자 한다고 가정하자. 그렇다면 각 feature마다 갖는 가중치들을 구해야 할 것이다. 3개의 연립방정식을 푸는 것과 동일한 문제이다.

선형 시스템의 예시 - 01

  • 이 문제를 행렬을 통해 나타내면 아래와 같다.

선형 시스템의 예시 - 02

  • 결국에는 행렬과 벡터의 곱을 통해 예측하는 방법이다. 즉, 회귀(regression)를 하는 것이다. 마지막 질문처럼 어떻게 벡터 $x$를 구할 수 있을까?

선형 시스템의 예시 - 03

  • 역행렬을 통해 구할 수 있다. 간단히 2x2의 행렬에 대한 역행렬은 다음과 같다. 여기서 주의할 점은 $AA^{-1} = A^{-1}A$가 성립되어야 하는 전제조건이라는 점이다. 모든 $A_{nxn}$ 행렬이 역행렬을 갖지는 않는다. $det(A_{nxn}) \neq 0$일 때만 역행렬이 존재하게 된다.

역행렬의 개념

  • 참고로 대각행렬의 역행렬은 각 대각원소의 역수가 되어 역행렬을 구하기 쉽기 때문에 후에 행렬의 분해를 할때 대각 행렬을 자주 사용한다.

  • 역행렬이 존재하는 경우에는 아래와 같이 역행렬을 계산하여 간단히 문제를 해결 할 수 있다.

역행렬이 존재하여 solution이 unique한 경우

역행렬을 통한 해 찾기 - 01

역행렬을 통한 해 찾기 - 02

  • 역행렬이 존재한다면의 가정아래 설명하였기에 그렇다면 역행렬이 존재하지 않는 경우에는 어떻게 해결하여야 할 지 의문이 들 것이다. 먼저, 선형 시스템에서의 해를 구할 경우에는 크게 3가지가 존재한다.
    • 1) Unique solution
    • 2) No Solution
    • 3) Infinity Solutions
  • 위에서 언급한 문제의 경우에는 미지수의 개수(벡터 $x$의 차원)와 방정식의 개수가 동일하며, 정방행렬에 대한 determinant가 존재하여 역행렬이 계산될 수 있어 Unique한 Solution을 갖는다. 여기서 주의할 것은 역행렬을 갖는다면 Unique한 Solution을 갖는다는 점이다.

역행렬의 존재 여부와 해의 관계

  • determinant가 0이 아니어야 역행렬이 존재한다. 아래 주소를 통해 길버트 스트랭 교수님의 강의에서 determinant의 개념을 좀 더 자세히 알 수 있다. 혹시 영어 강의라 어려움이 있으신 분들은 김도형 박사님 강의안 - 행렬의 성질을 참고하길 권한다.

역행렬이 존재하기 위한 조건 - determinant

  • determinant=0이기 때문에 역행렬이 존재하지 않는 경우에는 해가 무수히 많거나, 해가 존재하지 않는 경우이다.

역행렬이 존재하지 않는 경우의 해

  • 우리가 접하는 데이터의 shape은 대부분 정방행렬로 이루어져 있지 않다. 그렇다면 정방행렬이 아닌 경우에는 역행렬을 구할 수 없으므로 어떻게 해를 구할 수 있을까라는 의문이 들 것이다.우선 간단히 예전에 배웠던 경험을 토대로 생각해 보자.

직사각행렬에서의 해

  • 미지수의 수와 방정식의 수를 고려해 볼 때 연립방정식에는 다음과 같은 세 종류가 있을 수 있다.
      1. 방정식의 수가 미지수의 수와 같다. (m=n)
      1. 방정식의 수가 미지수의 수보다 적다. (m < n)
      1. 방정식의 수가 미지수의 수보다 많다. (m > n)
  • 1번의 경우, 즉 방정식의 수가 미지수의 수와 같은 경우는 앞에서 다루었다. 2번의 경우, 방정식의 개수가 미지수의 개수보다 적다면 풀려는 미지수의 개수가 더 많기 때문에 해가 무수히 많이 존재할 것이다. 아래의 수식에서 미지수는 3개지만 방정식은 2개 뿐이다. 이 때는 $x_{2}$가 어떤 값이 되더라도 $x_{1}=x_{3}=2-x_{2}$만 만족하면 되므로 무한히 많은 해가 존재한다.
  • 3번의 경우, 반대로 방정식의 개수가 미지수의 개수보다 많다면 풀려는 미지수의 개수보다 많기 때문에 해가 없을 것이다. 예를 들어 다음 선형 연립방정식을 생각해 보자. 미지수는 3개지만 방정식은 4개다.
  • 위의 3개 방정식을 동시에 만족하는 해는 $x_{1}=x_{2}=x_{3}=1$인데 이 값은 4번째 방정식을 만족하지 못한다. 따라서 4개의 방정식을 모두 만족하는 해는 존재하지 않는다.
  • 선형 예측모형을 구하는 문제는 계수행렬이 특징행렬 $X$, 미지수 벡터가 가중치 벡터 $w$인 선형 연립방정식 문제이다. 그런데 보통 데이터의 수는 입력차원보다 큰 경우가 많다. 예를 들어 면적, 층수, 한강이 보이는지의 여부로 집값을 결정하는 모형을 만들기 위해서 딱 3가구의 아파트 가격만 조사하는 경우는 없을 것이다. 보통은 10가구 혹은 100가구의 아파트 가격을 수집하여 이용하는 것이 일반적이다. 다시 말해 선형 예측 모형을 구할 때는 3번과 같은 경우가 많다는 것을 알 수 있다. 이떄는 선형 연립방정식의 해가 존재하지 않으므로 선형 연립방정식을 푸는 방식으로는 선형 예측모형의 가중치 벡터를 구할 수 없다.