머신러닝

2) 경사 하강법 (Gradient descent method)

무네림 2021. 8. 31. 01:05
 

1) 선형회귀(Linear Regression)

선형 회귀에 대해 설명하기 전에 아래와 같은 문제가 있다고 생각해봅시다. 다음과 같은 표가 주어질 때 마신 커피 잔 수에 따른 시험 점수를 예측할 수 있을까요? 위의 표에 대한 데이터를 아래

moo-nerim.tistory.com

우리는 앞에서 손실 함수를 대충 본 적이 있습니다. 손실 함수가 아래와 같은 모양을 가지고 있다고 가정해봅시다.

[출처] : https://towardsdatascience.com/using-machine-learning-to-predict-fitbit-sleep-scores-496a7d9ec48

우리의 목표는 손실 함수를 최소화(Optimize)하는 것입니다. gradient descent는 함수의 최소값을 찾는 문제에서 활용됩니다. 손실 함수를 최소화하는 방법은 이 그래프를 따라 빨간 x 표시가 되어 있는 곳까지 점점 아래로 내려가야합니다.

 

경사 하강법(Gradient descent method)

즉, 경사 하강법은 함수의 기울기(즉, gradient)를 이용해 W의 값을 어디로 옮겼을 때 함수가 최소값(b)을 찾는지 알아보는 방법이라고 할 수 있습니다. 

[출처] : https://medium.com/hackernoon/life-is-gradient-descent-880c60ac1be8

iteration은 반복횟수를 나타내며 반복횟수 만큼 모델을 학습시키며 그래프의 최소점에 도달하게 되어 학습이 종료됩니다. 이때, 빨간 점과 빨간 점 사이의 전진하는 단위를 Learning rate라고 부릅니다. Learning rate가 작을수록 최소점에 도달하는 간격이 많아져 시간이 오래걸립니다. 따라서 Learning rate의 간격에 따라 모델의 학습 시간이 결정이 됩니다. 

 

그렇다고해서 간격이 크다고 매번 시간이 적게 걸리는 것은 아닙니다. 

[출처] : https://medium.com/hackernoon/life-is-gradient-descent-880c60ac1be8

Learning rate가 지나치게 크다면 아래에 도달했음에도 진동이 계속 일어나 우리가 찾으려는 최소값을 지나치게 됩니다. 최악의 경우에는 밖으로 튕겨나가 무한대로 발산하게 될 수도 있습니다. 이런 상황을 Overshooting이라고 합니다.

 

간단한 선형 회귀 문제의 경우는 위 그래프처럼 그릴 수 있지만 복잡한 가설을 세울 경우에는 사람이 그릴 수도 없고 상상할 수 없는 형태가 됩니다. 

[출처] : https://regenerativetoday.com/logistic-regression-with-python-and-scikit-learn/

우리의 목표는 이 손실 함수의 최소점인 Global cost minimum을 찾는 것입니다. 그런데 우리가 한 칸씩 움직이는 스텝(Learning rate)를 잘못 설정할 경우 Local cost minimum에 빠질 가능성이 높습니다. 위의 그래프의 경우 Local cost minimum은 3곳이 존재합니다. 

 

💡 정리하자면 우리는 최대한 Global minimum을 찾기 위해 좋은 가설과 좋은 손실 함수를 만들어서 기계가 잘 학습할 수 있도록 만들어야합니다.

사진 및 글 작성에 대한 도움 출처 : 이태희 님

반응형