코딩일기

Categorical_crossentropy? Sparse_categorical_crossentropy? 본문

Code/딥러닝(NL)

Categorical_crossentropy? Sparse_categorical_crossentropy?

daje 2021. 10. 21. 21:37
728x90
반응형

 

 

 

 

안녕하십니까 다제입니다. 

 

오늘은 Categorical_crossentropy? Sparse_categorical_crossentropy? 가 무엇인지 알아보도록 하겠습니다. 

 

특히 Tensorflow Certificate 시험을 볼 때 위 개념을 물어보는 경우가 많습니다.

 

이에, 한번 정리를 해서 여러분과 공유하고 싶었습니다. 함께 공부해보시죠! 

 

 

분류는 이중분류와 다중분류가 있으며, 분류 문제에서 사용할 수 있는 loss값은 binary_crossentropy, Categorical_crossentropy, Sparse_categorical_crossentropy가 있습니다. 

 

그럼 도대체 언제 저 녀석들을 사용해야할까요?

일단, binary_crossentropy는 이름에서도 힌트를 얻을 수 있듯 sigmoid 함수를 activation fuction으로 사용할 때 올 수 있습니다. 오호! 그렇다면 나머지 두개만 언제 쓰는지만 알면 될 것 같습니다. 

 

 

일단 퀴즈를 한번 드리겠습니다. 

딥러닝 모델에서 마지막 층이 아래와 같이 기재되어 있다면 올 수 있는 loss 값은 무엇일까요?

Dense(2, activation="softmax")

Categorical_crossentropy Sparse_categorical_crossentropy 둘 다 올 수 있습니다. 

 

아! 그래? 

Dense에서 2 이상 이고 activation이 softmax면 저 두개를 쓸 수 있구나! 

 

 

저 둘을 나누는 기준는 입력데이터가 y의 label값이 One-Hot Encoding이 되어 있다.

그러면 Categorical_Crossentropy를 사용해야합니다. 

 

y의 label값이 One-Hot Encoding이 되어 있지 않다면 Sparse_categorical_crossentropy를 사용해야합니다. 

 

표로 한번 정리하고 본 글을 마무리하고자 합니다. 

 

구분 마지막 출력층 Loss y_label 값
1 Dense(1, activation="sigmoid") binary_crossentropy 이진 분류 
2 Dense(2 이상, activation="softmax") categorical_crossentropy 다중 분류,
One_hot_Encoding 되어 있음
3 Dense(2 이상, activation="softmax") sparse_ categorical_crossentropy 다중 분류,
One_hot_Encoding 되지 않음

 

오늘도 글을 읽어주셔서 감사드립니다. 

 

728x90
반응형
Comments