개발_기록용

[선형대수학 정리] 16. 최소자승법 본문

선형대수학

[선형대수학 정리] 16. 최소자승법

나폴나폴 2024. 7. 22. 18:26
728x90

1. 배경

 


그래픽스 공부에 들어가기 전, 근본 중에서도 근본인 선형대수학을 먼저 파야겠다고 생각했다!
 
Chris Ohk 님의 Game Developer Roadmap 2022를 보고 내가 부족한 부분을 채워나가기로 결심했기 때문이다.
 

https://github.com/utilForever/game-developer-roadmap

 

GitHub - utilForever/game-developer-roadmap: Roadmap to becoming a game developer in 2022

Roadmap to becoming a game developer in 2022. Contribute to utilForever/game-developer-roadmap development by creating an account on GitHub.

github.com

.

2. 정리


 

최소자승법(Least squares)

 

먼저 최소자승법을 통해 풀려고 하는 상황을 살펴보자.

 

full column rank인 10x3 행렬 A가 있다.

그럼 A의 column은 10차원에서 3차원 공간을 span하며 b도 10차원에 존재한다.

 

이때, b가 C(A)와 다른 방향으로 향한다고 했을 때

C(A)안의 Ax를 아무리 바꿔도 b와 같아질 수 없다는 것을

https://dev-check.tistory.com/44 글을 통해 알고 있다.

 

 

그럼 이 때 해는 없다고 배웠지만

최대한 b와 가까운 Ax를 찾아보자! 하는 것이 최소자승법의 문제 상황이다.

 

최소자승법 : b와 최대한 가까운 Ax를 찾는 것.

 

 

그러면 b와 Ax의 교점을 원점이라 하고,

b - Ax인 벡터를 error 벡터 e라 하자.

 

$$b-Ax = e$$

 

그럼 이 벡터 e의 크기가 제일 작을 때의 x

우리가 최소자승법을 통해 구하고자 하는 값이다.


 

최소자승법으로 error 벡터의 크기 구하기

 

 

구체적으로 최소자승법에선 e의 크기 중에서도

2-norm을 최소로 하는 경우를 찾는다.

 

$$\left\|e_{2} \right\|$$

 

=> 그래서 최소자승법 (Least squares) 라는 이름이 붙은 것이다.

 

이는 b를 C(A) 평면에 정사영한 것과 같다.

 

그러면 e의 2-norm은 루트로 표현하니, 이를 제곱한 

 

$$\left\|e_{2} \right\|^{2}$$

 

값을 다룰 것이고, 이 값은 Ax와 e가 수직할 때 제일 작을 것이다.

그때의 x를 이라 하자.

 

그러면 두 벡터의 dot product는 0이고

수직해야 하니 는 0이 아니다.

 

따라서, 식을 정리하면

$$B^{T}A=\hat{x}^{T}A^{T}A$$

 

이고 양변을 전치하면

$$A^{T}B=A^{T}A\hat{x}$$

 

이고, 이를 normal equation이라 한다.

 

따라서, x̂에 관해 식을 정리하면

$$\hat{x} = (A^{T}A)^{-1}A^{T}B$$


 

 

그러면 Ax̂에 대해서는 아래와 같이 정리할 수 있다.

 

=> 결과적으로, b를 C(A)에 정사영할 때

$$\hat{x} = (A^{T}A)^{-1}A^{T}B$$

 

이 부분이 곱해졌으니, 이를 projection matrix, P_{A}라고도 한다.

 

$$P_{A}= (A^{T}A)^{-1}A^{T}B$$

반응형
Comments