Cross Entropy 구현하기

$$ -  \sum_n^i (y^{i}  \ast log(p^{i})+(1-y^{i}) \ast log(1-p^{i})) $$

 

위 식은 Binary Cross Entropy 식이다.

 

Multiclass classification은 위에서 $$1-p^{i}$$ 값이 다른 P 결과로 대체한 식으로 유도된다. 

$$-  \sum_n^i (y^{i}_{0}  \ast log(p^{i}_{0}) + y^{i}_{1}  \ast log(p^{i}_{1})...) $$

근데, 어차피 1개의 class만 1이고 나머지는 0이기 때문에 아래와 같이 정리해볼 수 있다.

$$-  \sum_n^i (log(p^{i}_{j}) ) $$

 

직접 구현해본 결과, torch에서 제공해주는 CrossEntropy는 Softmax를 따로 해주지않아도 자동으로 해주는 결과를 보이는 것을 확인했다. (https://pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html

공식문서를 확인해봐도 softmax가 함수에 내포되어있는 것을 확인!