뭐라도 끄적이는 BLOG

Lec 03 How to minimize cost 본문

AI/모두를 위한 머신러닝

Lec 03 How to minimize cost

Drawhale 2021. 4. 25. 05:20

Hypothesis and Cost

Linear Regression은 직선적 관계를 가지고 있기 때문에 Hypothesis은 1차 방정식으로 표현할 수 있습니다.

그리고 Linear Regression에서 사용하는 CostFuntion은 모든 x에서 실제값 y와 예측한 값 H(x)간의 거리들의 제곱값을 더한 것입니다.

우리의 목표는 cost를 가장 작게하는 W와 b를 찾는것이 목표입니다.

 

Simplified hypothesis

이해를 위해 수식을 간단히 만들겠습니다 기존의 수식에서 b를 삭제하면 cost는 W에의해 변화되는 function이됩니다.

이것은 계산을 최대한 간단하게 해보기 위한 것입니다.

 

What cost(W) look like?

간단하게 만든 cost function에 W값을 하나 하나 대입하면 위와 같은 W를 변수로하는 2차원 그래프형태인 것을 알 수 있습니다. 다시 우리의 목표를 알아보면 cost가 가장 작은값을 찾는 것입니다. 우리는 이것을 눈으로 확인할 수 있지만 우리는 기계적으로 이것을 알아보는 방법을 알아야 합니다.

Gradient descent algorithm

Cost Function을 최소화 하는 알고리즘들 중 하나입니다. Machine Learning이외에도 Minimization 문제에 사용됩니다. Gradient Descent Algorithm을 사용한다면 Cost Function이 최소값을 가질 때의 W와 b의 값을 구할 수 있습니다. Gradient Descent Algorithm은 2개 이상의 변수를 가지고 있는 함수에도 적용이 가능한 매우 좋은 알고리즘 입니다.

How it works?

  • Start with initail guesses
  • Keeping changing W and b a little bit to try and reduce cost(W,b)
  • Each time you change the parameters, you select the gradient which reduces cost(W,b) the most possible
  • Repeat
  • Do so until you converge to local minimum
  • Has an interesting property

임의의 점에서 시작 될 수 있습니다. 임의의 점에서 Gradient(기울기)를 계산한 뒤 이 값을 줄이기 위하여 W값과 b의 값을 조금씩 변화시킨 지점을 찾습니다. W와 b값을 조금씩 변화시킨 지점들중에서 Gradient가 가장 많이 감소된 지점을 찾아서 움직인 후 같은 과정을 계속 반복하게 됩니다. 최종적으로 Cost Function이 최소가 되는 지점을 발견할 수 있게됩니다.

Formal definition

Gradient Descent Algorithm에서 Gradient를 구할 때에는 Cost Function을 미분하여 구하는데, 계산을 조금더 편하게 하기위해 바꾸어 줍니다.

이 공식은 W값을 현재의 값에서 Cost Function의 미분 값에 Learning Rate라는 임의의 값 α를 곱한 값을 뺀 값으로 교체를 하라는 의미 입니다.

계산을 위해 바꾼 CostFunction을 Gradient Descent Algorithm의 공식에 대입을 하면

해당 공식과 같이 나오게 됩니다.

Gradient Descent Convex function

 

예외상황또한 존재합니다. 시작점이 다를때 다른 minimaze 결과를 받을 수 도 있습니다.

하지만 우리의 식은 아래와 같은 형태로 나오게되기 때문에 무조건 가장 작은 값을 찾을 수 있는 형태입니다.

 

위상황 같이 나오게 하지 않기 위해 cost function 을 설계할때 Convex function의 모양이 나오게 되는 확을 할 필요가 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 


 

 

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

 

hunkim.github.io

 

반응형