Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Lecture 16. 투영행렬과 최소제곱

Projection Matrices and Least Squares — 서술

점 세 개를 지나는 직선을 그으라는 문제가 있다. 그런데 세 점이 한 직선 위에 있지 않다. 방정식은 세 개, 미지수는 두 개. 해가 없다.

그러나 답을 내야 한다. 실험을 세 번 했고 데이터가 세 개 있는데 "직선이 없습니다"라고 보고할 수는 없다.

이번 강의는 해가 없는 방정식에 답하는 법이다. 그리고 그 답은 지난 강의에서 이미 만들어 두었다. 투영이다.

그리고 이것은 이미 수없이 써 온 계산이기도 하다. 표 계산 프로그램의 추세선, 통계학의 회귀분석, 기계학습의 선형 모델이 전부 같은 계산이다.


1. 해가 없다는 것부터 확인한다

데이터가 세 개 있다고 하자.

(t1,y1)=(1,1),(t2,y2)=(2,3),(t3,y3)=(3,2)(t_1, y_1) = (1, 1), \qquad (t_2, y_2) = (2, 3), \qquad (t_3, y_3) = (3, 2)

여기에 직선 y=C+Dty = C + Dt 를 맞추고 싶다. 세 점을 전부 지나려면 다음 세 식이 동시에 성립해야 한다.

C+1D=1C+2D=3C+3D=2\begin{aligned} C + 1 \cdot D &= 1 \\ C + 2 \cdot D &= 3 \\ C + 3 \cdot D &= 2 \end{aligned}

미지수는 CCDD 둘뿐인데 식이 셋이다. 행렬로 옮겨 쓰자.

A=[111213],x=[CD],b=[132]A = \begin{bmatrix} 1 & 1 \\ 1 & 2 \\ 1 & 3 \end{bmatrix}, \qquad \vv{x} = \begin{bmatrix} C \\ D \end{bmatrix}, \qquad \vv{b} = \begin{bmatrix} 1 \\ 3 \\ 2 \end{bmatrix}

정말 해가 없는지 확인하자. 앞의 두 식을 빼면 D=2D = 2 이고 C=1C = -1 인데, 세 번째 식에 넣으면 1+6=5-1 + 6 = 5 이지 2가 아니다.

L8에서 배운 방법으로도 같은 결론이 나온다. 해가 있으려면 좌영공간의 모든 y\vv{y} 에 대해 yTb=0\vv{y}^{\mathsf{T}}\vv{b} = 0 이어야 했다(L8의 (6)). 이 AA 의 좌영공간은

N(AT)=span{[121]}\Nul(A^{\mathsf{T}}) = \Span\left\{ \begin{bmatrix} 1 \\ -2 \\ 1 \end{bmatrix} \right\}

인데 (y\vv{y} 의 성분 합이 0이고 tt 를 가중치로 준 합도 0이어야 한다는 두 식을 풀면 나온다),

yTb=16+2=30\vv{y}^{\mathsf{T}}\vv{b} = 1 - 6 + 2 = -3 \neq 0

이므로 해가 없다. b\vv{b} 가 열공간 밖에 있다는 뜻이다.


2. 같은 계산의 두 얼굴

이 강의에서 가장 중요한 것은 계산이 아니라 두 개의 그림이 같다는 것이다.

왼쪽은 데이터 평면, 오른쪽은 \R^3 의 열공간이다. 빨간 숫자 셋이 양쪽에 똑같이 나타난다.

Figure 1:왼쪽은 데이터 평면, 오른쪽은 R3\R^3 의 열공간이다. 빨간 숫자 셋이 양쪽에 똑같이 나타난다.

왼쪽 그림은 익숙하다. 가로축이 tt, 세로축이 yy 이고 점 세 개와 직선 하나가 있다. 점에서 직선까지의 세로 간격이 잔차이다.

오른쪽 그림은 R3\R^3 이다. 데이터 b=(1,3,2)\vv{b} = (1, 3, 2) 가 벡터 하나이고, AA 의 두 열이 평면을 만들며, b\vv{b} 를 그 평면에 떨어뜨린 것이 p\vv{p} 이다.

두 그림은 완전히 달라 보이지만 같은 숫자를 쓴다.

데이터 평면 (왼쪽)열공간 (오른쪽)
데이터 점 yiy_i벡터 b\vv{b}ii 번째 성분
직선 위의 값 C+DtiC + Dt_i투영 p\vv{p}ii 번째 성분
잔차, 곧 세로 막대의 길이오차 벡터 e\vv{e}ii 번째 성분
잔차 제곱합이 최소e|\vv{e}| 가 최소, 곧 투영
점의 개수 mm벡터가 사는 공간 Rm\R^m
모델의 항 개수 nn열의 개수, 곧 열공간의 차원

이 대응을 붙잡고 있으면 나머지는 계산일 뿐이다.


3. 정규방정식으로 푼다

L15에서 조건은 하나였다. 오차가 열공간과 직교할 것, 곧 ATe=0A^{\mathsf{T}}\vv{e} = \vv{0}. 그것을 풀어 쓴 것이 정규방정식이었다(L15의 (11)).

ATAx^=ATbA^{\mathsf{T}}A\,\hat{\vv{x}} = A^{\mathsf{T}}\vv{b}

양쪽을 계산하자. ATAA^{\mathsf{T}}A 의 성분은 열끼리의 내적이다.

ATA=[111tt1tt]=[mtititi2]=[36614]A^{\mathsf{T}}A = \begin{bmatrix} \vv{1}\cdot\vv{1} & \vv{1}\cdot\vv{t} \\ \vv{t}\cdot\vv{1} & \vv{t}\cdot\vv{t} \end{bmatrix} = \begin{bmatrix} m & \sum t_i \\ \sum t_i & \sum t_i^2 \end{bmatrix} = \begin{bmatrix} 3 & 6 \\ 6 & 14 \end{bmatrix}
ATb=[yitiyi]=[1+3+21+6+6]=[613]A^{\mathsf{T}}\vv{b} = \begin{bmatrix} \sum y_i \\ \sum t_i y_i \end{bmatrix} = \begin{bmatrix} 1 + 3 + 2 \\ 1 + 6 + 6 \end{bmatrix} = \begin{bmatrix} 6 \\ 13 \end{bmatrix}

2×22 \times 2 연립이 되었으니 손으로 풀린다.

3C+6D=66C+14D=13\begin{aligned} 3C + 6D &= 6 \\ 6C + 14D &= 13 \end{aligned}

첫 식을 3으로 나누면 C+2D=2C + 2D = 2, 곧 C=22DC = 2 - 2D 이다. 둘째 식에 넣으면

6(22D)+14D=12+2D=13D=12,C=16(2 - 2D) + 14D = 12 + 2D = 13 \qquad\Longrightarrow\qquad D = \tfrac{1}{2}, \quad C = 1

맞춘 직선은 y=1+12ty = 1 + \tfrac{1}{2}t 이다. 직선 위의 값과 잔차를 적어 보자.

p=Ax^=[1.522.5],e=bp=[0.510.5],e2=1.5\vv{p} = A\hat{\vv{x}} = \begin{bmatrix} 1.5 \\ 2 \\ 2.5 \end{bmatrix}, \qquad \vv{e} = \vv{b} - \vv{p} = \begin{bmatrix} -0.5 \\ 1 \\ -0.5 \end{bmatrix}, \qquad \|\vv{e}\|^2 = 1.5

검산은 수직인지 보는 것이다.

ATe=[0.5+10.50.5+21.5]=[00]A^{\mathsf{T}}\vv{e} = \begin{bmatrix} -0.5 + 1 - 0.5 \\ -0.5 + 2 - 1.5 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \end{bmatrix}

4. 미적분으로 풀어도 같은 곳에 도착한다

3절은 기하에서 출발했다. 오차가 수직이라는 조건이었다. 그런데 최소제곱을 처음 배울 때는 보통 미적분으로 배운다. 잔차 제곱합을 미분해서 0으로 놓는 것이다. 두 길이 만나는지 보자.

f(C,D)=i=13(yiCDti)2f(C, D) = \sum_{i=1}^{3} \left(y_i - C - D t_i\right)^2

CC 로 편미분한다. 각 항이 제곱이므로 연쇄법칙으로 안쪽 미분 -1 이 곱해진다.

fC=i2(yiCDti)(1)=2i(yiCDti)\frac{\partial f}{\partial C} = \sum_i 2\left(y_i - C - Dt_i\right)\cdot(-1) = -2\sum_i \left(y_i - C - Dt_i\right)

0으로 놓고 정리하면

iyi=mC+Diti6=3C+6D\sum_i y_i = mC + D\sum_i t_i \qquad\Longrightarrow\qquad 6 = 3C + 6D

이다. DD 로 편미분하면 안쪽 미분이 ti-t_i 이므로

fD=2iti(yiCDti)=0itiyi=Citi+Diti2\frac{\partial f}{\partial D} = -2\sum_i t_i\left(y_i - C - Dt_i\right) = 0 \qquad\Longrightarrow\qquad \sum_i t_i y_i = C\sum_i t_i + D\sum_i t_i^2
13=6C+14D13 = 6C + 14D

(9)의 두 식과 글자 하나까지 같다.

두 편미분을 0으로 놓은 것이 두 직선이고, 그 교점이 답이다. 등고선은 잔차 제곱합이다.

Figure 2:두 편미분을 0으로 놓은 것이 두 직선이고, 그 교점이 답이다. 등고선은 잔차 제곱합이다.

왜 두 길이 만나는가

우연이 아니다. 일반적인 경우를 계산해 보면 이유가 보인다. f(x)=bAx2=i(bijaijxj)2f(\vv{x}) = \|\vv{b} - A\vv{x}\|^2 = \sum_i \left(b_i - \sum_j a_{ij}x_j\right)^2xkx_k 로 편미분하면

fxk=i2(bijaijxj)(aik)=2iaik(bAx)i\frac{\partial f}{\partial x_k} = \sum_i 2\left(b_i - \sum_j a_{ij}x_j\right)\cdot(-a_{ik}) = -2\sum_i a_{ik}\,(\vv{b} - A\vv{x})_i

인데, 오른쪽의 합은 AAkk 번째 과 오차 벡터의 내적이다. 그러므로

fxk=2(AT(bAx))k\frac{\partial f}{\partial x_k} = -2\,\left(A^{\mathsf{T}}(\vv{b} - A\vv{x})\right)_k

이고, 모든 kk 에 대해 0으로 놓는 것이 곧 AT(bAx)=0A^{\mathsf{T}}(\vv{b} - A\vv{x}) = \vv{0} 이다.


5. 언제 풀리는가 — 수학의 조건과 데이터의 상식

ATAA^{\mathsf{T}}A 가 가역이어야 x^\hat{\vv{x}} 가 하나로 정해진다. L14에서 그 조건은 AA 의 열이 독립인 것이었다(L14의 Theorem 5).

AA 의 두 열은 1=(1,1,,1)\vv{1} = (1, 1, \dots, 1)t=(t1,,tm)\vv{t} = (t_1, \dots, t_m) 이다. 두 열이 종속이라는 것은 t\vv{t}1\vv{1} 의 배수라는 뜻이고, 곧 모든 tit_i 가 같다는 뜻이다.

열이 종속t1=t2==tm\text{열이 종속} \quad\Longleftrightarrow\quad t_1 = t_2 = \cdots = t_m

데이터의 말로 옮기면 이렇다. 같은 시각에서만 측정했다면 기울기를 정할 수 없다. tt 축의 한 자리에 점이 쌓여 있을 뿐이니 어떤 기울기의 직선을 그어도 마찬가지이다.


6. 열이 곧 모델의 항이다

직선만 맞출 수 있는 것이 아니다. 포물선을 맞추고 싶으면 y=C+Dt+Et2y = C + Dt + Et^2 로 두고 열을 하나 더 붙이면 된다.

A=[1tt2],x=[CDE]A = \begin{bmatrix} \vv{1} & \vv{t} & \vv{t}^2 \end{bmatrix}, \qquad \vv{x} = \begin{bmatrix} C \\ D \\ E \end{bmatrix}

변수가 둘인 y=C+D1s+D2uy = C + D_1 s + D_2 u 도 마찬가지이다.

A=[1su]A = \begin{bmatrix} \vv{1} & \vv{s} & \vv{u} \end{bmatrix}

바뀐 것은 AA 의 열뿐이고 정규방정식 (6)의 모양은 그대로이다.


7. 자주 하는 오해

잔차는 세로 거리이지 점과 직선 사이의 최단거리가 아니다

가장 흔한 오해이다. 최소제곱이 줄이는 것은 yi(C+Dti)y_i - (C + Dt_i) 이고, 이것은 세로 방향의 간격이다. 점에서 직선에 내린 수선의 길이가 아니다.

왼쪽이 최소제곱이 줄이는 양이고, 오른쪽은 다른 문제이다.

Figure 3:왼쪽이 최소제곱이 줄이는 양이고, 오른쪽은 다른 문제이다.

왜 세로인가. tt 는 정확히 알고 yy 에만 오차가 있다고 보기 때문이다. 시각은 정확히 쟀고 측정값이 흔들렸다는 상황이다. 양쪽 모두에 오차가 있다고 보면 다른 문제가 되고 답도 달라진다.

오차가 0이 아닌 것이 정상이다

e0\vv{e} \neq \vv{0} 인 것이 이 강의의 존재 이유이다. e=0\vv{e} = \vv{0} 이면 애초에 Ax=bA\vv{x} = \vv{b} 에 해가 있었다는 뜻이라 투영할 일이 없다.

x^\hat{\vv{x}}p\vv{p} 는 다른 것이다

x^\hat{\vv{x}} 는 계수 (C,D)(C, D) 이고 Rn\R^n 에 산다. p=Ax^\vv{p} = A\hat{\vv{x}} 는 직선 위의 예측값들이고 Rm\R^m 에 산다. 크기부터 다르다.

(ATA)1(A^{\mathsf{T}}A)^{-1} 을 실제로 계산하는 것은 좋은 방법이 아니다

식으로 쓸 때는 x^=(ATA)1ATb\hat{\vv{x}} = (A^{\mathsf{T}}A)^{-1}A^{\mathsf{T}}\vv{b} 가 편하지만, 컴퓨터로 풀 때 역행렬을 만드는 것은 권할 만한 일이 아니다. Figure 2에서 두 직선이 거의 나란하고 등고선이 길쭉한 타원인 것이 그 신호이다. 이 이야기는 L33에서 마무리한다.


마치며...

이번 강의에서 다룬 것을 정리하면 다음과 같다.

대상내용
문제점이 mm 개, 미지수가 nn 개. m>nm > n 이면 대개 해가 없다
도달할 수 없는 b\vv{b} 대신 열공간 위의 가장 가까운 점
정규방정식ATAx^=ATbA^{\mathsf{T}}A\hat{\vv{x}} = A^{\mathsf{T}}\vv{b}, 성분은 ti\sum t_i, ti2\sum t_i^2, yi\sum y_i, tiyi\sum t_i y_i
미적분 경로편미분이 곧 열과 오차의 내적이라 같은 식이 나온다
풀릴 조건열이 독립, 곧 tt 값이 전부 같지는 않을 것
열의 뜻모델의 항. 열을 늘리면 재료가 는다
두 개의 그림잔차 막대와 오차 벡터는 같은 숫자이다

가장 중요한 것은 두 개의 그림이었다. 산점도에 그은 직선과 잔차 막대, 그리고 3차원에서 평면에 떨어지는 그림자. 완전히 달라 보이지만 같은 숫자이고 같은 계산이다. 회귀분석을 볼 때 두 번째 그림이 보이는가 아닌가가 선형대수를 배운 값어치이다.

그런데 찜찜한 것이 하나 남는다. 우리는 ATAA^{\mathsf{T}}A 를 뒤집었다. 이 계산은 안전한가. (7)의 행렬을 다시 보면 [36614]\begin{bmatrix} 3 & 6 \\ 6 & 14\end{bmatrix} 인데, 두 행이 꽤 비슷하다. 열들이 서로 더 닮으면 어떻게 되는가.

이 물음은 지금 답하지 않는다. 다만 힌트를 하나 남긴다. 만약 AA 의 열들이 애초에 서로 직교했다면 ATAA^{\mathsf{T}}A 는 대각행렬이 되고, 역행렬을 구하는 일이 나눗셈 몇 번으로 끝난다.

그렇다면 아무 열이나 직교로 만들어 버리면 되지 않을까. 다음 강의의 주제이다.


이번 강의의 내용을 파이썬으로 확인해 보려면 L16 실습 노트북으로 넘어가면 된다. 두 그림을 나란히 그려 같은 숫자가 양쪽에 나타나는 것을 보고, 계수를 손으로 흔들어 잔차 제곱합이 정말 커지는지 확인하며, 포물선과 다변수로 확장해 볼 수 있다.