수학/인공지능을 위한 선형대수

11. 정규 방정식(Normal equation)

공부중인학생 2021. 11. 10. 00:22

머신러닝에서 사용하는 gradient descent와 달리 normal equation은 최솟값을 직접 계산하는 방법입니다.

 

 

ATAx=ATb 

x^=(ATA)1ATb 

다음과 같이 역행렬이 존재한다면 가장 거리가 가까운 solution을 구할 수 있습니다.

 

여기서 x는 최단 거리의 수선의 발을 의미합니다. 그리고  x를 최단 거리의 벡터로 만들어주기 위해서 만족해야 할 식이 normal equation입니다. 정규 방정식도 일종의 선형 결합으로 우리가 방정식을 풀어서 x값을 구하게 된다면 그 값은 x=argminxbAx를 만족하게 됩니다.

 

- 정확하게 bAx=0으로 만들어주는 x값을 찾을 수 없으니 이 값이 0에 가장 가깝게 해주는 값을 찾는 방법으로 최소 제곱법을 사용해보자 

 

미분을 통한 정규 방정식 도출

 

 

제곱은 자기 자신을 전치한 다음에 행렬 곱한것과 같습니다. 그렇기 때문에 bAx값이 작아지면 bAx2(길이)의 값도 작아지게 됩니다. bAx는 복잡해보이지만 하나의 벡터입니다.

 

argminx(bAx)T(bAx)=bTbxTATbbTAx+xT

 

다음과 같이 복잡한 object function이 나왔습니다. 이런 경우가 의외로 많이 존재하고 이 함수를 미분해야 하는 경우가 많은데 그런 경우 벡터와 행렬이 서로 엉켜있을 때 shape을 잘 봐주면 됩니다. 어떻게 섞여있던지 길이를 나타내는 값으로 scalar 값으로 답이 나오게 됩니다.

 

정규 표현식은 특수한 성질 때문에 solution이 없는 경우는 없습니다. solution이 최소한 1개 이상 있습니다. b에서 수선의 발을 내렸을 때 수직이 되는 값은 1곳만 존재하는데 그 점을 표현할 방법이 여러 개 있으면 해가 1개 이상 있는 것입니다.