출력 차원을 늘려야 하는 이유
이진 분류에서는 예를 들어 강아지 = 1, 고양이 = 0처럼 단일 출력 노드로도 충분합니다. 그러나 이렇게 단일 출력으로 분류하게 되면, 중간값(예: 0.5)처럼 애매한 결과가 나와 오류가 발생할 수 있습니다.
이를 방지하고 더 복잡한 다중 분류 문제를 해결하기 위해 출력 차원을 늘리는 방식, 즉 출력 노드를 클래스 수만큼 구성하는 방식을 사용합니다.
예를 들어, 분류 대상이 3종류라면 다음과 같이 표현합니다:
- 강아지 → [1,0,0]
- 고양이 → [0,1,0]
- 토끼 → [0,0,1]
이렇게 하면 각 클래스에 해당하는 확률 분포를 명확히 표현할 수 있습니다.
Softmax: 다중 분류에서의 확률 출력
다중 분류에서는 출력이 확률 분포의 형태를 띄어야 하므로 다음 조건을 만족해야 합니다:
- 모든 출력 값은 0과 1 사이여야 함
- 출력 값의 총합은 1이어야 함
이를 만족시키기 위해 사용되는 것이 바로 Softmax 함수입니다. Softmax는 출력 벡터의 각 요소를 지수 함수로 변환한 뒤, 전체 합으로 나누어 정규화합니다

이 함수의 장점은, 각 클래스의 출력이 서로 영향을 주며 학습이 진행된다는 점입니다. 즉, 하나의 출력만 보는 것이 아니라 전체 출력을 고려한 gradient가 계산됩니다.
Cross Entropy
🔺 Cross-Entropy Loss
다중 분류 문제에서는 Cross-Entropy Loss를 사용합니다. 이 손실 함수는 모델이 출력한 확률 분포
q=[q1,q2,q3]가 정답 분포 p=[p1,p2,p3]에 가까워지도록 유도합니다.
Cross-Entropy 수식은 다음과 같습니다:

원-핫 인코딩된 경우 p는 하나의 값만 1이고 나머지는 0이므로, 수식은 간단히:

여기서 는 정답 클래스의 인덱스입니다.
Cross-Entropy의 최소값은 엔트로피(Entropy)와 같으며, 이는 정답 분포와 예측 분포가 동일할 때 발생합니다. 즉, 이상적으로는 q→p 즉 모델의 출력이 정답 분포와 같아지도록 학습하는 것입니다.
또한, Cross-Entropy는 결국 Negative Log-Likelihood(NLL)와 같은 의미로 볼 수 있습니다
이진 분류 vs 다중 분류 구조 비교
구분 | 이진분류 | 다중분류 |
출력 노드 수 | 1개 | 클래스 수만큼 |
활성화 함수 | Sigmoid | Softmax |
출력 범위 | 0 ~ 1 | 각 원소 0 ~ 1, 총합 = 1 |
손실 함수 | Binary Cross-Entropy | Cross-Entropy |
- 이진 분류에서도 softmax를 사용해 두 노드를 만들 수 있으며, 이때도 Cross-Entropy가 적용됩니다.
- 이진 분류에 sigmoid를 쓰고 -log(q)로 학습하는 것과 수학적으로는 동등한 구조입니다.
Softmax Regression 수식 유도 (Logit → 확률)
Softmax 회귀에서는 각 클래스에 대해 logit 출력을 만들고, 이를 통해 확률을 계산합니다.

이처럼 Softmax는 로그 확률 비의 반대 방향으로 동작하며, 각 클래스에 대한 확률 출력을 만들어냅니다.

'IT 프로그래밍 > AI' 카테고리의 다른 글
인공신경망은 MLE 기계 (0) | 2025.03.30 |
---|---|
[Loss function] MSE vs log-likelihood (0) | 2025.03.30 |
[딥러닝] 기본적 개념 정리 (0) | 2025.03.24 |
[Pytorch] BMM, Layer, Activation Function (0) | 2025.03.24 |
파이토치의 구성요소 (0) | 2025.03.19 |