[CS231n] Lecture2-(2): Linear Classification

k-Nearest Neighbor (kNN)는 학습 데이터를 몽땅 기억해야 하고, 테스트할 때마다 모든 데이터와 비교해야 해서 너무 느리다.

이번에는 딥러닝(Neural Network)의 기초가 되는 선형 분류기(Linear Classifier)를 배운다. 이것은 데이터를 외우는 게 아니라, 데이터를 설명하는 공식(Parameter)을 배우는 방식이다.

1. 점수 함수(Score Function)

우리의 목표는 이미지를 입력받아 "이건 고양이야(점수 높음!)"라고 판단하는 함수를 만드는 것입니다. 가장 단순한 형태인 선형 함수로 시작해보자.

$$f(x_i,W,b)=Wx_i+b$$

 

  • (Input): 이미지의 픽셀 값들. (고정된 데이터)
  • (Weights, 가중치): 각 픽셀이 클래스 결정에 얼마나 중요한지를 나타내는 필터. (우리가 학습시켜야 할 대상!)
  • (Bias, 편향): 데이터와 상관없이 특정 클래스를 선호하게 만드는 기본 점수 (예: 데이터셋에 고양이가 많으면 고양이 점수를 기본적으로 높게 줌)

직관적 해석: 템플릿 매칭 (Template Matching)

이 수식은 기하학적으로 '템플릿 매칭'이라고 볼 수 있다.

  • 의 각 행(Row)은 특정 클래스(예: 비행기, 자동차, 새)의 이상적인 모습(Template)을 기억하고 있다.
  • 입력 이미지 가 들어오면, 저장된 템플릿 와 내적(Inner Product)을 수행한다.
  • 내적은 두 벡터가 비슷할수록 값이 커지므로, 이미지가 템플릿과 비슷하게 생길수록 높은 점수가 나온다.
💡요약: $W$는 각 클래스의 대표 이미지를 기억하고 있다가, 새 이미지가 오면 얼마나 닮았는지 비교하여 채점한다. 따라서 템플릿 매칭이라고도 한다.

2. 손실 함수(Loss Function)

모델이 점수를 냈는데, 그 점수가 좋은지 나쁜지 어떻게 알까? 이를 정량적으로 측정하는 것이 손실 함수(Loss Function)이다.

  • 역할: 예측값과 실제 정답(Label)의 차이를 계산한다.
  • 목표: 손실(Loss) 값이 0에 가까워지도록 $W$를 수정하는 것이 학습의 목표이다.

(1) 다중 클래스 SVM 손실(Multiclass SVM Loss)

SVM 손실은 정답 클래스의 점수가 오답 클래스보다 최소한 마진($\Delta $)만큼은 더 높아야 한다는 철학을 가진다.

$$L_i=\sum_{j\ne y_i} \text{max} (0,s_j-s_{y_i}+\Delta $$

  • $s_{y_i}$: 정답 클래스의 점수
  • $s_{j}$: 오답 클래스의 점수
  • $\Delta $(Delta): 우리가 원하는 최소한의 격차 (보통 1로 설정)

그래프로 이해하기: 힌지 손실(Hinge Loss)

이 함수를 그래프로 그리면 경첩(hinge) 모양이 된다.

  • Case A (잘함): 정답 점수가 오답 점수보다 $\Delta $ 이상 높음 → Loss = 0 (칭찬은 없지만 벌점도 없음)
  • Case B (못함): 정답 점수가 낮거나, 높더라도 차이가 미미함 → Loss > 0 (차이만큼 벌점 누적)

3. 규제(Regularization)

학습 데이터에 대해 Loss가 0인 완벽한 $를 찾았다고 치자. 이게 과연 좋은 모델일까? 아닐 수도 있다. 학습 데이터에만 너무 과도하게 맞춰진 과적합(Overfitting) 상태일 수 있기 때문이다.

이를 막기 위해 손실 함수에 페널티 항 $R(W)$를 추가한다.

$$L=\underbrace{\frac{1}{N} \sum_i L_i}_{\text{Data Loss}}+ \underbrace{\lambda R(W)}_{\text{Regularization Loss}}$$

  • Data Loss: 학습 데이터를 얼마나 잘 맞추는가? (모범생)
  • Regularization Loss: 모델이 너무 복잡해지지 않게 막는가? (단순함 추구)
  • $\lambda $(Lambda): 규제의 강도를 조절하는 하이퍼파라미터

L2 Regularization (가중치 감쇠)

가장 흔히 쓰이는 방식으로, $W$의 모든 값을 제곱해서 더한다.

  • 효과: $W$의 특정 값이 너무 튀지 않게(Diffuse) 만들어준다.
  • 직관: 모델이 입력 데이터의 어느 한 픽셀에만 의존하지 않고, 모든 픽셀을 골고루 보게 만든다. 이렇게 하면 노이즈에 강해지고 일반화 성능이 좋아진다.

4. 소프트맥스 분류기(Softmac Classifier)

SVM이 점수 차이에 집착한다면, Softmax는 점수를 확률로 바꿔서 해석한다. 딥러닝에서 가장 많이 쓰이는 방식이다.

(1) 확률 변환

$$P(y_i|x_i)=\frac{e^{s_{y_i}}}{\sum e^{s_j}}$$

점수들에 exp(지수)를 취해 양수로 만들고, 전체 합으로 나눠서 0~1 사이의 확률 값으로 만든다.

(2) 교차 엔트로피 손실 (Cross-Entropy Loss)

$$L_i=-\log(\frac{e^{s_{y_i}}}{\sum e^{s_j}})$$

  • 우리는 정답 클래스의 확률이 1(100%)이 되기 원한다.
  • $\log (1)=0$이고 $\log (0)=-\infty $이므로, 확률이 1에 가까울수록 Loss는 0이 되고, 확률이 낮을수록 Loss는 무한대로 커진다.

5. SVM vs Softmax 비교

구분 SVM (Hinge Loss) Softmax (Cross-Entropy)
핵심 마진(Margin) 만족 여부 확률(Probability) 최대화
특징 적당히 만족함. 정답 점수가 충분히 높으면 더 이상 신경 쓰지 않음(Loss=0) 완벽주의자. 정답 확률을 조금이라도 더 1에 가깝게 만들려고 끝까지 점수를 올리려 함
비유 커트라인만 넘기면 만점 주는 시험 100점을 맞아도 100.1점을 맞으라고 닦달하는 선생님..

핵심 요약

  • Linear Classifier: 형태로 템플릿 매칭을 수행한다.
  • Loss Function: 모델의 예측이 얼마나 구린지(?) 측정하는 척도다.
  • SVM Loss: 정답이 오답보다 확실히(Margin) 커야 한다
  • Regularization: 모델이 너무 복잡해지지 않게(Overfitting 방지) 가중치에 페널티를 준다.
  • Softmax: 점수를 확률로 바꾸고, 정답 확률을 최대화한다.

 


참고: https://cs231n.github.io/linear-classify/