앞서 본 포스팅에서, 이미지를 분류할 때 KNN을 사용하면 굉장히 비효율적이라는 것을 알게 되었다.
그렇다면 이번에는 매개 변수적으로 접근해서 이미지를 분류하는 방법을 사용해보자.
이미지를 분류할 때 입력 이미지를 label에 매핑하는 함수를 생각해보자.
이 함수는 다양한 형태로 가정할 수 있지만, 여기에서는 linear한 형태로 가정하자.
= where = weight, = image, = bias
만약 분류할 라벨이 10개라면, 10개의 weight를 만든다. 이 weight는 올바른 이미지가 해당 label에 가장 높은 점수를 받도록 결정해야 한다.
각 변수의 차원에 대해서 생각해보자. 이미지가 10 10 크기라고 가정하면, 10 10 3 (RGB channel) = 300이다. 라벨이 10개라면 분류 결과로 나와야 하는 차원은 10 1 이다. 그렇다면
10 1 + = (300 1) + 로부터
weight의 차원은 10 300, 의 차원은 10 1 임을 알 수 있다.
위에서 살펴본 linear classifier의 경우 결과값으로 label에 해당하는 점수를 반환한다. (ex) label 1 점수 495, label 2 점수 -34, ...) 그러나 이러한 점수들이 무엇을 의미하는지 알기 어렵다.
이를 보완하고자 점수가 0 ~ 1 사이의 값으로 나와서 확률로 해석할 수 있도록 한 것이 softmax classifier이다. 이를 위해서 sigmoid function을 사용하게 된다. sigmoid function을 사용하여 어떤 label에 속할 확률을 표현해보면
와 같이 되는데 이를 softmax function이라고 한다.