[선형대] 정규방정식(Normal equation)

반응형
    반응형

    앞선 포스팅에서 최소제곱방법을 다뤘었는데 행렬표현으로 하지 않고 직관적인 설명 위주로 했습니다. 

    가장 간단한 (x,y) 에 대한 설명을 하였습니다.

    이번에는 변수의 갯수를 n개까지 늘리는 소위 말하는 정규방정식 유도 방법을 포스팅하겠습니다. 

     

    이전 포스팅과 같은 최소제곱방법이지만 좀 더 일반적인 상황이고 초점이 파라미터가 아니라 x에 있습니다. 

    변수가 n 개까지 늘어나고 m 개의 데이터라고 보시면 될 것 같습니다. 

    즉, 변수 n개에 대한 m개의 방정식을 푸는 연립방정식이 되겠습니다. 

     

    보통 식이 많은 연립방정식은 선형대에서 배우는 linear system으로 넘겨 행렬 문제로 바꿔버립니다. 

    즉, linear system으로 표현하면 Ax = b 를 푸는 문제가 됩니다. 

    n개의 변수와 n 개의 방정식이라면 정확하게 답이 하나 나오는 상황이 되지만

    변수와 방정식의 갯수가 다르면 원래 데이터와 구한 값 간에 에러가 발생할 수 밖에 없습니다. 

    이를 최소화하는 문제가 최소제곱문제(Least Squares Problem)가 됩니다.

    최소화된 값을 해(solution)라고 하면 정규방정식(Normal equation)은 그 해를 구하는 공식이 됩니다.

     

    최소제곱문제(Least Squares Problem)

    최소제곱문제를 수학적으로 정의하면 다음과 같습니다.

     

    변수 n개와 m개의 방정식인 Linear system Ax=b 에 대하여, $R^m$에서의 유클리안 내적이 가능할 때, 에러인  $ \|b-Ax\| $ 가 최소화되는 벡터 x를 구하여라.

     

    만약 x가 존재하면 이를 Ax=b의 least squares solution 이라 하고 $ \|b-Ax\| $ 를 least squares error 라고 합니다.

     

    실제로 구할 때는 b-Ax 가 가장 작아지는 값을 구하기 위해 벡터를 사용합니다.

    b-Ax 는 벡터의 뺄셈이 됩니다.

     

     

    b- Ax 가 그림처럼 그려진다면 변하는 것은 Ax 이므로 Ax 와 직각이 되게끔 움직여준다면 b-Ax 가 가장 짧은 선이 될 것입니다. 이는 b를 Ax로 정사영한 것과 같으니 W가 A를 포함하는 벡터 스페이스라면 $ Ax = \mathrm{proj}_{W} \ b $ 이 됩니다.

    이를 정리하면 다음과 같습니다. 

     

    W가 유한차원의 내적이 가능한 공간 V의 서브공간이고 $ b \in V $ 이면, $ \mathrm{proj}_W \ b $ 을 제외한 모든 $ w \in W $ 에 대하여,

    $$ \|b-\mathrm{proj}_W \ b \| < \| b-w \| $$ 

     

    정규방정식(Normal equation)

    $ Ax = \mathrm{proj}_{W} \ b $ 일때 최소값이므로 오차도 최소값이 됩니다.

     

    $$ b - Ax = b - \mathrm{proj}_{W} \ b $$ 이고 $ A^T$ 를 양변에 곱합니다. 

     

    $$ A^T(b-Ax) = A^T(b-\mathrm{proj}_{W} \ b) \tag{1} $$ 

     

    여기서 $ b-\mathrm{proj}_{W} \ b $ 는 열공간 A 와 직교하므로 $ A^T $ 의 영공간에 있습니다.

    따라서 $ A^T(b-\mathrm{proj}_{W} \ b) = 0 $ 이 됩니다.

    (1)에 적용하면 $ A^T(b-Ax) = 0 $ 이므로 정리하면 정규방정식을 얻습니다.

    $$ A^{T} Ax = A^Tb $$

     

    구하고자 하는 건 x 이므로 정리하면 다음과 같습니다.

    $$ x = (A^{T}A)^{-1} A^T b$$

     

    정리

    정규방정식에 대한 유도과정이었습니다. 

    최소제곱문제를 풀기위한 방정식이고 이를 활용해서 수치해석이나 머신러닝에 많이 쓰입니다. 

    활용도가 좀 있으니 잘 알아두면 좋을 것 같습니다.

     

    관련 포스팅

    [Python] 회귀(Regression)

    [수치해석] 최소 제곱 방법(Least square approximation)

    댓글

    Designed by JB FACTORY

    ....