🎶 어떤 Loss를 사용하면 좋을까? + Combined loss 사용하기 (AIStages 게시판)
- 7강
- 1등 솔루션 (Dice Focal loss)
- 2등 솔루션 (Dice TopK loss)
https://pytorch.org/docs/main/nn.html#loss-functions : pytorch 에서 사용 가능한 loss func document
loss.py 를 새로 만들어서 config에서 정한 loss 함수를 불러와서 진행
1. BCE loss
- sigmoid + binary cross entropy 합친 베이스라인 loss
- 이진 분류 문제에 주로 사용
- parameter
- weight : 각 클래스에 대한 가중치 설정 → 불균형 클래스 문제를 완화 (default=None)
- pos_weight : 양성 클래스의 중요도를 조정 (default=None)
- reduction : ‘mean’, ‘sum’, ‘none’ 손실값 반환하는 방식 (default=’mean’)
- mean : 전체 샘플 손실의 평균
- sum : 전체 샘플 손실의 합
- none : 각 샘플의 손실 값을 반환
2. Focal loss
- cross entropy의 클래스 불균형 문제의 개선된 버전
- 어렵거나 쉽게 오분류되는 케이스에 대하여 더 큰 가중치를 주는 방법 (쉬운 케이스의 경우 낮은 가중치)
- parameter
- alpha : 양성 클래스에 대한 가중치 (보통 0.25)
- gamma : 쉽게 분류되는 케이스의 가중치를 낮추는 정도 (보통 2.0)
3. Dice loss
- 영역 기반의 손실함수로, 예측과 정답 사이의 겹침 정도를 측정
- 작은 구조를 잘 검출, 클래스 불균형 문제를 잘 처
- dice_loss = 1 - dice_coef
- parameter
- smooth : 분모가 0이 되는 것을 방지 (보통 1.0)
4. Iou loss
- iou_loss = 1 - iou_value
- parameter
- smooth : 분모가 0이 되는 것을 방지 (보통 1.0)
Dice loss vs Iou loss
- Dice = 2TP / (2TP+FP+FN) = recall
- Iou = TP/(TP+FP+FN)
Dice 값이 Iou 보다 TP 에 더 가중치를 둠
→ 겹친 영역을 더 중요하게 여김
실제로 의료영역에서 생각해보면 병변을 올바르게 찾는 것에 더 가중치를 두는 것이 목적
'AI Tech 7기' 카테고리의 다른 글
object detection에서 train_cfg 설정 (0) | 2024.10.16 |
---|---|
NMS, SoftNMS (0) | 2024.10.16 |
coco format 파악하기 (pycocotools) (0) | 2024.10.09 |