경사하강법(gradient descent)은 「손실함수의 값을 줄이는 방향으로 모델 파라미터를 조금씩 옮기는 알고리즘」입니다.
거의 모든 머신러닝 모델이 학습할 때 이 방법의 변형을 씁니다.
직관적 비유는 「짙은 안개 속의 산에서 가장 낮은 골짜기를 찾아 내려가는 등산가」입니다.
시야가 가려져 전체 지형을 볼 수 없으니, 자기가 선 자리에서 「발 밑의 기울기」만 느끼고 「가장 가파르게 내려가는 방향」으로 한 걸음을 옮깁니다.
그 새 자리에서 또 한 걸음.
이를 반복하면 결국 골짜기에 도달합니다.
수학적으로 「발 밑의 기울기」가 바로 「그래디언트(gradient)」입니다.
각 파라미터를 조금 바꿨을 때 손실이 어느 방향으로 얼마나 변하는지를 계산한 벡터입니다.
그 벡터의 반대 방향으로 한 걸음 가면 손실이 줄어듭니다.
한 걸음의 크기를 정하는 값이 「학습률(learning rate)」입니다.
너무 작으면 학습이 한없이 느리고, 너무 크면 골짜기를 건너뛰어 진동하거나 발산합니다.
학습률 설정이 머신러닝 학습 성공의 가장 결정적 변수 중 하나입니다.
단순한 경사하강법에는 변종이 많습니다.
매 스텝에 일부 데이터만 보는 「확률적 경사하강법(SGD)」, 가속도를 더한 「Momentum」, 학습률을 자동 조절하는 「Adam」 등이 대표적입니다.
오늘날 거의 모든 신경망 학습은 Adam이나 그 변형을 씁니다.
한 줄 요약
경사하강법은 손실함수의 기울기를 따라 파라미터를 한 걸음씩 옮겨 골짜기(최소값)로 내려가는 알고리즘이며, 학습률 설정이 결정적입니다.
더 알아볼 것
- SGD·Momentum·Adam 비교
- 학습률 스케줄링과 워밍업
- 2차 미분 정보를 쓰는 뉴턴법