💻 본업(컴공생) 이야기/파이토치 공부 이야기

[파이토치 (PyTorch)] 9. Softmax Classifier

st오리🐥 2025. 1. 8. 12:39
728x90
반응형
SMALL

 

 

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

 

728x90
반응형
LIST