BoostCamp Pstage day4 Model

Dae Hee Lee·2021년 8월 26일
0

BoostCamp Pstage

목록 보기
7/9

Loss함수

Loss 함수 = Cost함수 = Error함수

Loss.backward()

Loss는 Module을 상속하는 같은 Family이고, 따라서 Criterion에 output을 넣게되면 input에서 output까지 연결된 어떠한 체인이 loss까지 연결되었고, backward함수를 통해 Gradient를 업데이트할 수 있다는 점이다.

조금 특별한 Loss

loss는 output과 target의 사이에서 loss함수를 통해 나오는 값

  • Focal Loss
    Class Imbalance 문제가 있는 경우, 맞춘 확률이 높은 Class는 조금의 loss를, 맞춘 확률이 낮은 Class는 Loss를 훨씬 높게 부여.
  • Label Smoothing Loss
    자동차 사진 분류라고 했을 때, 다르게 분류했다고 해서 완전히 다른 것이 아니라 어느정도 비슷한 피처를 공유하고 있을 수 있기 때문에(자동차의 경우 번호판 등) 조금 더 soft하게 표현하는 것
    Class target label을 Onehot 표현으로 사용하기 보다는 ex) [0, 1, 0, 0, 0, ...]
    조금 Soft 하게 표현해서 일반화 성능을 높이기 위함 ex) [0.025, 0.9, 0.025, 0.025, ...]

Optimizer

어느 방향으로, 얼마나 움직이게 될지!

LR scheduler

학습 시에 Learning Rate를 동적으로 바꾸는 방법

  • StepLR
torch.optim.lr_scheduler.StepLR

step을 지나면서 점점 변화를 주는 방식

  • CosineAnnealingLR
    변화를 다양하게 줄 수 있다는 장점이 있다.
torch.optim.lr_scheduler.CosineAnnealingLR
  • ReduceLROnPlateau
    가장 많이 쓰이는 스케줄러
    더 이상 성능 향상이 없을 때 LR 감소
torch.optim.lr_scheduler.ReduceLROnPlateau

Metric

객관적인, 성능의 평가가 필요하다.

모델의 평가

-Classification
Accuracy, F1-score, precision, recall, ROC-AUC

  • Regression
    MAE, MSE

  • Ranking
    MRR, NDCG, MAP

score의 허와 실

  • Accuracy
    Class 별 밸런스가 적절히 분포되어 있을 때
  • F1-score
    Class 별 밸런스가 좋지 않아서 각 클래스 별로 성능을 잘 낼 수 있는지 확인

Training Process

학습과 추론의 과정을 이해해보자.

Training 준비

pretrained 모델, Loss, Optimizer, Metric

Training Process 이해

model.train()

  • Dropout, BatchNorm이 train모델과 eval모델에서 달라져야하기 때문

순서.
1. epoch for 문
2. dataloader에서 배치 for 문
3. optim.zero_grad()

  • 이전 시점의 모델의 파라미터들의 grad를 사용하지 않으려고 적용한다.
  1. model의 output값을 받는다.
  2. output과 target의 loss값을 구한다.(chain을 연결한다)
  3. loss.backward를 통해 gradient를 구한다.(grad_fn)
  4. optimizer.step()를 이용해 loss를 업데이트한다.

More: Gradient Accumulation

Inference Process

validation

model.eval()


with torch.no_grad()
# 위 no_grad에는 아래 함수가 있다.
torch.set_grad_enabled(False)

Checkpoint

특정 시점마다 checkpoint를 저장한다. 과정은 직접 pythonic하게 자유로운 방식으로 만들면 된다.

최종 output, submission

모델의 결과물인 Categorical Class를 submission.csv파일로 변환시켜서 최종 제출물을 만든다.

Pytorch Lightning

대부분의 training classfmf fit이라는 함수 하나로 정의할 수 있다.

그러나 하나하나 공부해보고 충분한 이해가 쌓인 다음 사용하는 것을 추천한다.

profile
Today is the day

0개의 댓글