2020. 8. 5. 22:28ㆍ머신러닝
간략화 하기 위해 H(x)에서 b를 생략하여 H(x) = Wx 라고 하고 이에 따라 Cost 함수도 간략해진다.
이 Cost 함수가 어떻게 생겨먹었는지 살펴보자.
아! 당연히 cost(W)는 W에 대한 이차함수일 것이다. 우리는 이 cost가 최소가 되는 W를 구하는 것이 목표이다.
오! cost(W)를 W로 미분하였을 때 0이 되는 값(꼭지점)의 W값이겠구나! (위 함수에서는 1) 이러한 방식의 알고리즘이
Gradient descent algorithm (경사하강법)이다.
그럼 Gradient descent algorithm이 작동하는 방법을 보자.
Initial Weight에서 기울기를 구한 뒤, 그 기울기 값을 W에 곱한 값을 W에서 빼준다. 이를 계속해서 반복하는데 그럼 W값은 꼭지점으로 이동할 것이다. 왜냐하면 한 점에서의 기울기 값이 꼭지점의 우측에서는 양수, 좌측에서는 음수이기 때문이다.
Gradien descent algorithm에서는 미분이 필수이다. 기울기를 구해야 하니까! 그 전에 cost 함수의 형태를 조금 바꿔준다.
어차피 몇으로 시그마 항을 나누든지 우리가 반영할 기울기의 특성은 크게 안변하니, 우리가 편하게 바꾸자. 미분할 때 약분되라고.
자 그럼 이렇게 W 값을 지속적으로 업데이트(:=) 해줄것인데, 여기서 α는 learning rate (학습률)로써 얼마나 값을 반영할 지 곱하는 상수이다. 학습률이 너무 크면 와리가리 할 것같다. 보통 0.01이나 0.001과 같이 매우 작은 숫자이다. 그 우측은 cost(W)를 W로 편미분하는 모습이다.
그럼 이렇게 된다. 이 식이 Gradient descent를 표현하는 식이 되겠다. W값에서 기울기를 뺀 값을 W에 업데이트 하는 모습.
이렇게 정리가 된다. 하하하 미분은 프로그램들이나 텐서플로우가 다 해줄거라구! 공학자 만세!
그런데 위의 경우와 같이, 기울기가 0인 부분이 많은 경우 실제 minimum cost (보라빛)가 아니라 파란 부분들에 빠질 수 있다.
이런 부분들을 local minimum 이라고 하는데, local minimum은 주변에서 가장 작은 값임과 동시에 기울기 또한 0이기 때문에 Gradient descent algorithm은 이러한 상황에 적용을 못하게 된다.
이런 경우에는 매우 유용하게 사용할 수 있겠다. 편-안