본문 바로가기

Study doc./Deep Learning

[cs231n] 이미지 분류 초간단 정리

사람은 사진을 보면 자연스럽게 많은 정보를 얻게 됩니다.

여름 바닷가 사진을 보고 날씨 정보, 놀고 있는 사람 수, 사람들의 감정, 행위 등 본인도 모르게 많은 생각을 하는것처럼 말이죠.

그런데 단지 사진만 보았을 뿐인데 어떻게 이렇게 많은 정보를 얻을 수 있었을까요?

바로 경험을 통한 학습 때문입니다.

 

그렇다면 컴퓨터에게도 사람만큼 학습을 시킨다면, 

컴퓨터도 사진을 보고 같은 정보를 얻을 수 있을까요?

이런 의문으로 시작하는 분야가 '컴퓨터 비전' 입니다.

 

컴퓨터 비전에 대해 깊이 공부하기 전에

컴퓨터가 이미지를 인식하는 원리부터 알아봅시다.

사실 이미지는 컴퓨터가 보기에 숫자로 이루어져 있습니다.

이미지는 픽셀 단위로 쪼갤 수 있고, 그 픽셀 하나에는 RGB 값으로된 숫자들이 있는 것입니다.

 

엥? 그럼 컴퓨터는 그 숫자들을 가지고 어떻게 사람사진인지, 고양이 사진인지 알까요??!

여기서 선형분류(Linear Classification)의 개념이 나옵니다.

왜 선형분류냐구요? 말 그대로 이미지를 선형식으로 변형해서 분류하기 때문입니다.

 

가장 기본이 되는 선형식은 y = W*x + b 입니다.

x라는 input, 즉 숫자로 구성된 이미지를 가중치 값인 W와 곱하고 편향값인 b를 더해서 y라는 score 값들을 만들어 냅니다. 그리고 이 score 값들이 이게 사람인지, 고양이인지 판단하는 기준이 됩니다.

 

하지만 정답이 아닐수도 있겠죠?

그래서 정답 score와 정답이 아니지만 정답으로 잘못 예측한 score의 차이를 이용해서 오차(loss)값을 생성합니다.

 

이 오차값을 이용한 오차함수(SVM 오차함수, softmax 오차함수) 생성 규칙들을 배웠고, 이 오차 함수에 과적합(overfitting)을 막기위한 규제식을 추가하여 최종적인 오차 함수를 정의했습니다.

 

우리의 목표는 이 오차 함수의 오차를 최대한 0에 가깝게 만드는 것이고,

이를 위해서 최적화(Optimization) 과정을 거칩니다. 

여기서 최적화라 함은 오차함수 값을 0에 가깝게 하는 최적의 w 값을 구하는 것입니다.

 

그럼 어떻게 최적의 w 값을 구할 수 있을까요?

바로 경사하강법인 Gradient Descent 방법을 사용합니다.

미분해서 loss가 줄어드는 방향으로 계속해서 w를 변화시키는 것인데요,

하나하나 손으로 계산하는 numerical gradient 방법은 시간이 너무 오래걸리기 때문에

미분식을 이용하여 backpropagation을 활용한 analytic gradient 방법을 사용해서 최적의 w를 찾습니다.

 

 

최종적으로 컴퓨터는 loss가 가장 작은 가중치 w를 이용한 선형 분류식을 만들게 되고, 

해당 분류식을 통해 학습된 수백만장의 이미지가 이 사진이 사람인지, 고양이인지 분류할 수 있게 도와주는 것입니다.