[Deep Learning] 딥러닝의 심장, Gradient Descent: 왜 모든 길은 경사 하강법으로 통하는가?

nomadicsoul·2026년 3월 20일

deeplearning

목록 보기
2/20

딥러닝 모델이 '학습'한다는 것은 수만 명의 연주자가 있는 오케스트라가 단 하나의 완벽한 화음을 찾아가는 과정과 같습니다. 현대 딥러닝의 거의 모든 학습 알고리즘이 Gradient Descent(경사 하강법)를 사용하는 이유는, 수백만에서 수천억 개에 달하는 가중치(Weight)를 '동시에' 그리고 '효율적으로' 수정할 수 있는 가장 확실한 수학적 도구이기 때문입니다.

우리는 모델에 데이터를 밀어 넣어 성적표(Loss)를 받고, 그 성적을 올리기 위해 어떤 나사(Weight)를 어느 방향으로 조여야 할지 결정해야 합니다. 이때 모든 나사를 하나씩 만져보는 것은 불가능에 가깝지만, Gradient Descent는 미분이라는 강력한 가이드를 통해 모든 가중치가 일제히 오차를 줄이는 방향으로 전진하게 만듭니다. 결국 딥러닝의 학습이란, 이 거대한 지능의 숲에서 Optimizer가 정교하게 길을 깎아 나가는 '최적화의 여정'입니다.


1. Forward Pass (xOutputLossx \to \text{Output} \to \text{Loss})

데이터 xx가 들어가서 최종 LossLoss라는 성적표가 나올 때까지의 모든 과정을 Forward Pass라고 부릅니다.
1. 선형 연산 (z=Wx+bz = Wx + b): 입력 데이터(xx)에 가중치(WW)를 곱합니다.
2. 활성화 (Activation): ReLU나 Sigmoid 같은 함수를 거쳐 비선형성을 부여합니다.
3. 예측값 (y^\hat{y}): 드디어 우리가 기대하는 개수만큼의 출력이 나옵니다.
* 예: 3종류 동물 분류 문제라면 3개의 숫자 출력
4. 손실 계산 (Loss): 정답(Label)과 예측값의 차이를 계산해 하나의 숫자(오차)로 만듭니다.

Weight은 왜 Output이나 Input보다 훨씬 많을까?
결론부터 말하면 Weight의 개수 \neq Input의 개수 \neq Output의 개수입니다.

  • Input: 내가 관찰한 특징 (예: 100개 픽셀)
  • Output: 내가 내뱉을 대답의 가짓수 (예: 개/고양이 2개)
  • Weight: 이 둘을 연결하는 '모든 지능의 연결고리'
  • 만약 100개의 입력을 받아 10개의 출력을 낸다면, 단순 연결만으로도 100×10=1,000100 \times 10 = 1,000개의 Weight가 생깁니다
  • 여기에 층(Layer)이 깊어지면 Weight는 수백만 개로 불어납니다. 지능의 깊이(Weight)는 문제의 규격(Output)보다 훨씬 방대해야 복잡한 세상을 배울 수 있기 때문입니다.

Backward Pass: 오차의 역전파와 Chain Rule

성적표(LossLoss)를 받았다면 이제 모델을 수리할 시간입니다. 이때 Chain Rule(연쇄 법칙)이라는 마법이 쓰입니다.

  • "누가 범인인가?": LossLoss에 대해 각 가중치(WW)가 얼마나 기여했는지 미분값(Gradient)을 구합니다.
  • 연쇄 법칙: 출력층에서 발생한 에러 신호를 입력층 방향으로 거꾸로 전달하며 각 층의 기울기를 곱해 나갑니다.
    LossW=LossOutput×Outputz×zW\frac{\partial Loss}{\partial W} = \frac{\partial Loss}{\partial \text{Output}} \times \frac{\partial \text{Output}}{\partial z} \times \frac{\partial z}{\partial W}

업데이트와 Optimizer: 수만 개의 나사를 동시에 조이기

미분으로 방향(Gradient)을 정했다면, 실제로 가중치를 수정합니다.

  • 동시 업데이트: Optimizer는 수만 개의 가중치를 각자의 기울기 방향으로 동시에 조금씩 이동시킵니다.
  • 수학적 보장: 각 가중치가 자신의 편미분 방향(-\nabla)으로 움직이면, 전체 LossLoss의 합은 반드시 줄어드는 방향으로 수렴하게 됩니다.
단계흐름 (Data Flow)주요 구성 요소역할
Forwardxf(x)Lossx \to f(x) \to \text{Loss}활성화 함수, 가중치(WW)예측을 수행하고 성적표(Loss) 산출
BackwardLossChain RuleLoss \to \text{Chain Rule}미분(Gradient)에러의 원인이 되는 가중치 기여도 파악
UpdateOptimizerW\text{Optimizer} \to WAdam, SGD, 학습률가중치를 실제로 수정하여 학습 완료

효율의 미학: 왜 전체 데이터를 다 쓰지 않을까? (Mini-batch)

이 모든 과정을 수백만 개의 전체 데이터를 다 보고 수행하면 컴퓨터가 멈출지도 모릅니다. 그래서 우리는 Mini-batch 방식을 씁니다.

  1. 데이터를 작은 묶음으로 나눈다.
  2. 묶음마다 Forward -> Backward(Update)를 실행한다.
  • 장점: 훨씬 빠르고, 약간의 '노이즈' 덕분에 지역 최솟값(Local Minimum)에 갇히지 않고 더 좋은 길을 찾아갑니다.

학습이란 가중치(Weight)를 배워가는 일련의 과정입니다.

profile
꾸준히

0개의 댓글