손실 함수·연습 문제

Multi-class Hinge Loss (Weston-Watkins) [medium]

문제 설명PROBLEM

preview

Multi-class Hinge Loss (Weston-Watkins) [medium]

v1 힌지 손실 은 이진 (y{1,+1}y \in \{-1, +1\}). Multi-class SVM 으로 확장 (Weston-Watkins 1998):

Li=cyimax(0, 1+si,csi,yi)L_i = \sum_{c \ne y_i} \max(0, \ 1 + s_{i, c} - s_{i, y_i})

전체 배치:

L=1NiLiL = \frac{1}{N} \sum_i L_i

직관

  • 정답 클래스 yiy_i 의 점수 si,yis_{i, y_i} 가 다른 모든 클래스보다 적어도 margin(=1) 이상 크게 나와야 손실 0.
  • 만약 어떤 오답 클래스 ccsyi1s_{y_i} - 1 보다 큰 점수를 내면 페널티.

벡터화 트릭

N = len(y)
correct = scores[np.arange(N), y][:, None]      # (N, 1)
margins = np.maximum(0, scores - correct + 1)   # (N, K)
margins[np.arange(N), y] = 0                    # 정답 클래스 제외
return margins.sum(axis=1).mean()

과제

함수 multiclass_hinge(scores, y) 를 완성하세요.

  • scores shape (N, K), y shape (N,) 정수 in [0, K).
  • 반환: Python float (배치 평균).
  • 루프 금지.

테스트 케이스

#이름검증
1float 반환
2완벽 분리 (정답 점수 >> 오답) → ~0
3정답 클래스는 손실에 포함 안 됨
4K=2 특수 케이스
5margin 안에 있는 오답 → 페널티
6손계산 toy
7루프 금지
개념 노트와 실수 포인트

손실 함수

  • MSE=평균제곱오차, MAE=평균절대오차, CrossEntropy=분류용.
  • ⚠️ CrossEntropy 의 log(0)-inf. 작은 epsilon 을 더해 방지.
  • 평균(mean) vs 합(sum) reduction, 예측·정답 인자 순서 확인.