CrossEntropyLoss VS BCEWithLogitsLoss

황준하·2023년 1월 20일
0

CrossEntropyLoss VS BCEWithLogitsLoss

내가 적용하려는 분류 문제에 어떤 Loss를 적용해야하는지 혼란이 왔었다. 이 두 Loss에 대해 알아보고 알게된 내용을 정리해보자.

Multi-Class? Multi-Label?

우선 위의 두 Task가 다르다는 것을 알아야 한다. (이걸 몰라서 혼란스러웠다)

  • Multi-Class: One-hot Encoding을 통해 여러 클래스 중 하나를 나타낸다.

  • Multi-Label: 여러 클래스 중 여러 개를 나타낸다. [즉, 두 개의 클래스가 동시 등장 가능]



CrossEntropyLoss VS BCEWithLogitsLoss

  • CrossEntropyLoss: softmax + CrossEntropy

    • 클래스가 나올 확률을 모두 더하면 1임.

    • 즉, 입력이 여러 클래스 중 어떤 하나의 클래스인지 맞추게 하는 것

  • BCEWithLogitsLoss: sigmoid + CrossEntropy

    • 클래스 각각마다 0~1 값을 가지고 클래스가 나올 확률 모두 더해도 1 아님.

    • 즉, 입력이 각각의 클래스가 맞는지 맞추게 하는 것.



각 Loss 설명

각 Loss 설명은 Pytorch 공식 문서에 잘 정리되어 있다.

CrossEntropyLoss

BCEWithLogitsLoss

0개의 댓글