Lecture 3: Linear Classifiers

해담·2024년 11월 19일

컴퓨터비전

목록 보기
7/13

Last time: Image Classification

Image Classification란 이미지를 input으로 넣으면 어떠한 연산을 한 후, output으로 고정된 카테고리 세트 중 하나에 이미지 할당이 되는 것입니다.

Today: Linear Classifiers

3장에서 배울 내용은
1. Linear classifier가 무엇인지
2. Linear classifier의 두 가지 관점
3. Loss를 가장 낮추는 classifier를 찾아야 하므로, loss function이 필요 -> class-entropy loss

What is a Linear clasifier?

Recall CIFAR10

우리가 오늘 하는 건 10개의 분류 기준이 있는 데이터셋을 이용하여 최적의 모델 W를 구하는 것입니다.

CIFAR10란 data set으로, 한 레이블당 50,000개의 교육 이미지와 10,000개의 테스트 이미지로 구성되어 있습니다. 또한 각 이미지는 32x32(가로세로 32개씩)x3(RGB channel)으로 구성되어 있어, 벡터로 펼쳐내면 3072차원이 됩니다. (테스트 이미지: 학습시킨 모델을 검증할 이미지)

Parametric Approach: Linear Classifer

Linear Classifer를 만든다는 의미는 f(x, W)라는 함수를 하나 만드는 것입니다.

f(x, W) = WxW_x의 input은 x와 W입니다.
x는 이미지를 펴서 3072 사이즈의 vector로 간주하고, W는 파라미터 matrix입니다.
b는 bias로 vector입니다.

f(x, W)의 output은 10차원으로, 각 class에 대한 score를 얻는 방식입니다.
x라는 input image에 대해 Wx+b의 일차변환을 하는 것이 Linear Classifer의 핵심입니다.

f(x, W) = Wx + b
f(x, W): (10,) → output
W: (10, 3072) → model
x: (3072,) → image (data set)
b: (10,)

, 다음에는 내가 넣는 이미지 개수이므로 뭘 넣든 상관이 없습니다.
W와 x를 곱하면 f(x,W)의 값이 나옵니다. output이 10개가 나와야 하므로 모델은 (10, 3072)로 구성합니다.

Example for 2x2 image, 3 classes (cat/dog/ship) → pdf 볼 것

input image의 사이즈가 2x2이고, 3개의 클래스가 있습니다. w에서 하나의 열이 하나의 분류기가 됩니다.

b(bias)가 존재하는 이유는 linear classifer는 선형이기 때문에, 그래프로 표현하면 원점을 지나게 됩니다. 원점만을 지나면 표현할 수 있는 데이터가 한정적이기 때문에 b를 사용하여 절편을 바꿔서 표현하게 됩니다.

Linear Classifier: Algebraic Viewpoint

Linear Classifier의 개념을 여러 관점으로 볼 수 있습니다.

Algebraic Viewpoint이란 대수적 관점입니다. Linear Classifier를 f(x,W) = Wx + b의 수학적 형태로 표현한 것입니다. (matrix와 vector의 multiplication 수학식)

Linear Classifier: Bias Trick

b를 W에 붙여 차원을 확장하여 계산하는 것으로, 한 번의 연산으로 결과를 낼 수 있게 변형한 형태입니다. x의 차원을 하나 늘려 1의 값을 갖게 하고, W와 b를 하나의 매트릭스로 합치는 방법입니다.

이처럼 Linear Classifier를 이해하는 두 가지 관점에는 W의 각 row를 필터로 이해하는 Algebraic Viewpoint와 템플릿으로 이해하는 Bias Trick가 존재합니다.

InterPreting a Linear Classifier (중요)

그렇다면 Algebraic 관점으로 봤을 때, 선형 분류기를 어떻게 이해할 수 있을까요?

W의 row를 하나씩 떼어서 이미지와 같은 2x2 픽셀 구성으로 만듭니다. 즉, x와 W를 내적하는 것은 W라는 필터를 거치는 행위입니다. W의 row 하나 하나가 필터 역할을 하게 됩니다.

각 class에 대한 필터를 거쳐서 나온 결과는 각 class에 대한 score이므로, 이것을 Linear Classifier로 이해할 수 있습니다.

Interpreting an Linear Classifier: Visual Viewpoint

Visual Viewpoint이란 Linear Classifier를 Templete Matching으로 이해하는 것입니다.

이미지의 각 클래스 스코어는 각 템플릿들을 이미지와 내적을 통해 하나 하나 비교함으로써 계산됩니다. 이 스코어를 기준으로 가장 잘 매칭되는 것이 무엇인지를 정합니다. 즉, Linear Classifier가 결국 templete matching를 하고 있고, 각 템플릿이 학습을 통해 배워집니다.

그러나 Linear Classifier는 각 클래스당 딱 한 장만의 템플릿만을 활용할 수 있습니다.

해당 말의 템플릿 이미지를 보면 초록색 배경에 말이 오른쪽으로 서 있습니다. 따라서 비슷하게 생긴 이미지에만 'horse' 클래스의 스코어가 높을 것입니다.

즉, 각 클래스당 딱 한 장의 템플릿만 활용할 수 있다는 것은 우리가 원하는 레이블에 해당하는 다양한 모양들을 캡쳐해서 올바른 레이블에 배정해주지 못한다는 단점이 있습니다.

이미지가 뿌연 이유는 어떤 이미지가 들어오든 간에 구별해야 하므로, 평균값으로 표현(blur)합니다. 평균값을 써야 어떤 이미지가 들어가도 값이 가장 크게 나오기 때문(내적 관련)입니다.

Recall: Perceptron couldn’t learn XOR (Perceptron = Linear Classificaion)

또한 linear 모델은 직선이기 때문에 데이터가 살짝 꼬여 있거나 복잡하면 풀 수가 없습니다. 따라서 한계점이 큽니다.

So Far: Defined a linear score function + Choosing a good W

Classifier의 궁극적인 목표는 정답 클래스에 대한 점수를 높게 설정하는 것입니다. 하지만 실제로 어떻게 좋은 W를 선택할 수 있을까요?

좋은 W 값을 측정하기 위해서는 loss function을 사용해야 합니다. loss function은 W에 대한 함수이고, 그 함숫값이 가장 낮아지는 부분을 찾아가야 합니다.(optimization).

Loss Function

Loss function은 W 하나가 고정되었을 때, 선형 분류기가 얼마나 잘하고 있는지를 평가해주는 함수입니다. Loss function의 함수값이 높으면 좋은 분류기이고, 낮으면 좋지않은 분류기임을 나타냅니다.
low loss = good classifier
high loss = bad classifier

즉, loss function의 목표는 W를 잘 조정하여, 궁극적으로는 loss를 낮춰주는 것입니다.

L=1NiLi(f(xi,W),yi)L = \frac{1}{N} \sum_{i} L_i(f(x_i, W), y_i)

NN: 들어간 이미지 개수
LiL_i: loss function
f(xi,W)f(x_i, W): 예측값 -> xix_i에 대해서 계산한 스코어
yiy_i: 정답값 (true label)

모든 sample(XiX_i)에 대해 linear classifier를 적용한 후, 계산한 스코어를 yiy_i로 평가한다. 즉, yiy_i가 평가 대상이며, 평가 지표 함수는 Li(W)L_i(W)가 됩니다.

결론적으로, Linear Classifier의 Loss는 각 sample의 loss들의 평균값입니다.

Cross-Entropy Loss (Multinomial Logistic Regression)

cross-entropy loss는 분류기가 반환한 score function의 점수를 확률로 이해할 수 있으면 좋겠다는 아이디어로 시작됩니다. 확률을 도입하기 위해 Softmax function를 활용합니다.

1. exp
exp를 씌우면 모든 점수가 양수로 변환됩니다. 확률 값은 0 이상이어야 하며, 음수나 0인 값을 사용할 수 없습니다. 따라서 exp는 단순히 양수로 만드는 것뿐만 아니라, 점수 간의 상대적인 크기 차이를 그대로 유지하며 확률 분포로 변환하는 데 필수적입니다.

exp: 자신의 값에 e(자신의 값)^2를 계산해줍니다.

2. Softmax function (nomalize 과정)

P(Y=kX=xi)=exp(sk)iexp(sj)P(Y=k|X=x_i) = \frac{exp(s_k)}{\sum_{i} exp(s_j)}

normalize: 자기 자신의 확률값/전체(확률값을 더함) (결과는 전체가 1이 나오는 확률값). normalize 값이 높을수록 loss가 낮아집니다(성능이 좋아집니다).

3. loss 값 계산

Li=logP(Y=yiX=xi)L_i = -logP(Y=y_i|X=x_i)

-log 값을 씌우는 이유는, 로그함수의 그래프 모양을 생각해봐야 합니다. 해당 그래프의 x 절편은 1을 지나며, -log는 0~1의 값을 값을 갖습니다. 여기서 x는 normalize값, y는 loss 값입니다. 1에 가까울수록, 즉 확률값이 클수록 loss가 작아지는 형태의 그래프입니다.

loss: normalize의 결과값을 해당 식에 대입하여 나온 값이 loss 값이며, 이 값이 낮을수록 성능이 좋은 것입니다.

profile
해담이를먹여살리기위한..

0개의 댓글