반응형
PyTorch에서 criterion은 모델 출력과 정답 label을 받아 loss 값을 계산하는 손실 함수 객체를 뜻하는 관용적인 변수명입니다.
BCELoss를 쓰는 코드는 모델의 출력 확률과 같은 shape의 target을 넘겨 binary cross entropy loss를 계산하는 흐름으로 읽으면 됩니다.
핵심 정리
PyTorch 예제에서 criterion이라는 이름은 특별한 예약어가 아니라 손실 함수를 담아두는 변수명입니다. nn.BCELoss로 만든 객체에 모델 output과 label target을 넣으면 binary classification에서 사용하는 loss 값이 계산됩니다. 이 loss는 optimizer가 파라미터를 어느 방향으로 고칠지 판단하는 기준이 되므로, 모델 출력 범위와 target shape을 맞추는 것이 중요합니다.
- criterion은 보통 loss function 객체를 담는 변수명으로 사용됩니다.
- BCELoss는 binary cross entropy loss를 계산할 때 사용합니다.
- 입력으로는 모델이 낸 확률값과 정답 target을 함께 넘깁니다.
- input과 target은 같은 shape이어야 계산 흐름을 이해하기 쉽습니다.
- 모델이 logit을 바로 출력한다면 BCELoss보다 BCEWithLogitsLoss를 검토하는 편이 안전합니다.
- loss 값을 구한 뒤 backward를 호출해야 gradient가 계산됩니다.
원문은 criterion이라는 이름이 왜 등장하는지 짧게 적어둔 메모였습니다. 이번 보강은 criterion이 예약어가 아니라 손실 함수 변수명이라는 점, output과 label을 함께 넣어 loss를 계산한다는 점, sigmoid 확률값과 logit 출력의 차이를 먼저 잡아주도록 정리했습니다.
이어서 볼 글
- Cost function / Loss function - criterion과 loss를 이해하기 위한 기본 손실함수 개념이다.
criterion
loss를 왠일인지 criterion이라고 부른다.
예를 들어 binary corss entropy loss를 설정하고 실제 그 값을 계산하고 싶으면
criterion = nn.BCELoss() # Binary cross entropy: http://pytorch.org/docs/nn.html#bceloss
decision = D(input)
error = criterion(decision, Variable(torch.zeros(1)))
위처럼 하면 된다. 네트웍 output 과 label을 넣어주면 loss 계산
반응형
'Programming' 카테고리의 다른 글
| C++ 약수 구하기 방법: 완전 탐색과 O(sqrt(N)) 최적화 (0) | 2026.05.26 |
|---|---|
| NumPy reshape 사용법과 NaN 검사: 배열 차원 변환과 np.isnan (0) | 2026.05.26 |
| 조건부확률 개념: 표본공간, 독립사건, 베이즈 정리 (0) | 2026.05.22 |
| Python class variable 개념: 클래스 변수와 인스턴스 변수 차이 (0) | 2026.05.20 |
| 챗봇 특강 메모: RNN, 룰베이스, MDP 대화 알고리즘 (0) | 2026.05.20 |
