Hyperparameter Tuning
하이퍼파라미터 튜닝은 검증 성능을 최대화하는 학습 설정을 찾습니다. 그리드, 랜덤, 베이지안, 진화적 탐색을 비교합니다.
하이퍼파라미터 튜닝은 학습 설정을 탐색해 머신러닝 모델이 홀드아웃 데이터에서 최상의 성능을 내도록 하는 과정입니다. 하이퍼파라미터는 학습 시작 전에 고정되지만, 모델 가중치는 학습 과정에서 데이터로부터 학습됩니다. 각 후보 설정은 모델을 학습하고 검증 데이터로 평가해 점수를 매겨야 하므로, 튜닝은 모델 구축 과정에서 계산량이 가장 많은 단계 중 하나이며, 적절한 탐색 전략을 선택하는 것은 탐색할 값을 선택하는 것만큼 중요합니다.
주요 하이퍼파라미터#
딥러닝 비전 분야에서 가장 자주 튜닝해야 하는 설정은 몇 가지 그룹으로 나뉩니다.
- 최적화: 학습률과 그 스케줄, 모멘텀, 가중치 감쇠, SGD 또는 Adam 옵티마이저와 같은 옵티마이저 선택입니다. 학습률은 대개 가장 큰 영향을 미치며 로그 스케일로 탐색합니다.
- 학습 길이 및 배칭: 에폭 수, 워밍업 길이, 배치 크기입니다.
- 데이터 증강: 좌우 반전, 스케일 조정, 색상 변경, 모자이크와 같은 각 변환의 확률과 강도입니다.
- 손실 가중치: 검출기의 박스 손실과 분류 손실처럼 복합 손실 함수의 항목 간 균형을 맞추는 계수입니다.
탐색 방법#
실무자는 몇 가지 전략을 사용해 가능한 설정 공간을 탐색합니다.
- 그리드 탐색: 정해진 값 목록의 모든 조합을 학습합니다. 간단하고 빠짐없이 탐색하지만, 하이퍼파라미터가 하나 추가될 때마다 비용이 증가합니다.
- 무작위 탐색: 허용된 범위에서 설정을 무작위로 샘플링합니다. Bergstra와 Bengio는 특정 문제에서 큰 영향을 미치는 하이퍼파라미터는 몇 개뿐이고 무작위 샘플링은 각 하이퍼파라미터에 대해 더 다양한 값을 시도하므로, 무작위 탐색이 훨씬 적은 계산량으로 그리드 탐색과 같거나 더 우수한 모델을 찾는다는 사실을 보였습니다.
- 베이지안 최적화: 하이퍼파라미터에 따라 점수가 어떻게 달라지는지 대리 모델을 학습하고, 개선 가능성이 가장 높아 보이는 지점을 다음 실험 대상으로 선택합니다. Optuna와 같은 라이브러리는 이 접근 방식을 기본으로 사용합니다.
- 조기 종료 방법: Hyperband와 연속 절반 제거 방식은 적은 예산으로 여러 설정을 시작한 다음, 가장 유망한 설정에만 에폭을 추가로 할당합니다.
- 진화 알고리즘: 각 설정을 게놈으로 간주하고 선택과 돌연변이를 통해 집단을 개선합니다.
진화 탐색#
진화 탐색은 탐색 공간의 모델 없이 각 실험의 적합도 점수만으로 진행할 수 있으므로, 서로 영향을 주는 하이퍼파라미터가 많은 학습 실행에 적합합니다. 각 라운드에서는 지금까지 찾은 최상위 설정 중 하나를 선택하고, 일부 값을 변이시켜 학습한 뒤, 점수가 좋으면 새 설정을 후보군에 추가합니다.
Ultralytics 튜너는 YOLO 학습에서 이 반복 과정을 수행합니다. 각 반복은 적합도가 가장 높은 9개 결과 중 하나를 부모로 선택하고, 학습률, 손실 계수, 증강을 포함해 최대 26개 하이퍼파라미터 중 절반가량을 변이시키며, 검출의 적합도를 mAP50-95로 평가합니다. 공식 YOLO26 체크포인트의 COCO 단계 하이퍼파라미터는 이 진화 탐색으로 찾았습니다.
from ultralytics import YOLO
# 사전 학습된 YOLO26n 모델을 불러옵니다
model = YOLO("yolo26n.pt")
# 탐색 공간: 튜닝할 각 하이퍼파라미터의 (최솟값, 최댓값) 범위
search_space = {"lr0": (1e-5, 1e-2), "degrees": (0.0, 45.0)}
# 30회 반복 각각에서 새롭게 변이된 값으로 10 에폭씩 학습합니다.
model.tune(data="coco8.yaml", epochs=10, iterations=30, space=search_space, plots=False, save=False, val=False)실행 결과로 best_hyperparameters.yaml, 반복별 적합도 그래프, 최적 반복의 가중치가 tune 디렉터리에 저장됩니다. 옵티마이저를 지정하지 않으면 model.tune()는 AdamW로 학습합니다. 기본 optimizer="auto"이 튜닝된 lr0를 덮어쓰기 때문입니다.
하이퍼파라미터 튜닝과 관련 용어 비교#
- 모델 학습: 학습은 하나의 고정된 하이퍼파라미터 설정에 대해 역전파를 통해 가중치를 학습합니다. 튜닝은 학습을 여러 번 실행하고 결과를 비교하는 바깥쪽 반복 과정입니다.
- 파인튜닝: 이름은 비슷하지만, 파인튜닝은 사전 학습된 모델의 가중치를 새 데이터로 이어서 학습하는 과정입니다. 더 낮은 학습률과 고정할 레이어 수처럼 자체적으로 튜닝할 하이퍼파라미터가 있습니다.
- 신경망 아키텍처 탐색 (NAS): 학습 설정이 아니라 레이어 유형과 너비 같은 네트워크 구조를 탐색합니다.
- 자동화된 머신러닝 (AutoML): 모델 선택과 데이터 전처리를 포함한 더 넓은 파이프라인을 자동화하며, 하이퍼파라미터 튜닝은 그 구성 요소 중 하나입니다.
- 검증 세트 과적합: 동일한 검증 분할로 수백 번의 튜닝 실험을 평가하면 우연히 해당 분할에 잘 맞는 설정이 선택될 수 있으므로, 튜닝에 사용하지 않은 별도의 테스트 세트에서 최종 결과를 평가해야 합니다.










