TigerCow.Door



안녕하세요. 문범우입니다.

이번 포스팅에서는 Linear Regression에서 cost를 최소화, minimize하는 방법에 대해 알아보겠습니다.


* 해당 포스트의 모든 내용은 김성훈 교수님의 '모두를 위한 딥러닝'을 바탕으로 제작되었습니다.

관련한 상세 내용은 아래 링크를 참고해주세요.

https://hunkim.github.io/ml/



Cost Function을 최소화 하기


지난 포스팅에서 알아본 것과 같이 우리는 아래와 같은 hypothesis와 cost를 정의하였습니다.



그리고 앞으로의 설명을 위해서 hypothesis를 좀 더 간단히 만들었습니다.



cost는 여전히 동일하게 되어있습니다.


이럴때 cost는 어떻게 될까요?



위의 그림과 같이, W=1 일때 cost(W)는 0이 됩니다.

그리고 W=0 일때, cost(W)는 4.67이 됩니다.

W=2일때도 같은 방식으로 하면 4.67과 비슷한 값이 나옵니다.


이러한 W와 cost(W) 값을 그래프로 그려보면 아래와 같이 그려지게 됩니다.



그럼 여기서, 우리의 목표는 무엇이었는지 다시 생각해봅니다.

cost가 최소되는 지점, 즉 위의 그래프에서 cost가 0인, W=1인 지점을 찾는 것 입니다.

이러한 것을 찾는 방법으로 Gradient descent algorithm이 있습니다.


Gradient descent algorithm이란, 경사를 따라 내려간다는 알고리즘으로써

머신러닝을 비롯한 많은 곳에서 minimization 문제에서 사용됩니다.


Gradient descent algorithm에서는,

특정값에서 시작하고 그 시점의 경사도, 즉 기울기를 확인하여 그 기울기를 따라서 움직이게 됩니다.

그러다 최소점(또는 최고점)을 만나게 되면 기울기가 0이 됩니다.

따라서 해당 알고리즘은 어떠한 점에서도 시작할 수 있습니다.

그리고 W에 대해 약간의 변화를 줍니다.

그리고 이전의 값과 현재의 값을 통해 기울기를 계산하고 이 과정을 반복합니다.

이를 통해 예외적인 경우를 제외하고, 항상 최저점에 도달할 수 있습니다.


기울기는 어떻게 구할까요?

우리에게 친숙한 방법으로 미분이 있습니다.


미분을 이용하기에 편하도록 cost(W) 함수를 약간 수정하는데, 이는 거의 동일한 수식이라고 생각하셔도 됩니다.




그리고 원래있던 W에 알파값이라는 값에 cost(W)함수를 미분한 값을 곱하여 뺍니다.



이를 통해 미분을 실시하여 식을 정리하면 다음과 같습니다.




위의 수식들 중에서 가장 아래에 있는 식이 우리가 원하는 Gradient descent algorithm 식 입니다.

이러한 수식을 이용하면 cost function을 최소화 할 수 있게 됩니다.



블로그 이미지

Tigercow.Door

Back-end / Python / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요