2. Image Classification

Image Classification?

어디에 어떤 이미지가 있다. 인식/파악/판별/구분
컴퓨터는 이미지를 tensor 형태(3차원)로 보기 때문에
목표 : 이미지를 넣어줬을때 뭔지 알기

기본적으로 사용되던 방법
MLㅣData-Driven Approach 데이터 위주로

  1. 정답(labels)셋을 만들어놓음
  2. 머신러닝 알고리즘으로 학습
  3. 처음보는 애 넣기 -> 정답예측
# 학습
def train(image, labels): #(데이터 이미지, 정답)
	return model

#예측
def predict(model, test_images): #(위에서 받은 모델, 새로운애)
	return test_labels			#예상 답 도출

/

Nearest Neighbor Classifier

제일 비효율ㅋ.. predict예측이 느리다. 감잡기 위해서만 이해하자
사례: 추천시스템, 페이스북search

train() O(1)
모든 (image, labels) 다 메모함 -> model==train data 만들고
predict() O(N)
test_images가 들어오면, train data에서 가장 비슷한 애 선택. Distance 가장 작은 애
즉, 학습은 빠른데, 예측이 느리다..

KNN : K-Nearest Neighbor

KNN
자기와 가까운 K개 점 비교
K=보통 홀수 #hyperparameters
Distance metric도 여러가지(Manhattan, Euclidean...) #hyperparameters

hyperparameters 우리가 결정해줘야하는 요소들 ex) KNN에서 K, Distance metric
parameters 학습가능한 요소. 모델 내에서 알아서 학습되는 요소들
ex) Linear Classifier에서 W, b

Overfitting 과적합

  • Low bias, High variance
    트레이닝 데이터 셋이 가지는 노이즈 때문에 완벽하게 학습이 잘 안된경우
    노이즈를 포함해 데이터를 학습한 것.
  • K가 작을수록 삐죽삐죽.. High variance, overfitting될 확률이 높음
    -- K가 클수록 완만..

bias 우리가 학습한 결과가 어디로 편향성을 가지고 있냐
variance 얼마나 퍼져있느냐

Hyperparameters 잘 세팅하기!

K낮으면 train은 잘되지만, predict 불확실할수도 있음
사용하는 구조(이미지,텍스트etc)에 따라 결정해야 할수도 있음

여기서 training set은 (images, labels) > 학습함
test set은 (image)만 딱 있는거		> 얘의 label이 뭔지 예측

가장좋은 방법? 데이터셋 3개로 쪼개기!

train셋으로 학습시키고,
validation셋으로 돌려서 성능잘나오는 hyperparameters 세팅후,
마지막에 test셋에 대해서 결과 확인해서, 어느정도 성능이구나 앎.

Cross-Validation : fold 여러개로 나누는거
많이 안씀..! But 셤내기 좋음..

/

Linear Classifier

Data-Driven Approach중에서 더 들어가서, Parametric Approach임! (KNN보단 빠름)

우리가 가지고 있는 데이터셋의 특징을 잘 학습할수있는 parameter를 두어서 사용
Neural Network(ex.AlexNet, ResNet)도 여러개의 Linear classifiers를 쌓아놓은것임!
- CNN,RNN..etc의 구조도 기본적으로 Wx+b 연산을 계속하는 것임
Wx+b 선을 그었을때, "이건 비행기다" 선의 위에 있으면 비행기O / 아래있으면 비행기X

f(x, W) = Wx (+b)

x: 인풋, W: 파라미터parameters/weights
b: bias 다양성주기위해 (그래프를 그려보면 원점안지나) (일반적으로는 그냥 W에 붙여서 계산하는경우가 많음)

==

내가 가지고 있는 데이터의 특징을 가장 잘 나타날수 있게 해야하므로,
높은값이 나오면 높게 강조, 낮은값은 낮게

어려운점

  1. Algebraic Viewpoint에서 보여지는 것처럼 이미지를 펴서하면, 이미지 특징을 반영할수 없음
  2. 한템플릿에 다 몰아보다 보니, Visual Viewpoint 아래 화살표 가리킨 사진처럼 말 머리가 2개인 것은 있을수 없음..
  3. 아래 것들에 대해서는 잘 동작X
    빨간색부분 / 파란색부분을 나누기 어려움

=> 앞으로 이런것들이 어떻게 해결되는지 보면될듯!
=> 또, W 파라미터가 잘되는지, W를 어떻게 정할것인지/업데이트 할것인지 알아보자! >>loss func

좋은 웹페이지 즐겨찾기