Linear Classifiers란?
Linear Classifiers는 선형 분류 모델을 말한다. 분류 모델이란 지도학습의 한 종류로, 입력데이터가 주어졌을 때 해당 데이터의 클래스의 정답값을 예측하거나 분류하는 모델이다. 컴퓨터 비전에서는 이미지가 입력 데이터로 들어왔을 때 이미지 내 특정 사물을 분류하는 것이다. 예를들어 고양이 이미지가 들어오면 학습된 이미지 분류 모델은 해당 이미지를 고양이로 분류해 낸다.
이미지 분류에서 선형 분류기(Linear Classifier) 모델은 어떻게 weight를 학습하고 어떤의의를 가지는지 살펴보자.
1. Parametric Approach
선형 분류 함수 (Linear Classification Function)를 수식으로 표현하면 다음 수식을 따른다.
f(x, W) = Wx + b
이 선형 분류 함수는 가장 간단한 모델로 여기서 각각의 의미하는 바를 살펴보자면 아래와 같다.
- W : 학습할 매개변수(가중치 행렬)
- b:편향(bias)
- x : 입력 이미지의 벡터화된 데이터
- f(x, W): 각 클래스에 대한 점수 출력 (예: 고양이, 개, 배 등 3개의 클래스를 구분한다면 3개의 점수가 나옴).
1) input 데이터
먼저, 입력 데이터로 이미지의 픽셀 값을 사용한다.
예를들어 위와 같이 고양이 이미지가 들어온다면 고양이 이미지의 총 픽셀값과 채널수를 곱한 크기의 vector가 입력값으로 들어온다. 유명한 데이터셋인 CIFAR-10 데이터셋을 가지고 설명하자면 32 * 32 * 3으로 총 3072개 픽셀값이 input으로 들어온다고 할 수 있다.
2) output
output은 분류해야하는 class에 맞춰 확률값으로 나오게 되는데 CIFAR-10에서는 10개의 확률값이 최종 output이 된다. 이 중 확률값이 제일 큰 class가 input 이미지의 최종 class가 된다.
3) 매개변수( 파라미터)
가중치 W와 편향 b는 학습을 통해 값이 변경된다. W는 입력 데이터와 클래스 간의 선형 관계를 학습하기 위한 행렬로 W의 크기는 클래스 개수와 입력 차원에 따라 결정된다. CIFAR-10은 10개의 클래스를 가지므로 W의 크기는 10 * 3072이고 b(편향)는 모델의 출력을 조정하는 추가 매개변수로 1 * 10의 크기를 가진다.
4) loss 함수
이때 모델을 학습시키기 위해 loss 함수를 사용하는데 loss 함수는 실제값과 예측값의 오차를 구해 이 값이 최소가 되는 방향으로 파라미터의 학습을 진행한다.
- Low loss = good classifier
- High loss = bad classifier
loss함수는 경우에 따라 목적함수(objectivej function), 비용함수(cost function)라고 부르기도 한다.
- x_i: i-번째 입력 데이터(이미지)
- y_i: i-번째 데이터의 실제 레이블(정답)
- f(x_i, W): 모델이 출력한 각 클래스에 대한 점수 벡터
- L_i: 각 데이터에 대한 손실 값
- N: 데이터셋의 샘플 수.
- L: 데이터셋 전체의 평균 손실 값.
2. Loss function
다중 클래스 분류 문제에서 가장 많이 사용되는 손실 함수는 Cross-Entropy Loss이다. 이 함수는 모델의 예측 점수를 확률로 변환한 후, 실제 레이블의 확률 로그 값을 사용해 손실을 계산한다. 모델의 예측값을 확률로 변환하기 위해서는 softmax함수를 사용하는데 softmax함수는 아래와 같다.
- P(Y = y_i | X = x_i): 모델이 x_i에 대해 실제 레이블 y_i를 예측할 확률.
모델의 에측 점수를 softmax 함수를 사용해 확률값을 바꾸면 다음과 같다.
현재 위의 이미지의 예시를 보면 실제 이미지는 고양이인데 마지막의 확률값은 car로 예측하고 있는 것을 확인 할 수 있다. 이때 cross-entropy loss를 사용해서 실제값과 예측값의 오차를 구하고 이를 바탕으로 W의 값을 업데이트 해줄 수있다.
이 값은 모델 학습 과정에서 가중치 W와 편향 b를 업데이트하는 데 사용된다. 값이 클수록 예측이 잘못되었음을 의미한다. 모든 데이터 포인트 x_1, x_2, ...., x_N에 대해 손실 값을 계산하고 평균 손실 L을 구한 후 Gradient Descent를 사용해 매개변수를 업데이트 한다.
3. Algebraic Viewpoint
선형 연산의 몇가지 특징을 살펴보자.
1) W와 bias합치기
가장 간단한 선형 분류기 모델에 input의 크기가 2 * 2이고 class가 3개라고 할 때, 모델의 연산을 나타면 위와 같다. 이 모델에서는 총 15개의 파라미터를 학습시켜야 한다. 이때 우리가 학습시켜야 하는 파라미터는 메트릭스인 W와 벡터인 b이다. 연산의 간편성을 위해 bias를 W의 마지막 column에 붙여서 진행하기도 한다. W와 b를 하나의 메트릭스로 합치면 15개의 파라미터 연산을 한번에 계산할 수 있다.
2) linear 모델의 독립성
Linear모델은 독립적으로 연산이 진행되기 때문에 각 클래스에 대한 계산은 서로 독립적이다.
예를 들어 우리가 하나의 이미지에 대해 3개의 클래스의 확률 값(고양이일 확률, 강아지일 확률, 배일 확률)을 구한다고 할 때 고양이일 확률을 구하는 계산은 강아지일 확률을 구하는 계산에 영향을 주지 않는다.
3) 선형 분류기의 선형성
linear calssifier의 기본 함수는 f(x, W) = Wx 로 나타낼 수 있다. 선형 분류기는 입력 데이터에 선형 변환을 적용한다. 이 말은 입력 데이터를 어떤 스칼라 C로 곱하면 결과적으로 결과값도 동일한 비율로 조정된다는 의미이다. 이게 바로 선형성의 본질이다.
f(cx, W = W(cx) = c * f(x, W)
입력 크기의 변화가 출력 점수에 비례하다는 것을 알 수 있다. 이미지에 0.5를 곱하는 예시를 통해 선형 분류기의 선형성(linearity)을 확인할 수 있다. 위의 예시에서는 입력 이미지에 0.5를 곱하였다. 그랬더니 입력 데이터의 스케일 변화가 출력 점수에도 똑같이 영향을 미치는것을 보여주고 있다. 이것으로 선형 분류기의 예측 결과가 입력 크기에 선형적으로 반응한다는 사실을 알 수 있다.
4. Interpreting a Linear Classifier
: 선형 분류기(Linear Classifier)가 입력 데이터를 처리하고 결과를 해석하는 방식
Vision- Linear Classifier에서 가중치 행렬 W는 각 클래스에 대해 특정 패턴을 정의한다.
입력 데이터 x와 W를 곱하면 입력 데이터가 각 클래스와 얼마나 잘 맞는지(유사성)를 나타내는 점수 벡터가 나온다. 위에서 살펴본 선형연산의 특징 중 'Linear모델은 독립적으로 연산이 진행되기 때문에 각 클래스에 대한 계산은 서로 독립적'이라는 특징을 잘 생각해보자.
이 특성을 활용해 W와 input데이터의 연산을 위와 같이 다른 방법으로 표현할 수 있다. 행렬 W의 각 행을 이미지처럼 시각화할 경우, 각 클래스가 입력 데이터를 어떤 방식으로 인식하는지 볼 수 있다. 입력 데이터에 대해, W의 각 행은 특정 클래스에 대응하는 “특징 필터” 역할을 한다는것을 알 수 있다. 즉, 각 클래스의 고유한 template(템플릿)으로 해석할 수 있고 linear classifier는 각 category당 하나의 template을 가지게 된다. 모델 학습을 진행한 후, W를 시각화하면 모델이 어떤 특징을 학습했는지 파악 가능하다.
cifar-10을 학습 시킨 후 각각의 W를 시각화 해본 것이다. W값을 시각화 한 이미지들이 대체로 해당 class의 대표적인 이미지와 유사하게 보이는 것을 확인할 수 있다.
왜 W값들은 이렇게 학습 되었을까?
이것은 각 템플릿들이 이미지의 값과 내적 연산이 되는 것과 관련있다. vector의 내적은 방향이 일치했을 때 제일 큰값이 나온다는 특징이 있다. 그래서 템플릿이 실제 이미지와 비슷할 때, 연산의 결과 값이 크게된다. 즉. 템플릿의 값이 이미지의 실제 값과 비슷 할 수록 해당 클래스의 결과값이 높아지게 되고 이런 특성은 템플릿이 해당 클래스의 모든 이미지의 평균에 해당하는 값을 갖게 만든다.
예를들면, 고양이 클래스에 해당하는 템플릿은 고양이 이미지가 들어오면 템플릿과 input이미지의 내적연산이 가장 큰 값이 나오도록 학습해야한다. 그러면 템플릿은 cifar-10에 있는 모든 고양이 이미지들에 만족하기 위해 점점 고양이 이미지들과 비슷한 값으로 학습이 될것이고 여러가지 이미지를 만족하기 위해서 학습이 거듭될수록 템플릿 값은 점점 고양이 이미지의 평균값과 비슷해 질것이다. 그래서 최종적으로 학습이 진행된 고양이 템플릿을 시각화 해보면 cifar-10에 있는 모든 고양이 이미지의 평균 이미지와 비슷한 것을 확인할 수 있다.
5. 선형 분류기의 단점
지금까지 살펴본 선형 분류기에는 여러 단점 들이 존재한다.
1) 하나의 템플릿만 사용하므로, 고양이가 누워있거나 뒤를 돌아있거나 하는 등 데이터가 복잡하거나 여러 모드를 가지는 경우 하나의 템플릿에 모든 정보를 담아야한다는 특성 때문에 잘못된 예측을 할 수 있을 확률이 크다.
이 말 템플릿의 경우 말의 머리가 좌우로 있는것처럼 학습된 것을 알 수 있다. cifar-10에 있는 말 사진이 오른쪽, 왼쪽으로 서있는 말이였기 때문일거다. 만약 여기에 말이 앉아 있거나 말의 얼굴 이미지를 추가해서 학습하게 된다면 해당 템플릿은 이런 이미지들도 모두 반영하여 점점 이상한 방향으로 템플릿이 만들어질것이다.
2) XOR문제를 해결할 수 없다.
선형분류기로는 위와 같은 XOR문제를 절대 해결할 수 없다. 이는 선형 분류기의 명확한 한계를 보여준다.
이러한 선형분류기의 단점들을 해결하기 위해 Nerural Networks가 나오게 되었다.
이는 다음 포스팅에서 소개하도록 하겠다.
'하루 30분 컴퓨터 비전 공부하기' 카테고리의 다른 글
[파이썬] itertools count, 조합, 순열 사용방법 (0) | 2023.09.04 |
---|