CS231n 2강 요약

드디어 본격적으로 강의를 배우는 첫번째 시간이다.

차근차근 한번 배워보자!

0. Today’s Goal

  • Image Classification 이란?
  • Classification Algorithm에 대해서 알아보자.
  • Hyperparameters란?
  • Linear Classification의 간략한 개념설명

1. 강의 및 강의 자료

1강과 마찬가지로 강의는 유튜브에 올라와 있고, 강의 자료도 홈페이지에 나와있다.

친절하게 한글 자막까지 만드신 분도 있다..

  • 강의 링크 : video

  • 강의 슬라이드 : 슬라이드

  • 한글 자막을 첨부하고 싶으면 여기를 눌러주세요.

2. 강의 요약

Image Classification에 대해서

먼저 Image Classification에 대해서 배운다.

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

그렇다면 Computer 입장에서 Image Classification이 어려운 이유는 무엇일까?

사람은 입력 이미지를 이렇게 보지만,

컴퓨터는 이렇게 보기 때문이다. (단지 숫자들의 집합..)

따라서 다음과 같은 변화에 이미지를 분류하기 굉장히 어렵다.

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

만약 Image Classification Algorithm을 작성할 때, 접근 방법은 2가지이다.

  1. Image의 Feature(특징)을 찾고 Feature(특징)을 이용하여 명시적인 규칙을 만드는 방법으로 접근
  2. 데이터를 보고 데이터 중심으로 접근
  • 이미지의 특징으로 명시적인 규칙을 만드는 방법으로 접근한 경우 문제점이 존재하는데,
    1. Algorithm이 Robust(강인)하지 않다.
    2. 확장성이 없다. » 다른 이미지에 적용이 어렵다.

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

데이터 중심 접근 방법에서 분류 알고리즘(Machine Learning)을 사용하는데,

그 중 하나인 Nearest Neighbor Algorithm을 살펴보자.


K-Nearest Neighbor Algorithm에 대해서

K-Nearest Neighbor Algorithm은 분류 알고리즘으로써, 새로운 데이터가 들어왔을 때 어떻게 분류를 할 것인가? 정해주는 알고리즘이다.

K-Nearest Neighbor Algorithm에 대해서 알기 쉽게 설명한 동영상을 참고하자.

K-Nearest Neighbor는 크게 두가지 과정을 거치는데

  1. Train 과정 : 모든 train data를 기억한다.

  2. Predict 과정 : 입력 데이터를 train data와 비교하며 어떤 label 값을 가질지 예측한다.

K-Nearest Neighbor Algorithm에 영향을 미치는 parameters는 크게 두가지가 있다.

  1. K값
  2. Distance Metric(거리 척도)

먼저 K값에 의해 Overfitting(과적합)이 일어나는 것을 막아준다.

예를 들어, K = 1일 때 다음과 같이 영역을 분류했다면

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

Distance Metric(거리 척도)에 따라서는 경계선에서 약간의 차이를 볼 수가 있다.

보통 L1 distance, L2 distance를 사용하는데

특정 벡터가 개별적인 의미를 가지고 있다면 L1 distance를, 일반적인 벡터 요소들의 의미를 모르거나 의미가 별로 없을 때는 L2 distance를 사용한다.

좌표계에 따라서도 Distance Metric이 어떤 것인지에 따라 결과 값이 달라진다.

앞선 예로 결과의 차이를 확인하면,

여기서 K값, Distance Metric(거리 척도)와 같은 Parameter들을 HyperParameter이라고 한다.

즉, HyperParameter는 학습을 하는데 영향을 미치는 parameter이고 학습을 하기 전 선택하는 parameter이다.

HyperParameter를 어떻게 하면 잘 선택할 수 있을까?

다양한 방법들이 있지만, Dataset이 있을 때 train, val, test로 나누어 한번도 보지못한 data에 대해 분류를 잘 하게 되는 Hyperparameter를 선정한다.

다음과 같이 교차 검증(Cross-Validation)을 하면 더 확실하게 분류를 잘하는 Hyperparameter 값을 찾을 수 있지만, deep learning분야에서는 잘 사용하지 않는다.

또한 분산간의 관계를 이용해서 Hyperparameter를 찾기도 한다.

하지만 이미지 분류에서는 K-Nearest Neighbor Algorithm을 잘 사용하지 않는데 그 이유는 다음과 같다.

  1. test를 하는데 시간이 너무 오래 걸린다.
  2. Distance Metric(거리 척도)는 픽셀단위에서 별로 유용한 정보가 아니다.
  3. 차원이 늘어나면 필요한 train data가 기하급수적으로 증가한다.

Linear Classification에 대해서

Linear Classification은 Neural Network를 구성하는 가장 기본적인 요소이다.

다시 말해, Parametric model의 가장 단순한 예제가 바로 Linear Classification이다.

만약 입력 이미지가 (가로,세로,채널)이 (32,32,3)이고 10개의 카테고리 중 하나를 분류하는 문제가 있다고 하자.

위 그림에서 'W'에 train data의 요약된 정보가 들어있다. 따라서 test를 할 때 시간을 단축시킬 수 있게 된다.

딥러닝은 f(x,W)를 잘 설계하는 것을 말한다.

입력 데이터를 하나의 벡터로 길게 만들고, 10개의 클래스에 대해 얼만큼의 점수를 부여하는지 결과값을 확인해보자.

쉽게 말하면, W는 10*3072의 행렬이다.

B는 bias로 데이터와 무관하게 특정 클래스의 우선권을 부여한다.

주로 dataset이 unbalance할 때 사용한다.

추가적으로 설명하면 B의 값을 이용해서 내가 원하는 선형(linear classifier)에 좀 더 잘 근사할 수 있도록 하는 방법입니다.

이렇게 나온 결과 값을 ‘템플릿 매칭’과 같은 과정을 하여 이 이미지가 어떤 클래스로 분류되었는지 알 수 있다.

어떻게 W를 잘 선정하는지는 다음 시간에 배울 수 있다..

Linear Classifier를 이용했을 때 쉽게 풀 수 없는 문제들이 있다.

다음과 같이 영역이 반전되어 있거나, 한 클래스가 다양한 공간에 분포하면 Linear Classifier로 분류하기 어렵다… (이 땐 어떤 분류기를 사용할까..?)


이렇게 2장의 내용을 요약해봤다. 아직 입문자라 내가 이해한만큼만 포스팅을 했는데, 잘 이해가 된건지 모르겠다. ^^

댓글남기기