Softmax Classifier는 다중 클래스 분류(Multi-Class Classification) 문제를 해결하기 위한 머신러닝 및 딥러닝 모델이다.
이 모델은 '입력 데이터를 여러 클래스로 분류하는 작업'에서 확률 분포(probability distribution)를 출력한다.
- Softmax Classifier는 다중 클래스 분류 문제에서 사용된다
- 입력 데이터는 선형 변환(Wx + b)를 거친 후 Softmax 함수를 통해 확률로 변환됩니다.
- Cross-Entropy Loss를 이용해 실제 정답과의 차이를 최소화하도록 학습한다.
- 확률값이 가장 높은 클래스를 최종 예측값으로 반환한다.
Softmax란? 🧐
Softmax 함수는 여러 클래스에 대한 확률 값(0~1)을 계산하고, 모든 확률의 합이 1이 되도록 정규화(normalize)하는 함수이다.
특징:
- 확률값 제공: 출력은 각 클래스에 속할 확률(0~1 범위)을 나타낸다.
- 합이 1: 모든 확률의 합이 항상 1로 유지된다.
- 다중 클래스 문제에 적합: 여러 클래스를 구분할 때 효과적이다.
Softmax 와 Sigmoid 의 차이? 🧐
위 그래프에서도 두 가지의 차이점이 다른 듯, 같게 보였을 것이다.
차이점을 표로 나타내면 다음과 같다.
특징 | 시그모이드 (Sigmoid) | 소프트맥스 (Softmax) |
출력 범위 | 0~1 | 0~1 |
출력 해석 | 개별 확률 (이진 분류) | 확률 분포(다중 클래스 분류) |
사용 분야 | 이진 분류 (Binary Classification) | 다중 클래스 분류 (Multi-Class Classification) |
확률 합 | 확률의 합이 1이 아님 | 확률의 합이 항상 1 |
주요 용도 | 로지스틱 회귀 (Logistic Regression) |
소프트맥스 회귀 (Softmax Regression) |
적용 예제 | 스팸 메일 분류 (스팸/정상) | 손글씨 숫자 인식 (0~9 중 하나 선택) |
두 함수 모두 확률 기반 분류에 기반해있지만, 시그모이드는 이진 분류 문제에 적합하여 각 샘플에 대해 하나의 확률 값을 예측하고,
소프트맥스는 다중 클래스 분류 문제에 적합하여 여러 클래스에 대한 확률 분포를 제공한다는 차이가 있다.
Softmax Classifier 의 구조? 🧐
로지스틱(시그모이드) 와 소프트맥스의 구조를 나타낸 그림이다.
단계 | Logistic Regression | Classification |
1. 입력 (input) | 입력 데이터 x=[x1,x2,x3,x4] 는 Feature Vector 로, 각 특징이 모델에 주어진다. |
|
2. 가중치 및 편향 (Weight & Bias) |
각 입력 노드는 가중치(W)와 편향(b)를 사용하여 선형 변환을 수행한다. 수식: z=xW+b ㄴ W: 가중치 행렬 (입력의 특징 수 × 노드 수). ㄴ b: 편향 벡터 (노드 수). |
|
3. 활성화 함수 (Activation Function) |
Sigmoid 함수 사용 :출력을 0~1 사이의 값으로 변환하여 확률값을 반환한다. :이진 분류(Binary Classification)에 적합하다. |
첫 번째, 두 번째 히든 레이어는 ReLU 함수 사용 : 비선형성을 추가하여 복잡한 관계를 학습한다. :출력 레이어에서는 Softmax 함수 사용 : 다중 클래스 확률 분포 계산 |
4. 출력 (Output) | - 최종 출력 y_hat 는 확률(0~1)로 해석되며, 이 값이 0.5보다 크면 1(positive class), 작으면 0(negative class)로 분류한다. - Binary Cross Entropy(BCE) Loss를 사용하여 손실 계산 ![]() |
- 최종 출력은 여러 클래스에 대한 확률 (y_hat1,y_hat2,y_hat3)이 출력된다. - 가장 높은 확률을 가진 클래스를 선택하여 예측한다. - Cross Entropy Loss를 사용한다. ![]() |
https://colab.research.google.com/drive/1GhgMRek4lNeeu7sE-kmuEd3QuA6O3p16?usp=sharing
Softmax Classifier
Colab notebook
colab.research.google.com
<아래의 코드 꼭 실습해보기 !>
https://youtu.be/lvNdl7yg4Pg?si=9Yn_HixQugqCthIx
MNIST input
여기서 눈에 보이지 않는 Hidden layers 는 우리가 원하는대로 만들어 줄 수 있다
Softmax & NLL loss
'💻 본업(컴공생) 이야기 > 파이토치 공부 이야기' 카테고리의 다른 글
[파이토치 (PyTorch)] 10. basic CNN (1) | 2025.01.08 |
---|---|
[파이토치 (PyTorch)] 8. PyTorch DataLoader (0) | 2025.01.08 |
[파이토치 (PyTorch)] 7. Wide and Deep (4) | 2025.01.08 |
[파이토치 (PyTorch)] 6. Logistic Regression (로지스틱 회귀) (1) | 2025.01.08 |
[파이토치 (PyTorch)] 5. Linear Regression in PyTorch way (0) | 2025.01.07 |