경사하강법(Gradient Descent)

앞의 포스트에서 매개변수를 업데이트를 하는 과정에서 손실을 줄이기 위해 가중치와 편향 값을 수정한다고 하였습니다. 하지만 그냥 아무 값이나 넣는다면 최적화된 값을 찾는데 매우 오랜 시간이 걸릴 것입니다.

경사하강법이란, 손실이 최소가 되는 최적의 가중치를 찾는 방법입니다. 먼저 함수의 기울기(경사)를 구하여 기울기가 낮은 쪽으로 계속 이동시켜서 극값에 이를 때 까지 반봅하는 작업을 반복하면 최적의 가중치를 을 수 있습니다.


경사하강법: 함수의 기울기(경사)를 구하여 기울기의 절댓값이 낮은 쪽으로 이동시켜 극값(최적값)을 찾는 방법


여기서 쓰이는 함수란, 손실이 최소가 되는 최적의 가중치를 구하기 위한 모든 w값의 손실을 나타내는 함수입니다. 이를 그래프로 그리면 아래의 그림과 같은 모양이 그려집니다.

가중치의 크기에 따른 손실 그래프를 그려보면 위의 그림과 같이 아래로 볼록한 모양이 됩니다. 왜 아래로 볼록한 모양이 나오는 것일까요?

손실이 최소가 되는 가중치의 최적점(점 A)이 있다고 가정하겠습니다.  이 점은 이미 손실이 최소인 점 A는 그보다 더 작은 가중치와 더 큰 가중치에서는 더 높은 손실을 나타낼 것입니다. 그리고 이 최적점에서 멀어질 수록 그 손실은 더 커지게 되어 위와 같은 아래로 볼록한 모양의 손실-가중치 그래프가 그려지게 됩니다.



경사하강법으로 최적의 가중치를 찾는 과정

1. 가중치(w)의 시작점 정하기

시작점을 정하는 것은 별로 중요하지 않습니다. w를 0으로 설정해도 좋고, 임의의 값을 설정해도 괜찮습니다. 이번 예에서는 0보다 조금 더 큰 값으로 시작점을 설정하겠습니다.


2. 시작점의 기울기를 구해 다음 점의 이동 방향 결정

시작점의 기울기를 편미분을 하여 구해줍니다. 그 다음 기울기의 크기의 반대 방향으로 점을 이동시켜줍니다.

우리가 설정한 시작점의 기울기는 음수(-)이니 점을 양수(+) 방향으로 이동시켜줍니다.



3. 기울기의 크기의 일부를 시작점에 더한 만큼 다음 점으로 이동

기울기의 크기의 일부를 시작점에 더해 다음 점으로 이동을 시켜줍니다. 이렇게 더해진 값을 보폭(Step)이라 합니다. 이 보폭을 어떻게 결정하는 지는 다음 포스트(06_학습률)에서 다루도록 하겠습니다.

+ Recent posts