대충은 알고 있는 사안들이지만 짚고 넘어가야할 것 같다.
다중 클래스 분류는 두 개 이상의 클래스가 있고, 각 인스턴스가 해당 클래스 중 하나에만 할당될 수 있는 분류 작업이다. 예를 들어 동물 이미지를 개, 고양이 또는 새와 같은 범주로 분류하는 경우 각 이미지는 이러한 범주 중 하나에만 속한다.
반면 다중 레이블 분류는 여러 레이블 또는 범주가 있고 각 인스턴스를 하나 이상의 해달 레이블에 동시에 할당할 수 있는 분류 작업을 말한다. 예를 들어 건강, 기술 또는 정치와 같은 여러 주제로 기사에 태그를 지정하면 기사가 이러한 주제 중 둘 이상에 속할 수 있다.
즉 다중 클래스 분류와 다중 레이블 분류의 주요 차이점은 다중 클래스 분류에서 인스턴스가 하나의 클래스에만 속하지만 다중 레이블 분류에서는 인스턴스가 여러 레이블 또는 범주에 속할 수 있다는 것이다.
output이 회귀를 하는가 분류를 하는가
sigmoid는 output을 0~1 사이로 변형하여 binary classification을 수행하도록 한다. 예측하고자 하는 label을 0과 1로 둔다. 1인 케이스는 output을 1에 가깝게, 0인 케이스는 output을 0에 가깝게 예측한다면 엔트로피의 특성상 값이 낮아지기에, loss를 cross-entropy로 설정하여 쉽게 모델에 최적의 파라미터를 유도할 수 있다.
label
강아지 0 vs 고양이 1
output
강아지 0.069 vs 고양이 0.831
softmax는 정말 단순하게, exponential 값의 ratio를 통해, 총합을 1로 변형하는 것이다. output 값을 총합 1로 만들어 가장 높은 값 하나를 선택하는 것이다. 만약 강아지, 고양이 2개의 class를 분류하는 문제에서 기본 neural들의 아웃풋이 5,2 가 나왔다고 하면, softmax는 활성화함수를 통해 0.953, 0.047로 변하게 된다.
악성 vs 음성을 분류하는 경우 y를 악성확률이라고 가정하면, 1-y는 음성확률이 된다. 하나의 아웃풋을 예측하므로, binary classification의 경우 아웃풋 사이즈가 1이 된다. 이는 multilabel 분류에 활용될 수 있는 데, i의 수마다 모두 entropy를 계산한다.
categorical_crossentropy는 원핫인코딩으로 되어있는 데이터에 계산을 적용한다.