티스토리 뷰

해당 글은 Stanford CS class  CS231n: Convolutional Neural Networks for Visual Recognition 강의를 기반으로 하고 있습니다.

(출처 :http://cs231n.stanford.edu/syllabus.html) Video 강의와 강의 note를 가지고 정리하고 있습니다.


Linear Classification


CIFAR10 data

50,000 training images

each image is  

10,000 test images


  Nearest Neighbor Classification을 사용하여 data-driven approach 방식으로 모델을 training하고 test하는 과정을 살펴보았습니다. Linear Classification은 training data를 모두 기억하고 있는 방법이 아닌, training data를 사용하여 parameter를 학습시키고, 학습이 잘된 best parameter를 통해 Image와 class score를 mapping하는 방식으로 클래스 분류가 이뤄집니다.





Linear classifier function식은 위와 같습니다. 


 : i 번째 이미지 데이터 (i = 1 ... N)

 : Parameters 또는 Weights

   : bias vector




CIFAR10 data를 사용하여 linear classifier를 만들어 봅시다. 

 는 입력되는 이미지 데이터를 말합니다. 각 이미지는 dimensionality를 갖습니다.   


( CIFAR10 이미지의 경우  ,  




  는 의 정답 label 입니다. i 번째 이미지가 어떤 클래스에 속하는지에 대한 label 입니다. 

CIFAR10 의 경우 총 10개의 카테고리로 이미지를 분류하고 있습니다. 따라서   , 









linear classifier function을 통해 결과적으로 하게 되는 것은 이미지 픽셀값들을 클래스 스코어로 전환하는 것입니다. 앞에서 mapping이라고 소개한 것이 바로 이것이죠. 



3072x1 array 형태의 이미지 배열에 10x3072 형태의   parameter를 곱해 10x1 로 클래스별 score array가 구해집니다. 여기에 10x1 형태의 bias vector를 더해주면 overfit도 막고, 데이터의 특성에 의해 결과벡터 값이 치우치는 상황 등을 피할 수 있습니다. 







위 그림을 보면 4 차원 배열로 표현된 input image가  parameter와 곱해지면서 총 클래스 갯수 차원의 배열로 결과가 도출되는 것을 확인할 수 있습니다. 고양이 이미지인데 437.9 로 dog class score가 가장 높게 나왔군요.  parameter가 잘못학습된 경우입니다. training을 더 시켜 parameter를 업데이트할 필요가 있습니다.  



Linear clssifier의 결과는 각 클래스마다의 선형 분류기들의 모임이라고 할 수 있습니다. 각 분류기는 하나의 클래스에 대해서만 분류 능력을 갖습니다. 예를 들어 고양이 분류기 선이 초록색일 때,  그 분류기가 고양이와 개를 분류할 수 는 없고 오직, 고양이인지 아닌지 에 대해서만 작동합니다. 





※bias vector trick 추가

a common simplifying trick to representing the two parameters 



위의 식처럼 W parameter와 b(bias)를 따로 처리하는 것은 성가신일입니다. 벡터도 따로 잡아줘야하고, 더하기 연산도 따로 해줘야하죠. bias와 W parameter 곱 연산을 따로 하지않고, bias vector를  W parameter에 합치는 것으로 W,b 파라미터를 좀 더 간편하게 처리할 수 있습니다. W와 b parameter를 하나의 matrix로 합치고, input data에 1 값을 갖는 dimension을 하나 추가하는 트릭입니다.  W와 b 벡터를 합치면서 새로운 single parameter W가 생성되는데, 이 parameter는 기존의 W parameter에 bias 벡터가 추가되어 dimension이 1만큼 더 커진 모양을 갖습니다. 이에 맞춰 input 데이터 벡터도 dimension을 1 늘리고, 그 값을 실수 1로 고정시켜 할당한다면, 새로운 W parameter vector와 input vector(dimension + 1 조정된)를 곱하는 것 만으로 bias를 곱해주는 결과를 가지게 됩니다. 


좌측 그림이 기존의 linear classifier 모델, 우측 그림이 bias trick을 적용한 linear classifier 모델입니다.

두 과정의 결과는 똑같다는 것 보이시나요? new single W의 bias 값 부분이 x_i의 고정된 벡터값 1과 곱해지면서 W*x_i + b 를 한 것과 같은 결과를 낳습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함