학습/AI

Deep Learning for Computer Vision : Linear Classification

roquen4145 2025. 4. 25. 18:36

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

 

CS231n Deep Learning for Computer Vision

Table of Contents: Linear Classification In the last section we introduced the problem of Image Classification, which is the task of assigning a single label to an image from a fixed set of categories. Moreover, we described the k-Nearest Neighbor (kNN) cl

cs231n.github.io

이번에는 위 내용에 대해서 한글로 정리해보겠습니다.

선형 분류 개요

이미지 분류를 위해 kNN의 한계를 극복하고 학습된 파라미터만으로 빠르게 예측할 수 있는 선형 모델을 도입한다.

선형 모델 접근법에서는 점수 함수와 손실 함수라는 두 가지 큰 축이 있다.

점수 함수(score function)는 픽셀 데이터(숫자)를 클래스 점수로 변환하고

손실 함수(loss function)는 예측 점수와 실제 레이블 간 불일치를 수치화한다.

그리고 손실 함수를 최소화하도록 파라미터 W,b 학습하면서 최적화를 하게 된다.

점수 함수: 이미지 → 클래스 점수

각 훈련 데이터 x_i 가 라벨 y_i 이라고 할 때 (x_i ∈ R^D, i = 1...N , y_i ∈ 1 .. K ),

선형 매핑은 f(x_i, W, b) = W * x_i + b 으로 되고 이 값이 클래스 점수가 된다.

여기서 W는 가중치(weight)라고 불리고 b는 편향벡터(bias vector)라고 불린다.

x_i 는 [D x 1] 형태의 한개 column을 갖고 W는 [ K x D ] 행렬, b는 [ K x 1 ] 행렬이다.

즉 각 클래스(K개)별 점수를 얻는 것이다.

 

이러한 선형 매핑 방식은 학습 후 훈련 데이터를 폐기 가능하다는 장점이 있으며
새로운 이미지 분류는 단일 행렬곱으로 빠르게 처리할 수 있다.

선형 분류기 해석

선형 분류기의 가중치는 하나의 열로 펼쳐진 각 픽셀에 대해서 클래스별로 좋아함/싫어함을 표현한다.

따라서 가중치와 픽셀 값의 곱의 합은 클래스 별 점수의 합으로 값이 클수록 해당 클래스와 연관성이 있다고 해석할 수 있다.

기하학적 관점에서는 가중치 배열은 고차원 공간에 존재하는 이미지들을 나누는 초평면의 역할을 한다.

또한 선형 분류기를 템플릿 매칭 관점에서 해석할 경우 가중치와 이미지의 행렬곱은

클래스별 템플릿과의 내적으로 볼 수 있다.

 

선형분류기에서는 편향값을 가중치에 포함시키는 바이어스 트릭이 있으며 x_i에 값이 1인 행을 추가하고

바이어스 값에 해당하는 행을 가중치 배열에 붙이는 방식이다.  

손실 함수

점수 함수를 통해 얻은 값은 특정 가중치 세트가 예측한 수치이고 올바르지 않은 수치를 제공할 수 있다.

손실함수는 얼마나 실제 값과 불일치하는지를 수치화한다.

 

손실함수에는 가장 대표적으로 다중 클래스 SVM(Support Vector Machine)과 소프트맥스 분류기가 있다.

 

다중 클래스 SVM 손실은 올바른 클래스 점수가 다른 클래스보다 특정 마진(Delta)이상 높아야 한다는 조건으로 구성된다.

예를 들어 세 가지 클래스에 대해서 점수가 [13,-7, 11] 이고 y_i = 0, Delta = 10 일 경우

L_i = max(0, -7 - 13 + 10) + max(0, 11 - 13 +10) = 0 + 8 = 8 이다.

위 손실함수는 힌지 손실이라고도 불린다.

 

모든 훈련 데이터를 분류해내는 가중치 세트는 유일하지 않고 상수를 곱하면서 유사한 가중치를 무한히 만들어낼 수 있다.

따라서 이러한 모호성을 제거하기 위해 손실함수에는 정규화 패널티 R(W)를 추가하여 해결한다.

정규화 패널티는 가중치의 모든 값을 제곱한 값을 더한 값으로 구성되며 전체 멀티클래스 SVM 손실은 다음과 같다.

 

위에서의 람다(lambda)가 정규화 강도이며 하이퍼파라미터이다.

실제 고려 사항으로는 마진은 보통 1로 설정해도 무관하다는 사실과

마진과 정규화 강도를 조절하는 것은 본질적으로 동일한 트레이드오프를 제어한다는 것이다.

소프트맥스 분류기

소프트맥스 분류기는 위에서 언급했던 것과 같이 유명한 2개 분류기 중 하나이다.

소프트맥스 분류기는 선형 점수(W * x_i)를 각 클래스 별로 정규화되지 않은 로그 확률로 해석한다.

또한 힌지 손실을 교차 엔트로피 손실로 대체한다.

f_j는 클래스 점수 f의 j번째 요소를 의미하고 f_j (z) =e^(z_j)/ k e^(z_k) 는 소프트맥스 함수라고 불린다.

여기서 z는 임의의 실수 값 벡터이며 전체 합이 1이 되는 0과 1사이의 값으로 구성되어 있습니다.

 

손실함수에서 지수함수값이 매우 클 수 있으므로 컴퓨터가 계산을 제대로 못하는 경우가 생길 수 있다.

그러한 상황을 수치 안정성이 떨어진다고 표현하며 수치 안정성을 향상시키기 위해서

지수 연산을 하기 전에 점수 벡터 f에서 최댓값을 빼는 log-sum-exp trick 등을 사용한다.

 

SVM vs. Softmax 비교

SVM은 올바른 클래스만 마진 기준 만족하면 손실을 0으로 측정하여 국소적(local) 목적으로 사용하며

Softmax는 전체 확률 분포를 지속적으로 개선하여 미시적(granular) 손실을 감소시킨다.

실무 성능상 두 분류기 간 큰 차이 없으며 데이터·하이퍼파라미터에 따라 선택한다.

반응형