최근 kaggle에서 enzyme 분류 문제를 풀고 있는데, 처음 시도할 때에 multi-label을 multi-class 문제로 풀어 성능이 잘 안나왔고, 원인을 분석하다가 정리해보았다. 분류에는 크게 세 종류가 있으며, 인공신경망의 마지막 활성화함수와 손실함수는 일반적으로 아래와 같이 사용하면 된다.
- binary classification: 0 또는 1 중 하나를 고르는 문제로, sigmoid 함수와 binary crossentropy를 사용하면 된다.
- multi-class classification: 일반적인 categorical classification으로, 3개 이상의 클래스 중 하나를 고르는 문제. softmax 함수를 사용해야 하며, 손실로는 categorical crossentropy를 사용한다
- multi-label classification: multi-class와 이름 자체는 유사해보인다. 그러나 2개 이상의 클래스들에 대해서 다중 선택을 할 수 있는 문제이다. 즉, 1개만 고르는 문제가 아니기 때문에 softmax를 사용하면 안된다. 이 때는 클래스 수만큼 노드를 만들고 시그모이드 함수를 적용하여 각각에 대해서 고를지 말지의 문제로 만들어야 한다. 때문에, 손실 함수 또한 binary crossentropy를 사용해야 한다.
위는 아주 일반적인 케이스임을 참고해야 한다
반응형
'인공지능' 카테고리의 다른 글
Autoencoder & Anomaly Detection (오토인코더와 이상 탐지) (0) | 2023.07.14 |
---|---|
MNIST 데이터 읽기 (0) | 2023.07.03 |
LlamaIndex로 검색 엔진 구축하기 (라마인덱스, openai-cookbook) (1) | 2023.06.29 |
n-gram과 n-gram 언어 모델 (0) | 2023.05.31 |
어텐션 개념 이해하기 (어텐션과 K, Q, V) (0) | 2023.05.26 |