[kakao x goorm] 생성 AI 응용 서비스 개발자 양성 과정/회고록

[kakao x goorm] 경사하강법과 옵티마이저, 딥러닝 학습의 시작점

Hoonia 2025. 5. 2. 09:48

오늘은 딥러닝 학습 과정에서 가장 기본적이면서도 중요한 원리인 경사하강법(Gradient Descent)과, 이를 기반으로 다양한 방식으로 발전된 옵티마이저(Optimizer) 기법들에 대해 학습하고 정리했다.
수식의 구조를 단순히 암기하는 것이 아니라, 왜 그런 수식이 필요한지, 학습률이 어떤 영향을 주는지, 그리고 신경망 학습에서 실제로 파라미터가 어떤 흐름으로 변화하는지를 전체 맥락 속에서 이해할 수 있었던 시간이었다.

손실 함수를 줄이는 과정, 경사하강법

머신러닝 모델이 학습을 통해 이루고자 하는 목표는 단 하나다.
바로 손실 함수(loss function)의 값을 가능한 작게 만드는 가중치(parameter)를 찾는 것이다.

경사하강법은 이 목표를 달성하기 위한 가장 기본적인 알고리즘이다. 핵심은 아래와 같다:

  1. 현재 위치에서 손실 함수의 기울기(gradient)를 계산하고,
  2. 이 기울기의 반대 방향으로 가중치를 조금 이동시킨다.
  3. 이 과정을 여러 번 반복하면서, 점차 손실 함수의 값이 줄어들도록 유도한다.

이처럼 경사하강법은 함수의 정확한 형태를 몰라도, 기울기만 있다면 '어디로 가야 더 낮은 값이 나오는지'를 알려주는 구조다. 그래서 "단순하지만 매우 강력한 방법"이라 불린다.

기울기란 무엇인가?

기울기란 쉽게 말해, 함수가 어느 방향으로 가장 빠르게 증가하거나 감소하는지를 알려주는 벡터다.
경사하강법에서는 이 기울기의 반대 방향으로 이동해야 손실 값이 줄어들기 때문에, 기울기의 방향과 크기를 정확히 이해하는 것이 중요하다.

수학적으로는 각 변수에 대해 편미분을 수행해 기울기를 구한다. 예를 들어, 함수가 두 변수 x, y로 구성되어 있다면 각각에 대해 편미분을 계산하고, 이를 모아 기울기 벡터를 구성한다.

이 기울기는 단순히 값이 아니라 방향 정보를 담고 있다는 점이 핵심이다. 현재 위치에서 어느 쪽으로 얼마나 이동해야 손실이 줄어들지를 알려주는 나침반과 같다.

학습률의 중요성

기울기의 방향이 정해졌다면, 이제는 얼마만큼 이동할지를 결정해야 한다.
이때 사용되는 하이퍼파라미터가 학습률(learning rate)이다.

학습률이 지나치게 작으면 손실 함수는 조금씩만 줄어들고, 전체 수렴 속도가 매우 느려진다.
반대로 너무 크면 오히려 최솟값을 지나쳐 손실이 증가하거나, 아예 수렴하지 못하고 값이 발산할 수 있다.

학습률은 딥러닝에서 가장 중요한 하이퍼파라미터 중 하나이며, 실험적으로 적절한 값을 찾는 것이 매우 중요하다.

경사하강법이 작동하는 방식

이번 슬라이드에서는 초기 가중치를 [-3, 4]로 설정하고, 학습률을 0.1로 두고 경사하강법을 반복 적용하는 예제를 살펴보았다.
결과적으로 약 100번의 반복 후, 파라미터는 [0, 0] 근처로 수렴하게 된다. 이는 손실 함수가 최소값에 가까워지고 있다는 것을 의미한다.

반면, 학습률을 10.0으로 설정하면 파라미터가 발산해버리고, 너무 작은 값인 1e-10을 설정하면 거의 변화 없이 정체되어 버린다.
이 실험은 학습률 설정이 얼마나 중요한지를 직관적으로 보여주는 예시였다.

수치 미분을 통한 기울기 근사

기울기를 구하는 가장 기본적인 방법은 수학적인 미분이지만, 실제로 신경망에서는 이를 수치적으로 근사하는 방법도 사용한다.
이를 수치 미분(numerical differentiation)이라 부른다.

 

$$
\frac{f(w + \Delta w) - f(w)}{\Delta w}
$$

 

델타 w 는 아주 작은 수이고, 이 계산을 통해 함수의 기울기를 근사할 수 있다.
신경망에서는 다차원 배열에 대해 이 수치 미분을 각 요소마다 적용해 전체 기울기 벡터를 구성한다.

옵티마이저란 무엇인가?

옵티마이저는 한마디로 말해 기울기를 이용해 가중치를 업데이트하는 알고리즘이다.
가장 단순한 형태는 경사하강법이지만, 이 외에도 다양한 상황에서 더 효율적이고 안정적인 학습을 돕기 위한 여러 방식들이 존재한다.

주요 옵티마이저 비교

Optimizer 주요 특징  추천 사용 사례
SGD 확률적으로 데이터 일부만 사용하여 업데이트. 단순하지만 진동 많음 기본적인 분류 문제
Momentum 이전 업데이트 방향을 반영해 진동 완화 이미지 분류 등
RMSProp 학습률을 가중 평균으로 조절 RNN, 강화학습
Adagrad 드물게 등장하는 피처에 큰 업데이트 NLP, 희소 데이터
Adam Momentum + RMSProp 결합, 자동 학습률 조절 대부분의 일반적인 딥러닝 문제

이러한 옵티마이저들은 단순히 계산 방식이 다른 것이 아니라, 학습 효율과 안정성에 큰 차이를 만든다.

배치 사이즈와 학습 방식

경사하강법과 옵티마이저 외에도, 학습의 방식에서 중요한 변수는 배치 사이즈(batch size)다.
이는 한 번의 학습에서 사용하는 데이터의 양을 의미하며, 아래와 같은 방식으로 분류된다.

  • 온라인 학습: 1개의 샘플만으로 업데이트 (불안정하지만 빠름)
  • 배치 학습: 전체 데이터 사용 (안정적이지만 느림)
  • 미니 배치 학습: 일부만 무작위로 사용 (속도와 안정성의 균형)

현재 대부분의 딥러닝 프레임워크에서는 미니 배치 방식이 표준으로 사용된다.
이 방식은 메모리 자원 효율성과 학습 속도, 수렴 안정성의 균형을 잡기에 가장 적합하다.

신경망 학습의 전체 흐름 정리

  1. 미니 배치 추출: 학습할 데이터를 무작위로 일부 선택
  2. 기울기 계산: 손실 함수를 기준으로 기울기를 계산
  3. 파라미터 업데이트: 옵티마이저를 통해 파라미터를 조정
  4. 반복 학습: 위 과정을 반복하면서 점점 더 나은 예측 가능

이렇게 반복된 학습을 통해 신경망은 점점 더 정교하게 데이터의 패턴을 파악하게 된다.

오늘의 회고

이번 회고에서는 딥러닝 학습을 지탱하는 핵심 원리인 경사하강법과 옵티마이저의 구조와 원리를 전체적으로 정리할 수 있었다.

특히 기억에 남는 부분은 다음과 같다:

  • 단순한 수식이 아닌, 학습의 전반적인 흐름 속에서 기울기와 학습률이 어떤 역할을 하는지
  • 다양한 옵티마이저가 등장한 배경과 그 선택 기준
  • 학습률, 배치 사이즈, 옵티마이저는 모두 하이퍼파라미터로서 모델 성능에 직접적인 영향을 준다는 사실

딥러닝을 실무에 적용할 때는 모델 구조만큼이나 학습을 제어하는 매커니즘에 대한 이해가 필요하다는 점을 새삼 깨달았다.