[부스트캠프 AI-Tech] 6주차 Day 3

LKM·2022년 3월 6일
0

7. Training & Inference (1)

  • Loss

    • Loss 함수 = Cost 함수 = Error 함수
    • loss.backward() : 모델의 파라미터의 grad 값이 업데이트
    • 다양한 Loss 함수 (Focal loss, Label Smoothing Loss ...)
  • Optimizer

    • 어느 방향으로, 얼마나 움직일지?

    • LR scheduler (LR를 동적으로 조절)

      • StepLR (특정 step마다 LR 감소)
      • CosineAnnealingLR (Cosine 함수 형태처럼 LR을 급격히 변경)
      • ReduceLROnPlateau (더 이상 성능 향상이 없을 때 LR 감소)
  • Metric

    • 모델의 평가 (학습된 모델을 객관적으로 평가할 지표 필요)
    • 데이터 상태에 따라 적절한 Metric을 선택하는 것이 필요



8.Training & Inference (2)

  • Training Process

    • model.train() : Train mode로 변경
    • optimzer.zero_grad() : gradient 초기화
    • loss = criterion(outputs, labels) : loss 값 계산
    • loss.backward() : 모델의 파라미터의 grad 값이 업데이트
    • optimizer.step() : parameter 업데이트
  • Inference Process

    • model.eval() : Inference mode로 변경
    • with torch.no_grad(): : requires_grad=False 상태로 변경 (grad값 변경 X)
    • 모델에 validation 셋 넣어주고 결과 확인 (검증)
  • Pytorch Lightning

    • 매우 간단한 코드로 학습 가능
    • 충분히 Pytorch를 이해하고 사용하자!



9. Ensemble

  • Ensemble (앙상블)

    • 서로 다른 여러 학습 모델을 사용
    • Model Averaging (Voting)
      • Hard Voting (class 다수결로 선택)
      • Soft Voting (class별로 probability를 합산)
    • Cross Validation
      • Stratified K-Fold Cross Validation

    • TTA (Test Time Augmentation)
      • 테스트 이미지를 Augmentation 후 모델 추론, 출력된 여러가지 결과를 앙상블
    • 앙상블 효과는 확실히 있지만 학습, 추론 시간이 배로 소모!
  • HyperParameter Optimization

    • Optuna
      • 파라미터 범위를 주고 그 범위 안에서 trials 만큼 시행



10. Experiment Toolkits & Tips

  • Training Visualization

    • Tensorboard
    • WandB (Weight and Bias)
      • 딥러닝 로그의 깃허브 같은 느낌
  • Machine Learning Project

    • Jupyter Notebook
      • 코드를 빠르게 Cell 단위로 실행 가능
      • EDA를 할 때 매우 편리
      • 학습 진행 도중에 노트북 창 꺼질시... 다시 처음부터
    • Python IDLE
      • 구현은 한번만, 사용은 언제든, 간편한 코드 재사용
      • 매우 편리한 ‘디버깅’
      • 자유로운 실험 핸들링 (argparse를 통한)
profile
함께 자라기

0개의 댓글