머신러닝 CNN 모델에서 언제 Hyperparameter(하이퍼파라미터) 값을 재검토 해보는게 좋을까? (feat. 그리드 탐색)

공장장·2024년 10월 17일



🔔 하이퍼파라미터 값을 변경해야 할 때


1. 데이터 증강(Transforms)을 변경할 때

  • 기준: 이미지 데이터에 적용되는 transforms는 모델이 데이터를 어떻게 학습할지를 결정하는 중요한 요소. 만약 transforms를 변경하거나 새로운 데이터 증강 기법을 추가/제거하면, 그리드 탐색을 다시 돌리는 것이 좋다. 데이터 증강은 모델이 데이터를 더 다양하게 학습할 수 있게 하고 과적합을 방지하는 데 도움이 되지만, 이로 인해 하이퍼파라미터가 원래 잘 동작하던 값과 다를 수 있다.
  • 예시:
    • transforms.RandomRotation(30)transforms.RandomRotation(10)으로 바꾼다면, 모델이 학습하는 데이터의 다양성이 달라지기 때문에 학습률이나 스케줄러 주기(T_max)도 바뀔 가능성이 있다.

2. 모델 구조(Architecture)를 변경할 때

  • 기준: EfficientNet-b0에서 EfficientNet-b1으로 변경하거나, 레이어 구조를 수정한 경우 모델의 학습 패턴이 달라지기 때문에 하이퍼파라미터도 다시 조정해야 할 필요가 있다. 특히, 더 깊거나 넓은 모델을 사용할 경우 학습률을 낮추는 것이 일반적.
  • 예시:
    • 모델이 더 많은 파라미터를 포함하고 있으면, 학습률이 너무 높으면 발산할 위험이 있고, 너무 낮으면 학습 속도가 느려질 수 있다. 따라서, 그리드 탐색으로 최적의 학습률을 다시 찾아야 한다.

3. 데이터 분포나 데이터셋이 변경될 때

  • 기준: 새로운 데이터셋을 추가하거나 데이터셋을 리샘플링했을 때, 데이터 분포가 변하게 된다. 이 경우 학습 패턴에 영향을 미치므로 하이퍼파라미터 탐색을 다시 해야 한다. 데이터의 크기가 커지거나, 클래스 비율이 달라질 때도 해당.
  • 예시:
    • 경증과 중등도를 하나의 클래스처럼 묶고 나서 모델이 더 쉽게 학습할 수 있게 된 경우, 과거의 학습률이 너무 낮을 수 있기 때문에 새로운 탐색이 필요할 수 있다.

4. 학습 조건(Optimizer, Scheduler)을 변경할 때

  • 기준: 옵티마이저 종류나 스케줄러의 파라미터(T_max, eta_min)를 바꿀 때는 하이퍼파라미터 탐색을 다시 돌려야 한다. 특히 스케줄러의 주기나 최저 학습률이 바뀌면 학습 과정에서 영향을 미칠 수 있다.
  • 예시:
    • T_max 값이 달라지면 학습이 최대로 도달하는 속도와 주기가 바뀌기 때문에 최적의 학습률을 다시 찾는 것이 필요할 수 있다.

5. 모델이 과적합(overfitting)되거나 학습이 너무 느릴 때

  • 기준: 모델이 과적합되는 징후(훈련 정확도는 높지만 검증 정확도는 낮을 때)가 있거나, 학습이 너무 느리거나 학습이 잘 진행되지 않을 때는 학습률(lr)을 다시 조정할 필요가 있다.
  • 예시:
    • 학습이 너무 빠르게 발산하면 학습률이 너무 큰 것일 수 있고, 너무 느리게 진행된다면 학습률이 너무 작은 것일 수 있다.

6. 목표 성능에 도달하지 못했을 때

  • 기준: 최종 목표 성능(정확도, F1 스코어 등)에 도달하지 못했다면, 기존의 그리드 탐색을 조금 더 미세하게 진행할 필요가 있다. 예를 들어 학습률을 1e-3에서 1e-4 사이에서 세밀하게 조정하는 것처럼.
  • 예시:
    • lr을 0.001에서 0.0005로 줄여보고, 스케줄러의 T_max를 10에서 5로 조정하는 방식으로 다시 탐색합니다.

7. 학습 시간이 너무 오래 걸릴 때

  • 기준: 학습 시간이 너무 오래 걸리는 경우에는 배치 사이즈나 학습률을 조정해서 속도를 높일 수 있다. 이 경우에도 그리드 탐색을 다시 돌려서 학습 속도와 성능 간의 균형을 맞추는 것이 필요할 수 있다.
profile
연장 대신 키보드 뚱땅거리며 분석하는 '데이터분석 공장 529'

0개의 댓글