본문 바로가기
AI/ML & DL

[DL] 딥 러닝 기본 이론 3: 경사 하강법

by donyy 2024. 9. 22.

경사 하강법 (Gradient Descent)

경사 하강법이란 기계 학습 모델 및 신경망 훈련하는 데 일반적으로 사용되는 최적화 알고리즘으로,

예측 결과와 실제 결과 간의 오류를 최소화하여 기계 학습 모델을 학습한다.

 

경사 하강법 진행 그래프

 

배치(Batch)

배치(Batch) 한 번의 학습 단계(iteration)에 사용되는 학습 데이터의 묶음을 의미한다.

 

전체 학습 데이터는 다수의 배치로 이루어져 있으며, 모든 배치를 학습하면(= 전체 데이터를 학습하면)

⇒ 1 에폭(epoch)을 학습하게 되는 것이다.

 

 

배치 경사 하강법(Batch Gradient Descent)

기울기 계산에 전체 학습 데이터셋 사용하고 기울기를 한 번만 계산하여 모델의 파라미터를 업데이트하는 방식이다.

  • 장점: 모든 데이터에 대한 정보를 고려한 가중치 업데이트
  • 단점: 대규모 데이터셋에서는 계산 비용 ↑↑

 

확률적 경사 하강법 (SGD, Stochastic Gradient Descent)

각 반복에서 무작위로 선택된 하나의 데이터 샘플을 사용해 기울기를 계산하는 방법으로,

전체 데이터가 아닌 일부 데이터로 가중치를 업데이트하는 방법이다.

  • 장점: 무작위성 ⇒ 지역 최솟값에서 벗어나 전역 최솟값을 찾을 가능성 ↑, (상대적으로) 계산 속도 ↑
  • 단점: 경사의 추정이 불안정 ⇒ 학습 과정이 매끄럽지 않을 수 있음

 

★ 미니배치 경사 하강법 (Minibatch Gradient Descent)

전체 학습 데이터를 미니 배치로 나누고 각 미니 배치에 대해 독립적으로 경사를 계산하여 가중치를 업데이트하는 방법으로 최근 가장 인기 있는 경사 하강법이다. 전체 데이터셋이 모두 1000이 될때까지 반복한다.

 

 

예를 들어, 위와 같이 전체 학습 데이터가 1000개이고 배치 사이즈가 100인 경우라면, 총 10개의 미니배치(1000/100 = 100)가 생기고, 1 epoch 당 10번의 경사 하강법이 진행되는 것이다.

  • 장점: 메모리 효율 ↑, 계산 속도 ↑, 지역 최솟값에 갇히는 것을 방지
  • 단점: 배치 크기 등의 하이퍼파라미터에 매우 민감
    (ex. 너무 작은 배치크기 ⇒  불안정성 ↑, 너무 큰 배치크기 ⇒  계산 효율 ↓, 지역 최솟값에서 벗어나는 것을 어렵게 함)