[ML] 최적화 알고리즘

하영(Emma)·2025년 9월 17일

Machine Learning

목록 보기
6/10
post-thumbnail

최적화 알고리즘 (Optimization Algorithm)

딥러닝 모델을 학습시킬 때 가장 중요한 과정 중 하나는 손실 함수(Loss Function)를 최소화하는 것이다.
모델이 예측한 값과 실제 정답이 다르면 손실이 발생하는데, 이 손실을 줄이려면 모델 파라미터(가중치, 편향 등)를 잘 조정해야 한다.

그럼 어떻게 하면 파라미터를 조금씩 조정해 최적의 값을 찾을 수 있을까?
바로 최적화 알고리즘(Optimization Algorithm) 이 그 역할을 한다.


Gradient Descent

Gradient Descent 원리

최적화 알고리즘의 출발점은 경사 하강법(Gradient Descent) 이다.
아이디어는 아주 단순하다.

  • 일단 가중치와 편향을 아무렇게나 초기화한다.
  • 현재 위치에서 손실이 얼마나 되는지 확인한다.
  • 손실을 줄이려면 어디로 가야 할까?

여기서 그라디언트(Gradient) 가 등장하는데,
그라디언트는 손실 함수가 가장 빠르게 증가하는 방향을 알려준다.
그렇다면 손실을 줄이려면? 반대 방향으로 가면 된다.

이때 이동하는 보폭을 learning rate(학습률, α) 라고 부른다.
너무 크게 가면 발산할 수 있고, 너무 작으면 학습이 너무 느려진다.

Gradient Descent 기본 수식

θ:=θαθL(θ)\theta := \theta - \alpha \nabla_\theta L(\theta)
  • θ\theta: 모델의 파라미터(가중치, 편향 등)
  • L(θ)L(\theta): 손실 함수 (loss function)
  • θL(θ)\nabla_\theta L(\theta): 파라미터에 대한 손실 함수의 기울기(gradient)
  • α\alpha: 학습률(learning rate)

Gradient Descent 종류

  1. Gradient Descent (경사 하강법, GD)
    모든 데이터를 사용해 기울기를 계산하고, 그 방향으로 파라미터를 한 번씩 업데이트하는 방식이다.
    안정적이지만 데이터가 많을수록 계산이 느리고, 지역 최적해(local minimum)에 갇히기 쉽다.

  2. Stochastic Gradient Descent (확률적 경사 하강법, SGD)
    매번 데이터를 하나만 뽑아서 그라디언트를 계산하고 파라미터를 업데이트한다.
    속도는 빠르지만, 매번 방향이 불안정해서 진동이 크다.
    대신 local minimum을 탈출할 기회가 있다는 장점도 있다. (늘 global minimum을 찾는다는 것은 아님!

  3. Mini-batch SGD (미니배치 경사 하강법)
    SGD는 데이터를 하나씩만 보니까 너무 성급하게 방향을 결정한다는 단점을 보완하기 위한 방법이다. 이는 전체 데이터 중 일부(배치)를 뽑아 기울기를 계산한다.
    GPU 병렬 연산 덕분에 빠르고, 안정성도 적당히 유지된다.
    그래서 딥러닝에서는 사실상 표준처럼 사용된다.


발전된 최적화 알고리즘들

연구가 발전하면서 경사 하강법을 더 효율적으로 만들려는 시도가 이어졌다.
대표적으로 다음과 같은 알고리즘들이 있다.

  • Momentum
    매번 기울기를 그대로 따르지 않고, 이전 업데이트 방향을 조금 더 반영한다.
    관성을 가진 것처럼 움직여서 진동을 줄이고 빠르게 수렴한다.

  • RMSProp (Root Mean Square Propagation)
    파라미터마다 다른 학습률을 적용한다.
    가파른 방향은 조심스럽게, 완만한 방향은 과감하게 이동한다.

  • Adam (Adaptive Moment Estimation)
    Momentum(1차 모멘트)과 RMSProp(2차 모멘트, 기울기 제곱 평균)을 합친 알고리즘이다.
    파라미터마다 학습률을 다르게 적용하면서도 진동을 줄여 안정적으로 학습된다.
    현재 가장 널리 쓰이는 최적화 알고리즘이다.

  • AdamW
    Adam에 Weight Decay(가중치 감소) 를 명시적으로 적용한 버전이다.
    정규화 효과가 커져서 과적합을 방지하는 데 도움이 된다.
    최신 딥러닝 모델에서는 Adam보다 AdamW를 더 많이 쓴다.


하이퍼파라미터 vs. 파라미터

최적화 알고리즘에는 사람이 직접 정해줘야 하는 값들이 있다.
이를 하이퍼파라미터(hyperparameter) 라고 부른다.

대표적인 예시:

  • Epoch: 전체 데이터를 몇 번 반복할지
  • Batch size: 한 번에 몇 개 데이터를 볼지
  • Learning rate: 한 번 이동할 때 보폭 크기

반면, 모델이 스스로 학습하는 값들은 파라미터(parameter) 라고 부른다.
예를 들어 가중치(weight)와 편향(bias)는 파라미터이고, epoch나 learning rate는 하이퍼파라미터다.

하이퍼파라미터 예시:

  • 학습 관련: epoch, batch size, learning rate, initial weight
  • 모델 구조: layer 수, node 수, activation function
  • 학습 목표: loss function 선택, optimization algorithm 선택

  • 최적화 알고리즘은 손실을 줄이기 위해 파라미터를 조정하는 방법이다.
  • Gradient Descent는 그 기본 아이디어이고, 배치/확률적/미니배치 방식으로 나뉜다.
  • Momentum, RMSProp, Adam, AdamW 같은 발전된 알고리즘은 더 빠르고 안정적으로 학습을 돕는다.
  • 학습 과정에서는 epoch, batch size, learning rate 같은 하이퍼파라미터를 잘 설정하는 것이 중요하다.

정리하자면, 딥러닝 모델의 성능은 단순히 모델 구조만으로 결정되지 않는다.
어떤 최적화 알고리즘을 쓰느냐, 그리고 하이퍼파라미터를 어떻게 조율하느냐에 따라 같은 모델도 전혀 다른 결과를 낼 수 있다.

profile
Data Scientist, interested in CV, NLP

0개의 댓글