목차
1. 강의정리
1-1. P stage - chap7. Training & Inference 1
1-2. P stage - chap8. Training & Inference 2
2. 피어세션 정리
3. 데일리 회고
📜 강의 정리
[P stage] Chapter7. Training & Inference 1
🌈 Loss, optimizer, metric에 대해 알아보자
1. Loss
- loss backpropagation : output과 target 간의 loss를 구한 후 역전파
- loss function 선택 중요
- nn.Modules Family
- loss.backward() : 이 함수가 실행되면 모델의 파라미터의 grad 값이 업데이트. loss부터 input까지 체인 연결
- 조금 특별한 loss
- Focal loss : Class0Imbalance 문제가 있는 경우, 맞춘 확률이 높은 Class는 조금의 loss를,
맞춘 확률이 낮은 Class는 Loss를 훨씬 높게 부여 - Label smoothing loss : Class target label을 Onehot 표현으로 사용하기 보다는 조금 Soft하게 표현해서 일반화 성능을 높이기 위함
- Focal loss : Class0Imbalance 문제가 있는 경우, 맞춘 확률이 높은 Class는 조금의 loss를,
2. Optimizer
- 어느 방향으로(→dw), 얼마나 움직일지(→learning rate)
- LR Scheduler : learning rate을 동적으로 조정
- StepLR : step size만큼 감소
- CosineAnnealingLR : cosine 함수 형태로 LR을 조정. 변화를 급격하게 줌으로써 local minimum을 빠져나가기 쉬움
- ReduceLROnPlateau : 학습 과정을 모니터링 하다가 성능 향상이 없으면 LR 감소
3. Metric
- 학습에 직접적인 영향을 미치지는 않고, 모델을 평가하기 위해 사용
- 분야별 metric
- classification : accuracy, f1-score, precison, recall, ROC&AUC
- regression : MAE, MSE
- ranking - 추천 시스템 : NRR, NDCG, MAP
- 선택기준
- Class 별 분포 고를 때는 "Accuracy"
- Class 별 밸런스가 좋지 않아서 각 class 별로 성능 확인이 필요할 때는 "F1-Score"
[P stage] Chapter8. Training & Inference
🌈process에 대해 알아보자
1. Training Process
- model.train() : batchnorm, dropout 등의 상태를 train mode로 전환
- optimizer.zero_grad()
- loss = criterion(outputs, labels) : loss를 마지막으로 chain 생성
- loss.backward() : 위에서 생성된 chain을 이용해서 backward 진행. grad 계산
- optimizer.step() : 위에서 계산한 gradient를 parameter에 업데이트
- 2. Gradient Accumulation
- GPU memory가 충분하지 않아서 batch size를 작게 설정해야하는데, 큰 batch가 필요할 때 사용
- zero_grad()를 batch마다 실행하지 않고 n번에 한 번씩 수행
- 코드
NUM_ACCUM = 2 optimizer.zero_grad() for epoch in range(2): running_loss = 0.0 for i, data in enumerate(train_loader): inputs, labels = data outputs = model(inputs) loss = creterion(outputs, labels) / NUM_ACCUM loss.backward() if i%NUM_ACCUM == 0: optimizer.step() optimizer.zero_grad()
2. Inference Process
- model.eval() : batchnorm, dropout 등의 상태를 inference mode로 전환
- with torch.no_grad() : set_grad_enabled(False)
- checkpoint : toch.save(model.state_dict(), f"{acc}_{epoch}.ckpt")
🙋♀️피어세션
https://luck-tuberose-cf9.notion.site/2021-08-26-4cfe07cbab664173bddaacb414bedd66
💌 데일리 회고
리더보드를 보고 마음이 급해져서 제대로 공부 안하고 이것 저것 시도해보는 것 같다.
이렇게 하는게 오히려 시간 낭비가 될 것 같다. 생각을 하고 계획을 세운 후에, 차근차근 쌓아 올려야겠다.
'TIL > Boostcamp AI tech' 카테고리의 다른 글
[Boostcamp Lv2] Week6-Day25. Image classification | VGG11 구현 :: seoftware (0) | 2021.09.07 |
---|---|
[Image Classification] Week5 Daily Report :: seoftware (0) | 2021.09.03 |
[Boostcamp]Week4-Day17. Model :: seoftware (0) | 2021.08.25 |
[Image Classification] Week 4 Daily Report :: seofware (0) | 2021.08.25 |
[Boostcamp]Week4-Day16. Dataset & Dataloader :: seofware (0) | 2021.08.24 |
댓글