[CS231n] 2강 정리

Dunno·2022년 7월 15일
0

CS231n 정리

목록 보기
1/5

CS231n Lec2. Image Classification

0. 강의 및 강의자료

1. 강의 내용

(1) Image Classification

  • 입력 이미지가 들어왔을 때, 이미 정해져 있는 Categories에서 이미지가 어떤 Category에 속할 지 고르는 문제

  • Computer 입장에서 Image Classification이 어려운 이유는 무엇일까?

    • 사람이 이미지를 볼 경우
    • 컴퓨터가 이미지를 볼 경우 -> 숫자들의 집합으로만 이루어 진 형태
  • 다음과 같은 변화가 발생했을 때 이미지를 분류하기가 어렵다.

    1. Viewpoint variation(카메라의 위치 변화)
    2. Illumination(조명에 의한 변화)
    3. Deformation(객체 변형에 의한 변화)
    4. Occlusion(객체 가려짐에 의한 변화)
    5. Background Clutter(배경과 유사한 색의 경계)
    6. IntraClass variation(클래스 내부의 분산)

1) Image Classification Algorithm

  • Image Classification Algorithm을 작성할 때 접근 방법은 2가지가 있다.
    1. Image의 Feature(특징)을 찾고, Featrue(특징)을 이용하여 명시적인 규칙을 만드는 방법으로 접근

      1. edges, corners를 찾아 명시적인 규칙을 만들어내는 방식
      2. 문제점 : Algorithm이 Robust(강인)하지 않다, 확장성이 없다 → 다른 이미지에 적용이 어렵다
      3. 해결책 : Data-Driven Approach
    2. 데이터를 보고 데이터 중심으로 접근(Data-Driven Approach)

      (1) 이미지와 라벨 데이터셋을 수집한다.
      (2) 분류기를 학습시키는데 머신러닝을 사용한다.
      (3) 새로운 이미지를 사용해 분류기를 평가한다.

      데이터를 보고 데이터 중심으로 접근(Data Driven Approach)한 경우 수많은 데이터를 수집해야 한다는 문제점이 있지만, 최근 하드웨어의 발전으로 성능이 좋아졌다.

(2) K-Nearest Neighbor Algorithm

1) KNN Algorithm에 영향을 미치는 parameters

  • K값

    • K=1일 경우

    • K 값을 높일 경우

      K값을 조절함으로써, 경계선을 조금 더 부드럽게 만들어 주거나 영역을 조금 더 잘 분류할 수 있다.

  • Distance Metric(거리 척도)

    • L1 Distance(Manhattan distance), L2 Distance(Euclidean distance)

    • 특정 벡터가 개별적인 의미를 가지고 있다면(ex. 키, 몸무게) L1 Distance를, 일반적인 벡터 요소들의 의미를 모르거나 의미가 별로 없을 때는 L2 Distance를 사용한다.

2) Hyper Parameter

  • 학습을 하는데 영향을 미치는 parameter이면서, 학습을 통해 알아내기 보다는 학습을 하기 전 선택하는 parameter를 하이퍼파라미터라고 한다. (ex. K값, Distance Metric)

  • 어떻게 하면 이 하이퍼파라미터를 잘 선택할 수 있을까?

    1. 가장 간단한 방법은 데이터에 맞게 다양한 하이퍼파라미터 값을 시도해보고 가장 좋은 값을 찾는 Trial&Error 방법

    2. Dataset을 Train, val, test 로 나누어 한번도 보지 못한 data에 대해 분류를 잘 하게 되는 하이퍼파라미터를 선정한다.

    3. 다음과 같이 교차 검증(Cross-Validation)을 하면 더 확실하게 분류를 잘 하는 하이퍼파라미터 값을 찾을 수 있지만, 데이터가 작을 때는 괜찮지만 데이터가 많을 경우 너무 오래 걸린다는 단점이 있어 딥러닝 분야에서는 잘 사용하지 않는다.

    • 또한 분산간의 관계를 이용해서 하이퍼파라미터를 찾기도 한다.
  • 이미지 분류에서는 K-Nearest Neighbor Algorithm을 잘 사용하지 않는다.

    1. test를 하는데 시간이 너무 오래 걸린다.

    2. Distance Metric(거리 척도)는 픽셀 단위에서 별로 유용한 정보가 아니다.

      • 벡터 간의 거리 측정 관련 함수(L1,L2)들은 이미지들 간의 ‘시각적 유사성’을 측정하는 척도로 적절하지 않다.
      • 다음 이미지들 간 L2 distance를 측정했을 때 모두 같다.

    3. 차원이 늘어나면 필요한 train data가 기하급수적으로 증가한다. → 차원의 저주

      • K-NN이 잘 작동하려면 고차원 공간을 모두 커버할 정도로 많은 데이터가 필요한데 차원의 수가 늘어날 수록 그렇게 많은 데이터를 모으는 것은 현실적으로 불가능하다.

(3) Linear Classification

Linear Classification은 Neural Network를 구성하는 가장 기본적인 요소이다. NN은 여러 개의 다양한 층들을 마치 레고블럭처럼 쌓아 하나의 거대한 타워를 짓는 것이라고 볼 수 있다.

1) Linear Classifier의 동작

Linear Classifier는 Parametric model의 가장 단순한 형태

  • Parametric model?
    • Parametric model
      • 데이터가 특정 분포를 따른다고 가정하고, 우리가 학습을 하면서 결정해야 하는 파라미터의 종류와 수가 명확하게 정해져 있다. → 데이터가 얼마나 많든 간에 결정해야 할 파라미터의 수는 변하지 않는다.
      • 우선 모델의 형태를 정하고, 이 모델의 파라미터를 학습을 통해 발전시켜나가는 식으로 알고리즘이 진행된다.
      • Linear regression, Logistic Regression, Neural Network 등, 모델이 학습해야 하는 것이 명확히 정해져 있기 때문에 속도가 빠르고, 모델을 이해하기가 쉽다는 장점이 있다.. 하지만 속도가 느린 경우가 많고, 더 큰 데이터를 필요로 하는 경우가 있으며 모델이 왜 그런 형태가 되었는지에 대한 명확한 설명을 하기가 쉽지 않다.
    • Non-Parametric model
      • 데이터가 특정 분포를 따른다는 가정이 없기 때문에 우리가 학습에 따라 튜닝해야 할 파라미터가 명확하게 정해져 있지 않은 것이다. → data에 대한 사전 지식이 전혀 없을 때 유용하게 사용될 수 있다.
      • Decision tree, Random forest, K-nearest neighbor classifier 등, 데이터가 특정한 분포를 따른다는 가정을 하지 않기 때문에 더 flexible하다는 장점이 있다. 하지만 속도가 느린 경우가 많고, 더 큰 데이터를 필요로 하는 경우가 있으며 모델이 왜 그런 형태가 되었는지에 대한 명확한 설명을 하기가 쉽지 않다.

X : input image

W : 가중치(Weight)

b : 바이어스, 곱을 끝내고 더하는 역할로 데이터에 무관하게 특정 클래스에 우선권을 부여한다.(scaling offset)

→ 가령 데이터셋이 불균형한 상황(고양이 데이터 > 개 데이터)에서는 고양이 클래스에 상응하는 바이어스가 더 커지게 된다.

  • f(x,W) = Wx + b는 Linear Classification이다.
  • 이미지 데이터와 가중치 값을 더해 각 10개의 class에 대한 score를 나타낸다.
  • train을 시키며 W에 적절한 가중치 값을 모아준다.
  • 이 학습된 가중치를 이용해 낮은 성능의 기기에서도 새로운 데이터에 대한 predict를 빠르게 진행할 수 있다.
  • 어떤 모델을 사용하고, W의 값을 적절히 학습시키는지가 NN아키텍쳐를 설계하는 과정이다.

2) Linear Classifier 또 다른 관점 : 이미지를 고차원 공간의 한 점으로 보는것

  • 각 이미지를 고차원 공간의 한 점이라고 할 때 Linear Classifier는 각 클래스를 구분시켜주는 선형 결정 경계를 그어주는 역할을 한다.

3) Linear Classifier 사용이 어려운 경우

0개의 댓글