함수 최적화 방법 중 하나인 경사하강법(Gradient Descent)에 대해 알아본다.


Gradient 를 이용해서 함숫값을 줄인다고 해서 Gradient Descent 라는 표현을 사용한다. 경사하강법은 1차 미분계수를 이용해 함수의 최소값을 찾아가는 iterative한 방법이다.


✔️ 경사하강법

경사하강법(Gradient Descent) 은 기본적인 함수 최적화(optimization) 방법 중 하나이다. Steepest Descent 방법이라고도 불린다. 여기서 최적화란 함수의 최댓값 또는 최솟값을 찾는 것을 말한다.



머신러닝에서는 Loss를 최소화해야 가장 좋은 퍼포먼스를 보여줄 수 있기 때문에 Loss를 minimize 하는 parameter를 찾는 것이 핵심이다.



현재(Wcurrent) 위치에서 Loss가 가장 작은 지점(Wbest)으로 찾아 나아가는 과정이다. Gradient를 구하고 Gradient 방향으로 해를 계속 업데이트함으로써 최적의 해를 찾는다.

Loss 함수가 이차함수라면 미분값이 0인 지점을 기준으로 최소값을 찾을 수 있지만 아래 그래프와 같은 함수는 매우 복잡하기 때문에 오차가 최소인 지점을 찾기가 어렵다.

3차원 그래프(왼쪽), 3차원 정보를 2차원으로 표현한 등고선(오른쪽)


3차원 그래프(왼쪽)를 그리게 되면 안보이는 부분이 많다는 단점이 있다. 또한 위 그림과 같이 미분값이 0인 지점이 여러개 있기 때문에 전역적인 최적해(Global Optimum)를 구할 수 있다는 보장이 없다.

이때 3차원 그래프의 단점을 보완하기 위해 3차원 정보를 2차원인 등고선(오른쪽)으로 표현한다. 각 영역마다 Loss가 정의되는데 등고선에 그려진 붉은 선은 가장 작은 Loss 를 찾는 과정이다.

(1) 경사하강법의 유도

등산의 경우 산 꼭대기에서 최저점으로 하산하려면 비탈길을 타고 계속 내려오면 된다. 이와 마찬가지로 Loss 함수도 경사(기울기)가 아래로 향하는 방향으로 계속 이동하다보면 Loss가 최저점인 지점에 도달하게 된다.



이때 기울기는 그래디언트(gradient, ∇) 라고 한다. 만약 그래디언트가 (-)라면 하산은 (+) 방향으로 이동한다. 반대로 그래디언트가 (+)라면 하산은 (-) 방향으로 이동한다.

이동거리그래디언트와 비례하므로 그래디언트가 크면 이동거리가 크게 증가하고 그래디언트가 작으면 이동거리는 작게 증가한다.

(2) 하이퍼 파라미터 설정

경사하강법에 있어서 학습률을 조절하여 학습 속도(Learning rate) 를 증가시킬 수 있다. 그러나 step size가 너무 커버리면 함수값이 커지는 방향으로 최적화가 이루어진다.



대용량 데이터를 대상으로 할 때 Step size를 작게(학습속도 느림) 설정한다면 시간이 매우 오래걸릴 수 있다. 또한 Minimun 지점에 수렴하지 못할 수도 있으므로 적절한 Step size를 설정해줘야 한다.

(2) 문제점

경사하강법의 경우 아래 그래프와 같이 local minimum에 빠지는 경우가 생길 수 있다.

최솟값은 global minimum이지만 local minimum을 손실(Loss)의 최솟값으로 정의한다면 모델 성능이 나빠질 수 있다. 그러나 MSE의 경우 볼록 함수(convex function)로 local minimun에 빠질 가능성이 없으며, 고차원의 공간에서는 local minimum에 빠질 가능성이 현저히 낮으므로 큰 문제가 되지 않는다.



✔️ Reference


👩🏻‍💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.

댓글남기기