(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*를 구할 수도 있지만, 정사영을 계산하는 것보다 위와 같은 행렬곱을 푸는 것이 더 쉽다.
벡터와의 거리를 최소화하는 벡터를 구한다는 것은 에러를 최소화하는 것이라고도 표현할 수 있다.
이게 어떻게 활용될 수 있는지는 다음 글에서 실제 예시를 계산하면서 알아보도록 하자.
'선형대수(Linear Algebra)' 카테고리의 다른 글
16-1. 기저에 대한 좌표 (0) | 2023.05.28 |
---|---|
15-6. 최소 제곱이 되는 근사값 예시 (0) | 2023.05.28 |
15-4. 정사영은 부분공간에 가장 가까운 벡터 (0) | 2023.05.25 |
15-3. 부분공간에 대한 정사영은 선형변환 (0) | 2023.05.22 |
15-2. 평면에 대한 정사영 일반화 및 시각화 (0) | 2023.05.15 |