일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 기계학습
- 9020
- BOJ
- 가상환경
- 파이썬
- 1002
- 4948
- 밑바닥부터 시작하는 딥러닝
- 파이싼
- 백준
- Python
- 1101
- 오블완
- 티스토리챌린지
- 백트래킹
- 신경망 학습
- 경사하강법
- n과 m
- N-Queen
- end to end
- 15649
- Retrieval
- 그리디 알고리즘
- 개발환경
- pyenv
- video retireval
- 손실함수
- REST API
- streamlit
- 재귀
- Today
- Total
파이톨치
[BoostCamp AI Tech] 학습 시 고려 사항 본문
모델 학습에서 일관된 실험 관리와 성능 향상을 위해 고려해야 할 중요한 요소들을 정리했습니다. 이 글에서는 seed 고정, 실험 기록, k-fold와 augmentation, 그리고 TTA 활용법 등 효과적인 실험 관리와 모델 최적화 전략을 다룹니다.
1. Seed 고정: 실험의 재현성을 보장
머신러닝 실험에서 가장 중요한 원칙 중 하나는 **재현성(reproducibility)**입니다. 모델 학습에서 발생할 수 있는 난수를 제어하기 위해 seed 값을 고정해야 합니다. 이를 통해 학습 과정에서 동일한 초기값으로 시작하여 결과를 비교 분석할 수 있습니다.
import torch
import numpy as np
import random
def set_seed(seed: int):
torch.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
np.random.seed(seed)
random.seed(seed)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
set_seed(42)
2. 실험 기록: 철저한 데이터 관리
모든 실험 과정과 결과를 기록하는 습관은 필수입니다. 이를 통해 어떤 설정이 좋은 결과를 가져왔는지 명확히 파악할 수 있습니다. 기록할 내용은 다음과 같습니다:
- 실험 이름 및 날짜
- 모델 및 하이퍼파라미터 설정
- 데이터셋 및 전처리 방법
- 학습 곡선 및 성능 지표
- 결과와 실험 분석
팁: 자동화된 로깅 시스템 사용
- Weights & Biases (W&B)
- MLflow
3. 실험은 한 번에 하나씩
여러 가지 설정을 동시에 변경하면 어떤 요인이 성능에 영향을 미쳤는지 알 수 없습니다. 한 번에 하나의 변수만 변경하며 실험하는 것이 중요합니다. 이를 통해 실험 결과를 명확히 해석할 수 있습니다.
4. Validation의 중요성
왜 Validation이 중요한가?
Validation 데이터는 모델의 성능을 빠르게 평가할 수 있도록 도와줍니다. 특히 public leaderboard에 의존하지 않고 모델 성능을 검증할 수 있어, 오버피팅을 방지할 수 있습니다.
Validation 데이터 분할 전략
- Hold-out Validation (e.g., 20%)
- 장점: 빠른 검증 가능
- 단점: 학습에 사용하지 못하는 데이터 손실 발생
- k-Fold Cross Validation
- 모든 데이터를 학습에 사용할 수 있음
- 여러 모델을 학습하므로 시간이 많이 소요됨
- 데이터 클래스의 분포를 균일하게 유지하려면 Stratified k-Fold 사용
- 그룹이 존재한다면 Group k-Fold로 그룹 간 데이터 누수를 방지
5. Augmentation: 일반화 성능 향상
Augmentation의 필요성
데이터의 다양성을 증가시키기 위해 Augmentation을 사용합니다. 이는 모델이 더 일반적인 상황에서도 잘 작동하도록 도와줍니다. 예: 회전, 크기 조정, 색상 변화, 플립 등
import albumentations as A
transform = A.Compose([
A.RandomResizedCrop(height=224, width=224),
A.HorizontalFlip(p=0.5),
A.ColorJitter(p=0.3),
A.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)),
])
6. Test Time Augmentation (TTA): 추론 성능 향상
TTA는 모델 추론 시 Augmentation을 적용하여 더 안정적이고 일반화된 결과를 얻는 방법입니다. 여러 Augmentation 결과를 합산(평균)하여 최종 출력을 만듭니다.
import ttach as tta
tta_transforms = tta.Compose([
tta.HorizontalFlip(),
tta.Rotate90(angles=[0, 90, 180, 270]),
])
tta_model = tta.SegmentationTTAWrapper(model, tta_transforms)
output = tta_model(image)
위의 방법들은 머신러닝 실험을 체계적으로 관리하고, 성능을 극대화하는 데 유용한 전략들입니다. 실험 관리의 기본 원칙과 함께 validation, augmentation, TTA 등의 기법을 잘 활용한다면, 모델의 성능을 한층 더 끌어올릴 수 있을 것입니다.
'AI&ML > BoostCamp AI Tech' 카테고리의 다른 글
[Web] HTTP와 REST API (1) | 2024.12.11 |
---|---|
[BoostCamp AI Tech] Segmentation 오답노트 (0) | 2024.11.21 |
[BoostCamp AI Tech] U-Net (1) | 2024.11.18 |
[BoostCamp AI Tech] Semantic Segmentation (0) | 2024.11.17 |
[BoostCamp AI Tech] DilatedNet (0) | 2024.11.15 |