[IBM course #5] Deep Learning with PyTorch
Softmax
Softmax 함수는 여러 개의 클래스 중 하나를 선택해야 하는 분류 문제에서 자주 사용되는 함수
각 클래스에 대해 계산된 값을 확률처럼 변환해주며, 이 확률은 모든 클래스에 대해 0~1 사이의 값으로 나타나며, 총합은 1이되게 된다.
1D 예시
클래스 3개(파랑/빨강/초록)로 구분
각 클래스마다 선형 함수(z0, z1, z2)를 적용한 후 argmax로 예측
- argmax 함수: 가장 큰 값을 갖는 인덱스를 반환
예를 들어, z = [1.2, 3.5, 0.8]의 argmax(z)는 1 (가장 큰 값 3.5의 인덱스)
2D 예시 + MNIST
MNIST 이미지 (28x28)는 784차원의 벡터로 변환됨
각 클래스(0~9)는 하나의 고정된 weight 벡터로 표현됨 (예: w0, w1, ..., w9)
분류방법
1.입력 벡터 x와 각 클래스 벡터 w의 내적(dot product) 계산
2.가장 큰 값을 갖는 클래스 선택 → argmax
3.Softmax는 이 값을 확률 분포로 변환해주는 역할
PyTorch에서 Softmax 사용 방법
PyTorch에서 Softmax는 nn.Module을 상속해 커스텀 클래스로 구현 가능
또한, PyTorch에서는 하나의 배치(batch)에 여러 이미지를 넣어 효율적으로 학습이 가능하다
LogisticRegression와의 차이점
- LogisticRegression: 출력 1개
- Softmax: 출력 클래스 수만큼 (out_features)
torch.max() 사용법
torch.max(z, dim=1) → 행별로 가장 큰 값의 인덱스 반환 (이 인덱스가 예측된 클래스가 된다.)
MNIST 실습
1. 데이터 준비
MNIST 데이터를 불러와 tensor 형태로 변환
각 샘플은 (28x28 이미지, 정답 레이블) 쌍으로 구성
2. 모델 정의
입력 차원: 784 (28x28)
출력 차원: 10 (0~9 숫자)
Softmax는 10개의 weight & bias 벡터를 가짐 (784차원)
3. 손실 함수
nn.CrossEntropyLoss() 사용 → 내부적으로 Softmax + log loss 자동 포함
정답 레이블은 1D long tensor여야 함
4. 학습 & 검증
각 epoch마다:
훈련 → 예측 → argmax → 예측 결과와 실제 비교 → 정확도 계산
'🥇 certification logbook' 카테고리의 다른 글
| [Coursera/IBM course #7] 생성형 AI (Generative AI) (5) | 2025.07.23 |
|---|---|
| [Coursera/IBM course #6] Capstone Project 메모 (3) | 2025.07.20 |
| [Coursera/IBM course #5] Convolution 연산 기본 개념 (4) | 2025.07.19 |
| [Coursera/IBM course #5] 신경망 (Neural Net) (1) | 2025.07.16 |
| [Coursera/IBM course #4] Linear Regression Prediction (0) | 2025.06.14 |
| [Coursera/IBM course #4] Dataset (0) | 2025.06.07 |
| [Coursera/IBM course #4] Tensors (2) | 2025.06.07 |
| [Coursera/IBM course #3] 강화학습(Reinforcement Learning) (2) | 2025.06.04 |