경사하강법 (gradient descent)은 함수의 최소값을 찾는 문제를 해결하기 위한 방법론입니다.
일반적으로 최소값 혹은 최대값은 미분을 이용하여 구하는 것이 널리 알려진 방법이지만, 복잡한 함수이거나 닫힌 형태(Closed Form)의 함수의 경우에는 미분을 이용하여 최소값을 구할 수 없습니다.
이런 경우에 활용될 수 있는 것이 경사 하강법입니다. 머신러닝의 경우, 비용 함수(cost function)의 최소값을 찾기 위해 자주 활용됩니다.
경사하강법은 매우 간단한 원리인데, 1차 미분계수를 점차 조정하는 식으로 최소값을 찾습니다. 경사를 반복적으로 하강해가면서, 비용함수가 가장 작아지는 지점을 찾는 것입니다.
경사하강법은 Step Size, 혹은 Learning rate라고 하는 하이퍼파라미터가 가장 중요한데, Learning rate가 작을 경우 보폭이 작기 때문에 최소값을 찾아가는 데 시간이 너무 오래 걸릴 수 있으며, 너무 클 경우 최소값에 도달하지 못하고 이를 건너뛰거나 수렴하지 못하는 경우가 발생할 수 있습니다.
경사하강법은 배치 경사 하강법, 확률적 경사 하강법(SGD), 미니 배치 경사 하강법 등 다양한 변형들이 존재하는데, 실무적으로는 미니 배치 경사 하강법이 자주 활용됩니다.
최적화(Optimization)이란 손실함수 값을 최소화하는 파라미터를 구하는 과정입니다. 학습 데이터를 입력하여 네트워크 구조를 거쳐(딥러닝 과정) 예측값을 얻습니다. 이 예측값과 실제 정답과의 차이를 비교하는 함수가 손실 함수입니다.
즉, 모델이 예측한 값과 실제값의 차이를 최소화하는 네트워크 구조의 파라미터를 찾는 과정이 최적화입니다.
기울기란 미분 가능한 N개의 다변수 함수f를 각 축이 가리키는 방향마다 편미분 한 것입니다.