본문 바로가기
딥러닝/딥러닝

[CS231n] Image Classification

by DUSTIN KANG 2020. 9. 7.

Data-Driven Approach

데이터 기반 접근 방법(Data-Driven Approach)는 "이것은 고양이 입니다"를 위해 엄청 많은 데이터를 수집하는 것을 의미합니다. 특정 이미지를 분류하기 위해 수많은 이미지 데이터가 필요로 합니다. 그 이유는 고양이 사진이 우리가 보는 방향, 조명에 따라 달라지기 떄문이죠. 그럼에도 이것이 고양이라는 레이블을 맞출 수 있어여 합니다. 이러한 과정은 데이터 기반 접근 방식으로 통해 해결할 수 있습니다. 

데이터 기반 접근 방법은 다음과 같습니다.

많은 이미지데이터와 레이블을 수집하게 되면 이것을 training a classifier(learning a model)로 학습시킨 후 새로운 이미지가 들어왔을 때 비교를 통해 인식하는 과정입니다.  데이터 기반 접근 방식은 일반적이지만 기본적으로 알아야할 접근 방법입니다. 

 

Data Driven Approach

Nearest Neighbor Classifier & K-NN

이번엔 Data-Driven Approach의 대표적인 분류 알고리즘인 Nearest Neighbor에 대해 알아봅시다.  사실상, 성능이 그렇게 좋지 않은 알고리즘이지만 딥러닝을 이해하기 위해 간단한 머신러닝 알고리즘을 이해해보려고 합니다.

이미지를 비교하는 단순한 함수로 L1 Distance와 L2 Distance가 있습니다.

  • L1 Distance(Manhatten) : 단순하게 훈련 이미지와 테스트 이미지의 픽셀값을 서로 빼고 절댓값을 취하는 방식입니다.  (개별 요소가 의미가 있는 데이터의 경우)
  • L2 Distance(Euclidean) : 벡터사이의 거리를 통해 구하는 방식입니다. (요소간 실질적 의미를 모르는 경우)

CS231n: Deep Learning for Computer Vision [Stanford University]

 

이 알고리즘의 학습 시간은 O(1)입니다. 왜냐하면 데이터를 기억하면 되기 때문이죠. 그러나 테스트할 땐 데이터를 전부 하나씩 비교해야 하기 떄문에 O(N) 정도로 느린 시간 복잡도를 가지고 있습니다. 일반적으로 우리가 성능이 좋은 모델을 만들 땐 Train이 조금 느려도 예측이 빠른 분류기를 만들어야 합니다. 

 

추가로, 가까운 이웃을 K만큼만 찾고 이웃끼리 투표를 통해 가장 많은 득표수를 획득한 레이블로 예측하는 방법인 K-NN 알고리즘이 있습니다. 예상했던 결과와 반대로, 분류를 잘 못하는 경우도 있습니다. 이러한 경우 Distance Metric으로 성능을 향상시키거나 K 값을 높이는 방법이 있습니다. 이렇게 선택적인 옵션으로 성능을 향상시킬 수 있는 것을 HyperParameter라고 부릅니다. 우리는 하이퍼 파라미터들 중 최고를 선택해야하는 데 이때, 단순하게 정확도나 성능을 최대화할 수 있는 파라미터를 선택하는 것은 나쁜 선택입니다. 성능이 안좋게 나올 수 있기 때문이죠.

K-NN은 이미지 분류에 그닥 좋지 않습니다.
우선, K-NN은 테스트 속도가 느립니다. 그리고 거리 측정법이 이미지의 전체적인 설명이나 이미지간 차이를 찾아내지 못한다는 단점이 있습니다. 이 문제를 차원의 저주(Curse of dimensionality)라고 합니다. 즉, 차원이 높아질수록  데이터 사이의 거리가 멀어지고 빈 공간이 증가하는 문제가 발생하게 됩니다. 알고리즘을 계산하는 문제가 까다로워지기 때문이죠.

 

궁극적으로, 기계학습에서는 데이터를 얼마나 잘 맞추는지 보다는 한번도 본 적 없는 데이터를 얼마나 잘 예측하는지가 중요합니다. 하이퍼 파라미터의 선택 전략으로  데이터셋을 나누거나 교차 검증(Cross Validation)이 있습니다.  우선 테스트 세트를 정하고 나머지 데이터에 대해 나누는 방식입니다. 

  • Cross Validation : N-1개는 훈련에 사용하고 1개는 검증으로 사용하는 방식
    • 계산 비용이 크기 때문에 선호하지 않는다고 한다. 그러나, Validation Data가 적은 경우에 사용하는게 좋습니다.
  • Validation Split : Train, Validation, Test 셋으로 나누어 사용합니다.


Linear Classification

일반적으로 Neural Network(신경망) 기술은 여러개의 Linear Classifier(선형 분류기)가 모여 하나의 견고한 신경망을 만들게 됩니다.

예를 들어 다음 그림으로 접근할 수 있습니다.

linear Classification