본문 바로가기
딥러닝 기초

2. Linear regression의 cost 함수를 최소화하는 방법

by demi-an 2023. 7. 30.

지난 포스팅에서는 1. Linear regression(https://alifestudy.tistory.com/50)의 Hypothesis 식과, Cost function을 최소화하는 parameter 'W, b' 가 우리가 찾으려는 Linear regression Hypothesis 식의 parameter라는 것을 다루었습니다  (데이터를 가장 잘 표현하는 parameter). 그러면 이번엔, Cost function을 최소화 하는 parameter를 어떻게 찾을 수 있는지 알아보겠습니다. 먼저, Hypothesis 식을 아래와 같이 세웠었지만,

Cost function 을 간단하게 나타내기 위해 다음과 같은 Hypothesis 식과 앞서 세웠던 cost function을 생각해보겠습니다.

그리고, 아까 주어졌던 아래의 데이터를 통해 cost function을 계산해보면 (cost function의 x, y 에 데이터를 하나씩 대입하고 전개하면) 다음과 같이 2차 함수의 형태가 되게 됩니다. (데이터가 3개이므로 n=3)

x y
1 2
2 3
3 4

cost가 최소가 되는 점은 W = 1.429 일때, cost = 0.143이고, 결론적으로 우리가 찾는 hypothesis 식은 아래와 같습니다.

찾은 Hypothesis 식을 데이터와 함께 그래프로 표시한 결과

주어진 데이터 점을 정확히 지나지는 않지만, 그래도 얼추 표현하고 있음을 확인할 수 있습니다. 우리가 앞서 cost function에서 b를 생략하지 않았다면, 정확히 H(x) = x + 1라는 식 (W=1, b=1)을 구할 수 있었을 것입니다 (여담이지만, 이 부분에서 처음에 세우는 Hypothesis 식을 어떻게 세우는지도 데이터 설명에 매우 중요함을 알 수 있습니다). 이처럼 cost function이 최소화되는 parameter(여기에서는 W = 1.429)를 계산하고 나면, 새로운 input (x, 예를 들어 5)이 들어와도 그 output 이 어디쯤 있을 것이다 (1.429 * 5 = 7.245) 라고 예상할 수 있게 됩니다. 하지만, 이처럼 cost function을 그려서 최소값을 찾는 방법은 cost function을 구성하는 parameter의 수가 많아지면 불가능하고, 알고리즘으로 구현하기에도 어려운 부분이 있습니다.

 

여기에서 사용되는 방법이 Gradient Descent Algorithm(경사 하강법) 입니다. Gradient Descent Algorithm은 산에서 내려가는 길을 찾듯, 현재 위치에서 아래를 향하는 방향으로 조금씩 움직이는 방법입니다. 아 알고리즘의 스텝은 다음과 같습니다.

  1. W를 임의의 값(처음에 예상하는 값이나 어떤 값이든)에서 시작한다.
  2. W를 cost가 감소하는 방향(W보다 paramter가 2개 이상인 경우, 가장 많이 감소시키는 방향)으로 조금 움직인다.
  3. 2를 더이상 cost가 의미있게 줄어들지 않을 때까지 반복한다.

여기서, 2번에서 말하는 감소시키는 방향과, 조금의 의미를 살펴볼 필요가 있습니다.

  • 감소시키는 방향: cost function의 현재 W에서의 미분(Gradient)를 통해 계산합니다. 현재 W에서의 미분값은 지금 위치에서 증가하고 있는지, 감소하고 있는지 알려주기 때문에 감소하는 방향으로 가려면 어디로 가야하는지 알 수 있습니다.
  • 조금: 감소시키는 방향으로 얼마나 움직일지 미리 정해야 하는 값이며, 이 값을 Learning rate(학습률)라고 합니다. 이 값은 상수가 될수도 있고, 학습을 진행하면서 미리 계획해둔대로 중간에 그 값을 바꿀 수도 있습니다. 이 부분에 대해서는 이후 포스팅에서 다루도록 하겠습니다.

위의 스텝을 식으로 표현하고, 우리가 계산했던 cost function 식으로 계산하면 다음과 같습니다. 아래 식에서 a는 Learning rate를 의미합니다.

이 식을 기반으로 현재의 W를 2, Learning rate를 0.01로 가정하여 Gradient Descent Algorithm을 순차적으로 적용한다면 아래 식과 같습니다.

이처럼 미분값과 learning rate에 의해 1.947 → 1.899 .. 와 같이 W가 점차 작아지는 방향(좌측)으로 이동하고 있고, W=2에서는 좌측으로 이동하는 것이 cost function을 최소화 하는 방향인 것을 알 수 있습니다. 최종적으로 W = 1.429 언저리에서 cost가 더이상 줄지 않고, 이에 따라 cost가 거의 최소가 되는 W 값을 찾고 학습을 종료할 수 있습니다.

 

이러한 Gradient Descent Algorithm의 원리를 이용하면, cost function을 이루는 parameter 종류가 많아지더라도 (위에서 다룬 parameter는 W 하나), cost function을 최소화시키는 parameter의 조합을 찾을 수 있게 됩니다.

 

그러면 다음 포스팅에서는 Linear regression을 이루는 변수가 여러 가지(2가지 이상)인 경우를 다뤄보도록 하겠습니다.

 

참고한 자료1: https://hunkim.github.io/ml/

 

모두를 위한 머신러닝/딥러닝 강의

 

hunkim.github.io