Multiclass Classification
학습 목표
클래스별 점수·확률·정답 Label의 관계를 알아야 다중 분류의 오류와 잘못된 Label을 해석할 수 있습니다.
Multiclass Logits와 Prediction 비교
시작 조건
제공된 중심 (-2,0),(2,0),(0,2) 주변에서 Class별 6표본, 총 18개를 만듭니다. seed=7입니다.
진행 방법
Linear(2,3)와 CrossEntropy의 입력·Label shape를 확인하세요.- 첫 6개 표본의 Logit 3개·확률 3개·예측을 기록하세요.
- 자료 산점도와 Loss 곡선을 그리세요.
남길 결과
- 출력 6행 표와 자료·Loss 그림.
import numpy as np
import matplotlib.pyplot as plt
import torch
from torch import nn
rng=np.random.default_rng(7)
centers=np.array([[-2.,0.],[2.,0.],[0.,2.]])
X_np=np.concatenate([c+rng.normal(0,.25,(6,2)) for c in centers]);y_np=np.repeat(np.arange(3),6)
X=torch.tensor(X_np,dtype=torch.float32);y=torch.tensor(y_np,dtype=torch.long)
def fit_multi(labels=y):
torch.manual_seed(7);m=nn.Linear(2,3);opt=torch.optim.SGD(m.parameters(),lr=.1);history=[]
for _ in range(200):
loss=nn.functional.cross_entropy(m(X),labels);opt.zero_grad();loss.backward();opt.step();history.append(loss.item())
return m,history
model,history=fit_multi();logits=model(X).detach();prob=torch.softmax(logits,dim=1);pred=prob.argmax(dim=1)
print(prob[:3],pred[:3])
결과 기록·자가 점검
표본:
정답:
Logit 3개:
확률 3개:
예측:
확인할 점
- 확률 합이 표본마다 1이고 Logit과 확률의 argmax가 같은가?
- Class Label을 정수 인덱스로 사용했는가?
Class별 결과와 모호한 입력
시작 조건
query=[(-2,0),(2,0),(0,2),(0,0)]을 학습 모델에 입력합니다.
진행 방법
- 18개 Training 표본의 3×3 Confusion Matrix를 작성하세요.
- query 4개의 확률·예측을 표에 적으세요.
- 중심 표본과 (0,0)의 확률 분포를 비교하세요.
남길 결과
- Confusion Matrix와 query 표.
query=torch.tensor([[-2.,0.],[2.,0.],[0.,2.],[0.,0.]])
qprob=torch.softmax(model(query),dim=1).detach()
print(qprob)
# TODO: 혼동 행렬과 표를 완성하세요.
결과 기록·자가 점검
query:
P0:
P1:
P2:
예측:
해석:
확인할 점
- Confusion Matrix의 합이 18인가?
- 최대 확률을 모델의 절대적 신뢰 보장으로 해석하지 않았는가?
Label 하나가 바뀐 자료
시작 조건
표본 0의 Label만 0에서 1로 바꾸고 같은 조건으로 다시 학습합니다.
진행 방법
- 변경한 Label과 위치를 먼저 표시하세요.
- 기준·변경 모델의 Loss, 원래 Label 기준 오류, 변경 Label 기준 오류를 비교하세요.
- 학습의 어려움을 반복 횟수 문제와 자료 문제로 나누어 설명하세요.
남길 결과
- 두 모델 비교 표와 해석 짧은 설명.
changed_y=y.clone();changed_y[0]=1
changed_model,changed_history=fit_multi(changed_y)
# TODO: 두 Label 기준으로 같은 예측을 평가하세요.
결과 기록·자가 점검
모델:
최종 Loss:
원래 Label 기준 오류 수:
변경 Label 기준 오류 수:
확인할 점
- 입력 자료나 초기화까지 함께 바꾸지 않았는가?
- 어느 Label을 평가 기준으로 썼는지 명시했는가?