CS231N강의 정리

(CS231N 정리)Lecture 2 : Image Classification

주녕콩 2023. 4. 29. 13:12

1. Image Classification

 

컴퓨터가 classification을 하기 위해서는 입력 이미지, label이 필요합니다.

컴퓨터에게 이미지는 큰 격자 모양의 숫자 집합으로 이루어져 있습니다. 객체를 인식하기에는 어려워 보입니다.

 

사진이 조금만 달라져도 픽셀 값들이 대부분 다른 값이 되기 때문에 객체를 지속적으로 인식하기에는 어려운 부분이 있습니다.

이러한 가려짐, 어두움 등등 인식을 방해하는 요소들이 생기는 경우에는 컴퓨터가 객체를 인식하는 것이 힘들어지게 됩니다.

Huble & Wiesel의 연구를 통해 Edges라는 방법이 있습니다.

3개의 선이 만나는 지점을 corner라고 했을 때 고양이의 corner 규칙 집합을 이용해 구별하는 방법입니다.

위의 방법에 대한 단점

  1. 위의 알고리즘은 고양이의 위치와 밝기, 생김새 등에 대해 영향을 받게 됩니다.
  2. 낮은 확장성을 때문에 많은 여러 개체를 인식하는 부분에 힘든 점이 있습니다.

Data-Driven Approach(데이터 중심 접근방법)

많은 이미지 데이터 셋과 label을 수집하여, Machine Learning Classifier를 학습을 시킵니다.

이때, ML 알고리즘은 많은 데이터들을 요약해 다양한 객체들을 인식할 수 있는 모델을 만듭니다.

Nearest Neighbor

1번째 classifier로 nearest neighbor가 있습니다.

 

Nearest neighbor는 단순히 train data를 기억하고, test data와 비교해 label을 예측합니다.

왼쪽은 10개로 나눠진 train set data이고, 오른쪽은 nearest neighbor를 사용한 test 결과입니다. 보기에 비슷한 이미지들이지만, 객체 종류가 다른 것을 확인할 수 있다.

 

이미지 비교 함수

 

test 이미지와 train 이미지를 비교하기 위한 비교함수

 

L1 distance(Manhattan distance) pixel wise로 비교하고 차이에 절대값을 취해준다.

K-Nearest Neighbor

주위의 k개의 이웃을 중 가장 많은 득표 수를 가진 class로 예측합니다.

K의 개수가 늘어날 수록 경계선들이 부드러워지고, Noise 값들로 인한 예측 부분이 사라짐을 알 수 있다. 즉, K가 높을 수록 Noise에 대해 강해집니다.

 

 

KNN은 다양한 레이블의 데이터 중에서, 자신과 가까운 데이터를 찾아 사긴의 레이블을 결정하는 방식입니다.

 

빨간 색이 오답이고, 초록색이 맞는 답입니다. K-NN 성능은 떨어지는 것을 알 수 있습니다.

 

Distance metric(거리 척도)

척도에 따라 기하적으로 구조가 달라집니다.

 

L1의 관점에서는 위의 사각형 위의 점들이 모두 원점에서부터 동일한 거리만큼 떨어져 있다. 어떤 좌표 시스템인지에 따라 많은 영향을 받습니다.

 

하지만 L2의 관점에서는 원으로 나타낼 수 있다. 그리고 좌표계와 아무 연관이 없습니다.

L1 distance를 사용했을 때 좌표축에 영향을 받는 경계를 가지고 있음을 알 수 있습니다.

하지만 L2 distance는 좌표축의 영향을 받지 않아 조금 더 자연스러움을 확인할 수 있습니다.

 

Hyper parameter

 

어떤 거리 척도를 사용하는지, 몇개의 K를 사용할지 결정 짓는 것

 

problem-dependent

하이퍼 파라미터를 결정짓기 위해 문제에 따라 테스트를 진행하면서 좋은 성능을 가지는 하이퍼 파라미터를 선택합니다.

Idea #1 : Train 데이터만 사용해 hyper parameter를 결정한다면 k=1인 경우 학습 데이터를 가장 완벽하게 분류하고, 새로운 데이터가 들어왔을 때 적절하지 못하게 분류할 확률이 크다.

Idea #2 : Test 데이터만 사용해 hyper parameter를 결정한다면 단순히 test 데이터에만 치중한 하이퍼 파라미터 값이 설정될 수 있습니다.

 

Idea #3 : 기계학습의 목적은 한번도 보지 못한 데이터에서 잘 동작해야 한다. 그래서 validation을 이용해 검증을 하고, 가장 좋은 값을 하이퍼파라미터 값으로 선택한다. 단 한번 test set을 이용해 오직 한번만 테스트할 수 있고, 이 값이 논문과 보고서에 사용되어야 합니다.

 

Cross Validation(교차 검증)

작은 데이터셋에서 많이 사용 되는 방법입니다.

 

처음 4개의 fold에서 하이퍼 파라미터를 학습시키고 남은 한 fold에서 알고리즘을 평가합니다.

 

이것을 계속 순환하여 최적의 파라미터를 구합니다.

 

 

감사합니다!.!