선형대수(Linear Algebra)

15-5. 정사영을 활용하여 최소 제곱이 되는 근사값 구하기

frcn 2023. 5. 26. 08:59
반응형

(1) 정사영을 활용하여 최소 제곱 근사값 구하기

임의의 n x k 행렬 A가 있고, Ax = b라는 식이 있고 해가 없다고 하자.

 

x는 Rk의 원소이고, b는 Rn의 원소일 것 이다.

 

Ax = b의 해가 없다는 것은 무슨 의미일까?

 

Ax = b라는 식은 [a1, a2, ..., ak] [x1; x2; ... ; xk] = b 처럼 열벡터와 x의 곱의 표현 할 수 있고,

 

해가 없다는 것은 어떠한 x를 곱해도 b를 만들 수 없다는 것이고, 

 

b가 C(A) 상에 존재하지 않는 다는 의미와 같다. (열벡터의 어떤 선형결합으로도 b를 만들 수 없기 때문)

 

이를 그림으로 표현하면, C(A)라는 평면이 있고 b라는 벡터는 열공간에 존재하지 않으면서 원점에서 뻗어나가는 벡터로 표현할 수 있다.

 

b라는 해는 구할 수 없지만, 이와 비슷한 해를 찾는 방법을 알아보자.

 

임의의 x*이 있고, Ax*은 C(A) 상에 존재하며 (=해가 존재한다), b와 가장 가까운 x*은 어떻게 구할까?

 

b와 Ax*이 비슷하다는 것은 두 벡터 간의 거리, 길이가 최소화된다는 것과 같다.

 

Ax*은 열공간의 원소이고, v라고 해보자.

 

||b - Ax*|| = ||b - v|| 라고 표현할 수 있고, 좀 더 풀어서 써보면

 

||[b1-v1, b2-v2, ..., bn-vn]||² = (b1-v1)² + (b2-v2)² + ... + (bn-vn)²

 

이 식을 최대한 작은 값으로 만들어서, 가장 작은 제곱 어림값을 구하면, 최소 근사값을 구할 수 있다.

 

앞의 글 15-4에서 말한 바와 같이 부분공간에 존재하지 않는 벡터와 가장 가까운 부분공간에 존재하는 벡터는 정사영된 벡터이다.

 

즉, Ax* = projC(A)b 가 될 때, 위의 식이 최소화된다는 것이다.

 

Ax* = projC(A)b 에서 양변에 b를 빼보자.

 

Ax* - b = projC(A)b - b 이고,

 

그림을 보면, Ax*는 C(A)상에 존재하고, Ax*-b는 C(A)와 직교하는 벡터가 된다.

 

따라서, Ax* - b ∈ C(A)

 

C(A)⊥ = N(AT)

 

Ax* - b N(AT)

 

AT(Ax* - b) = 0

 

ATAx* - ATb = 0 

 

ATAx* = ATb 가 된다.

 

이를 만족하는 x*를 구하면, b와 Ax*의 거리를 최소화하는 x*를 구할 수 있다.

 

이를 가장 작은 제곱 해라고 부를 수 있다.

 

물론 그냥 b를 C(A)에 정사영해서 나온 값을 구해서 x*를 구할 수도 있지만, 정사영을 계산하는 것보다 위와 같은 행렬곱을 푸는 것이 더 쉽다.

 

벡터와의 거리를 최소화하는 벡터를 구한다는 것은 에러를 최소화하는 것이라고도 표현할 수 있다.

 

이게 어떻게 활용될 수 있는지는 다음 글에서 실제 예시를 계산하면서 알아보도록 하자.

반응형