Pytorch Loss function 정리
2020, Oct 15
목차
-
Negative Log Likelihood Loss
Negative Log Likelihood Loss
- 개념 설명 : https://gaussian37.github.io/dl-concept-nll_loss/
- 위 개념 설명 내용에 해당하는
NLLLoss
는 Pytorch에 기본적으로 적용이 되어 있으므로 다음 링크의 함수를 사용하면 됩니다. NLLLoss
에서 사용하는 파라미터 중 가장 중요한 파라미터는weight
입니다.NLLLoss
의 장점 중 하나인weight
는 클래스 불균형 문제를 개선하기 위하여 수동으로 weight 별 학습 비중의 스케일을 조정하기 위해 사용됩니다.- 예를 들어 클래스의 갯수가 3개이고 클래스 별 데이터의 갯수가 (10, 50, 100) 이라면 weight는 데이터 갯수와 역의 관계로 대입을 해주어야 합니다. 예를 들면 (1, 0.2, 0.1)와 같이 weight를 설정할 수도 있고 (1/10, 1/50, 1/100)과 같이 사용할 수도 있습니다. 핵심은 적은 갯수의 데이터에 해당하는 클래스에 높은 weight를 주어 학습 양을 늘리는 데 있습니다.
import torch.nn as nn
import nn.functional as F
loss = nn.NLLLoss(weight)
# output shape : (Batch Size, C, d1, d2, ...)
loss(F.log_softmax(output, 1), targets)