본문 바로가기
  • AI 개발자가 될래요
Deep Learning

[하이퍼파라미터 튜닝 꿀팁] 배치(Batch)를 늘렸다면, Decay를 높이세요!

by 꿀개 2023. 11. 16.

배치(Batch)를 늘렸다면, Decay를 높이세요! / 하이퍼파라미터 튜닝

 

안녕하세요

오늘은 하이퍼파라미터 튜닝을 통해 얻어진 꿀팁에 대해 포스팅하겠습니다.

 

딥러닝 모델을 학습하다보면, 배치(Batch)를 늘려야 할 필요성을 느낄 때가 있습니다.

 

여기서, 배치(Batch)란 무엇일까요?

 

배치(Batch) 란?

'배치(batch)'란 기계 학습에서 여러 샘플을 하나의 그룹으로 묶어 동시에 처리하는 것을 말합니다.

한 번의 배치 처리에서 학습 알고리즘은 배치에 포함된 모든 샘플에 대해 예측을 수행하고,

그 결과에 대한 오차를 계산한 다음, 모델의 가중치를 조정합니다. 이 과정을 '배치 학습'이라고 합니다.

 

배치 크기(batch size)는 이러한 샘플 그룹의 크기를 나타내며, 한 번의 업데이트에 사용되는 데이터의 양을 결정합니다.

 

예를 들어, 

Batch size = 1 로 설정한다면, 한 번의 이터레이션(iteration) 동안

  • 1개의 데이터를 네트워크의 입력으로 넣고,
  • 이를 통해 나온 1 개의 출력을 GT(Ground Truth) 와 비교하여 Loss 를 계산하고, 
  • Backpropagation 을 진행합니다.

 

Batch size = 8 로 설정한다면, 한 번의 이터레이션(iteration) 동안

  • 8개의 데이터를 네트워크의 입력으로 넣고,
  • 이를 통해 나온 8 개의 출력을 GT(Ground Truth) 와 비교하여 Loss 를 계산하고, 
  • Backpropagation 을 진행합니다.

 

그렇다면 배치를 왜 늘리려고 할까요?

 

배치(Batch)를 늘렸을 때 장점

계산 효율성

큰 배치는 GPU와 같은 하드웨어 가속기의 병렬 처리 능력을 더 잘 활용할 수 있게 합니다.

여러 샘플을 동시에 처리함으로써, 그래픽 처리 장치의 고성능 연산이 더 효율적으로 사용될 수 있습니다.

과적합 방지

큰 배치를 사용하면 모델이 훈련 데이터의 작은 특이점에 과도하게 적응하는 것을 방지할 수 있어 과적합의 위험을 줄일 수 있습니다.

 

그러나 배치 크기를 증가시킬 때는 몇 가지 주의점도 있습니다.

너무 큰 배치는 최적화 과정에서 지역 최소값(local minima)에 갇힐 확률을 높일 수 있습니다.

또한, 학습률과의 관계를 적절히 조절해야 하는데, 배치 크기가 커지면 적절한 학습률을 찾기가 더 어려워질 수 있습니다.

따라서 배치 크기를 조정할 때는 다양한 요소들을 고려하여 실험적으로 최적의 값을 찾아야 합니다.

 

그렇게 실험을 통해 찾은 저의 꿀팁은

"배치를 키웠다면 Decay도 키워라"

입니다.

 

Decay(디케이) 란?

Decay는 각 에포크(epoch)나 반복(iteration)마다 적용하는 학습률(Learning Rate) 감소의 양을 의미합니다.

학습률 감소(learning rate decay)는 기계 학습과 딥러닝에서 모델을 훈련시킬 때 사용되는 기법 중 하나로,

훈련이 진행됨에 따라 학습률을 점진적으로 감소시켜 나가는 과정을 말합니다.

이는 훈련 초기에는 큰 학습률로 빠르게 학습을 진행하다가,

훈련이 점차 진행됨에 따라 최적값에 더 섬세하게 접근하기 위해 학습률을 낮추는 전략입니다.

 

Decay(디케이) 를 높인다는 것은?

Decay 는 보통 수치적으로 표현합니다. (EX) 1e-3, 5e-4, ...)

학습률(Learning Rate)을 각 에포크(epoch)나 반복(iteration)마다 1e-3씩 감소시킨다 라고 이해할 수 있습니다. (이는 스케쥴러에 따라 다릅니다.)

 

"decay를 높인다"는 "학습률 감소율을 높인다" 라고 이해할 수 있으므로,

Learning Rate가 더 빠르게 줄어들도록 만드는 것을 의미할 수 있습니다.

 

나의 실험을 통해 보는 Batch와 Decay의 상관관계

저의 실험 결과로 이 주장을 뒷받침하겠습니다.

 

한가지 유의할 사항은, 모델 혹은 데이터의 특징마다 이 주장의 효용성 유무가 달라질 수 있습니다.
모든 모델에 범용적으로 적용할 수 있는 사항은 아니기 때문에
실험 한 번 쯤은 해볼만 하다 정도로 생각하면 감사하겠습니다.

 

저는 약 1년여가량 Face Parsing을 연구해왔는데요,

Face 데이터를 사용하는 Semantic Segmentation이라고 이해하시면 되겠습니다.

 

Face Parsing의 예시

 

여기서 배치 사이즈와 LR(Learning Rate), Decay에 따른 실험 결과를 표로 비교하면 아래와 같습니다.

 

배치 사이즈와 LR(Learning Rate), Decay에 따른 실험 결과 표

성능은 Mean F1 Score를 중점으로 보면 됩니다.

 

batch size 와 LR(Learning Rate), Decay에 따른 실험 결과 표

 

일단 batch size = 8 일 때 Mean F1 성능이 가장 좋게 나왔습니다.

이 연구 분야에서는 배치 사이즈가 작으면 작을수록 성능이 좋긴 하지만,

배치를 늘려야 할 필요성이 있어 256까지 늘려서 학습해보았습니다.

 

이에 맞춰서 LR와 Decay를 각 2배씩 설정해줬습니다.

그랬을때 성능은 0.76 에서 0.65까지 떨어진것을 볼 수 있습니다. 

 

그러나 batch size = 128에서 LR을 동일하게 하고 Decay만 5배 늘려 조정했을 때

성능이 0.69 에서 0.72까지 오른것을 볼 수 있습니다.

 

단순 Decay만 조정했을 뿐인데 엄청난 성능 향상이 있었습니다.

 

앞으로 추가적인 실험을 통해 더 근본적으로 검증해야겠지만,

이 결과만 봐도 배치를 늘렸을 때 Decay를 높이는 실험은 최소 1 번 이상 할 가치가 있다고 생각합니다.

 

독자분들도 배치를 늘렸을 때 성능이 감소했다면, Decay를 한 번 늘려보세요~ 

 

감사합니다!