4 minute read

Image classification

Goal: 어떤 상황에서도 목표 이미지를 인식 후, 어떤 label에 속하는지 명확하게 판별하는 것 인간과 다르게 컴퓨터에게 이미지란 거대한 숫자 집합과 같음(Semantic gap).

발전 동향: Coded rules(명시적 규칙 집합 작성 방식) => data-driven-approach(데이터 중심 접근 방식)

CS231n은 data-driven-approach 방식의 이미지 분류 알고리즘을 탐구한다.

Nearest neighbor(가장 가까운 이웃 찾기 방법)

Dataset: CIFAR-10(가장 간단하면서도 유명한 이미지 분류 데이터 셋)

Test image 하나를 모든 train image와 비교해 가장 가까운 이웃으로 label을 결정하는 방법

Test image와 train image를 비교하는 방법 => Distance Metric(거리 척도) 사용

image-20240204042712264

Train-set의 image가 총 N개

Train time: O(1) => 저장된 data를 경로를 통해 불러오면 됨

Test time O(n) => N개의 학습 데이터 전부를 테스트 이미지와 비교함

우리는 Train time이 길더라도 test time이 적게 소요되길 바람 => NN알고리즘은 효율적인 알고 리즘이 아니라는 것을 알 수 있음 => CNN알고리즘 형태의 시간복잡도가 이상적이다.

image-20240204042244237 NN 알고리즘 label 맵 시각화

점은 학습data로 점의 색은 label을 상징한다. Test function에 입력된 data를 점으로 표시한 후 train function의 모든 점(data)과 L2 distance거리 연산을 수행해 가장 가까운 점의 class를 입력 된 data의 label로 예측한다.

NN알고리즘에서 발생 가능한 문제를 확인 가능

  1. train 수행과정 중 이상한 data가 섞여 가운데 노란색 점이 생긴다.

  2. 영역이 부드럽지 않고 각지다 => 색의 경계에 가깝게 위치하는 test data의 label 예측에 어 려움이 있을 수 있음 => 가장 가까운 이웃만으로 label이 결정되어서 생긴 문제이다.

=>이러한 NN의 문제점은 K-NN알고리즘 탄생의 원인이 된다.

K-Nearest Neighbor Algorithm

보완 1. Label을 결정하는 보다 고급진 방법을 도입

Distance metric을 활용해 가까운 이웃을 K개 찾아 이웃끼리 투표를 진행해 가장 많은 투표수를 획득한 label로 예측

투표 방법

  1. 거리에 따라 가중치를 고려

  2. 득표수만 고려함(easy)

image-20240204042601469< 득표수만 고려한 상황

보완 2. 어떤 거리 척도를 활용하느냐에 따라 기하학적으로 변화 가능

image-20240204042800506

L1은 거리 계산을 위해 가로, 세로의 좌표 축을 신경 써야 하지만 L2는 대각선의 길이를 파악하 므로 좌표축의 영향을 받지않고 거리 연산이 가능.

image-20240204042809538

L1과 달리 L2는 label 사이의 경계가 가로축, 세로축에 영향을 받지 않는다. L2는 L1과 달리 대각 선으로 이동할 수 있기 때문이다.

K-NN classifier 설계하는 웹-데모 사이트 => vision.stanford.edu/teaching/cs231n-demos/knn/

K값을 결정하는 방법

K, distance metric 같은 경우, 우리가 직접 설정해야 하는 값 => hyper-parameter

hyper-parameter 값을 결정하는 방법은 problem-dependent(문제 의존적)하다.

우리가 진정으로 원하는 것은 우리가 가지고 있는 데이터 셋에서만 작동이 잘 되는 것이 아니라, 그냥 진짜로 찍어본 사진에 작동이 잘되는 것을 찾고 싶은 것

전체 데이터셋 하나를 가지고 있다고 가정한다.

  1. 학습데이터의 정확도/성능을 극대화하는 hyper-parameter => 최악의 방법1 K=1인 K-NN과 같음

image-20240204043016678

Test용 데이터로 train했던 데이터중 하나를 뽑아 test를 수행함

이미 입력된 데이터와 동일하므로 distance가 0가 됨 => K=1인 K-NN이 최적

  1. 학습 데이터를 학습데이터와 test데이터로 분할해 활용 => 차악의 방법

image-20240204043100332

학습 데이터에 없는 데이터의 label을 올바르게 예측하는 것이 중요함. 경향성이 다른 새로운 데 이터에 대해 어떻게 반응할지 알기 힘들다. 즉 정확한 성능을 예측하는데 한계가 있다.

  1. data set을 train data/ validation data/ test data로 분할

    image-20240204043143074

Train dataset에서 훈련된 값을 validation dataset으로 확인하며 hyperparameter를 바꾸어 주고, Test dataset에서 딱 한번만 수행해보는 것(최대한 객관적으로 정확한 성능을 파악해내는 것) Test dataset은 우리의 dataset 안에 없는 세상에서 아예 새로운 데이터가 되는 셈

=> 우리가 원하는 진짜 새로운 데이터에서의 test를 해볼 수 있음

=> 알고리즘의 객관적인 성능 파악 가능

  1. Cross-validation(교차 검증) (5-fold 교차 검증)

image-20240204043331292

전체 data set을 train set / validation set / test set으로 분할

Train set을 5개로 나눠 하나씩 validation set으로 설정해가며 hyper-parameter 튜닝에 사용함 5번 수행해본 hyper-parameter의 평균값으로 최종 hyper-parameter값 결정

연산이 많이 필요하다는 문제로 작은 data set에서 주로 활용

이미지를 다루는 문제에서 K-NN 알고리즘을 활용하는 전략은 좋지 않음

  1. test 시간이 너무 김 (train time < test time)

  2. vector간의 거리 측정 함수들은 이미지의 지각적 유사성을 측정하는 척도로는 적절치 않음

image-20240204043441444

전체 image의 pixel값 차이만을 고려하므로 얼굴에 박스가 쳐져 있던 색이 달라졌던 간에 전체 vector 값의 차이가 같아져 같은 사진으로 인식하게 되어버림

  1. 차원의 저주: K-NN이 성능을 발휘하기 위해 벡터 공간을 무수히 많은 train data로 채워야 함

image-20240204043516232

입력 차원이 커질수록 필요한 data는 기하급수적으로 증가한다. 이 문제를 해결하기 위해 L1 regularization은 XW 연산과정에서 최대한 많은 양의 W parameter를 0으로 만들어 함수의 차원 을 줄이려는 노력을 하고 있다. (3강 참조)

Linear classification(선형 분류 알고리즘)

Linear classifier(선형 분류 알고리즘을 구현한 모델)

다양한 종류의 DL 알고리즘의 가장 기본이 되는 블록

Parametric Approach의 가장 기본적인 형태

image-20240204043613170

K-NN은 parameter가 존재하지 않아 모든 training set을 test time에 적용한다. parameter는 모든 training data의 정보를 요약한다

Parametric approach의 주요 작업: 함수 f(X, W)를 적절하게 설계하는 일

  1. 단순히 둘을 곱함: f=XW => Linear classification

image-20240204043638957

입력 데이터 x: 32X32X3 => 3072-dim(3072차원) column vector로 변환 행렬 W: 10X3072

(10X3072) · (3072X1) = (10X1)

image-20240204043648884

Bias는 10-dim 열 벡터로 특정 노드에 추가적인 점수를 부여하는 역할을 한다.

image-20240204043659453

(3X4) · (4X1) + (3X1) = (3X1)

Bias는 가중치와 독립적으로 각 카테고리에 연결되어 있어 각 class에 scaling offsets를 수행한다. Scaling offset이란 각 feature의 scale을 조정하고 offset(데이터의 상대적 위치)을 적용해 데이터를 Normalization하는 것을 의미한다.

Linear classifier를 특정 관점에서 해석 가능

  1. Template 매칭의 관점에서 linear classification을 해석

가중치 행렬 W의 한 행을 뽑아서(단일 이미지를 입력으로 할 경우에는 행을 뽑지만 여러 이미지 가 입력될 경우 열)이를 이미지로 시각화해 보면 linear classifier가 이미지 데이터를 인식하기 위 해서 어떤 일을 하는지 짐작해볼 수 있다.

image-20240204043745322

CIFAR-10의 각 10개 카테고리에 해당하는 row vector를 시각화한 것이다. 이를 볼 때 W행렬의 각 row vector는 각 카테고리에 해당하는 실루엣을 이미지로부터 찾아내려고 한다는 것을 알 수 있다. 그런데 유심히 살펴보면 말 카테고리의 Template에서 말의 머리가 2개이다. 머리가 2개 달 린 말은 존재하지 않지만 위의 Linear classifier는 layer가 단순해 클래스당 하나의 template밖에 허용하지 않으므로 어쩔 수 없다. 하지만 Neural Network와 같은 복잡한 모델이라면 조금 더 정 확도 높은 결과를 볼 수 있을 것이다. Neural Network는 클래스당 하나의 template만 학습할 수 있다는 제약 조건이 없기 때문이다.

  1. 이미지를 고차원 공간의 한 점으로 해석 (열 벡터를 일종의 좌표로 해석)image-20240204043836618

Linear classifier는 각 클래스를 구분시켜 주는 선형의 결정 경계를 그어주는 역할을 할 수 있다.

image-20240204043847551

But, 특정 상황에서는 Linear classifier가 적용 불가능하다. 이를 우리는 Multimodal problem, 한 class가 다양한 공간에 분포하는 것이 가능해 선형 분류가 불가능한 상황에 처하는 문제에 빠졌다고 말한다. title: “cs231n Lecture2” layout: single


Leave a comment