이미지를 인식하기 위해
1. 이미지와 label(이미지 설명)이 모두 있는 dataset을 모으기
2. 머신러닝을 통해 이미지 분류기(classifier)를 학습시키기
3. 테스트용 이미지를 통해 분류기 성능을 평가하기
이 세 단계를 거친다.
첫 째로 사용할 분류기는 'Nearest Neighbor Classifier'
현재는 사용하지 않는 분류기이긴 함.
이 분류기로 이미지를 인식하는 과정은
1. 모든 train_image와 train_label을 메모리에 저장
2. test_image(테스트할 이미지 하나)를 모든 training data 이미지와 비교해가며 제일 유사한 것을 찾음
비교를 하는 기준 : distance
우선, L1 distance(맨해튼 distance)를 사용한다.
L1 distance = test 이미지의 값과 training 이미지의 값을 뺀 것의 절댓값
ex:) (1,1) - (3,3) -> (2,2)이고, 2+2=4 만큼의 distance를 가짐.
Q. classification speed와 training data의 size의 관계는?
A. 선형적임.(반비례적(?)) size가 2배가 되면 시간도 2배가 걸림(속도는 1/2배)
L2 distance(Euclidean distance) 도 있음. 어느 distance를 사용할 건지는 hyperparameter이다.
L2 distance = test 이미지의 값과 training 이미지의 값을 뺀 것의 제곱에 루트를 씌움.(일반적으로 두 점 사이의 거리 공식)
Nearest Neighbor Classifier은 test 이미지와 가장 거리가 짧은 training 이미지를 고르는 것다면,
k-Nearest Neighbor은 k개의 가장 가까운 training 이미지들을 고르고, 다수결로 label을 골라 '이 test 이미지는 이거야!'라고 하는 것. 이 떄 k 또한 hyperparameter이다.
Q. Nearest Neighbor Classifier에서 test 이미지 대신 training 이미지로 test를 진행하면?
A. 이미 test할 training 이미지가 training 이미지 dataset에 존재하므로 정확도 100%, distance=0이 된다.(이 때 L1 distance를 쓰든 L2 distance를 쓰든 동일)
Q. k-Nearest Neighbor에서 위 상황이 실행된다면?
A. 상황에 따라 다르다. 예를 들어 k=5일 때, 당연히 training 이미지 중 1위로 뽑힌 이미지는 그 test에 쓰인 training 이미지 본인(?)일테지만, 2,3,4,5위로 뽑힌 training 이미지가 그것과 다른 label의 이미지일수도 있다.
Q. hyperparameter를 정하는 법은?
A. 문제마다 다르다! 해봐야 한다.
hyperparameter를 정하는 방법
1. training data에서 20% 정도 validation data를 분리해 hyperparameter를 tune한다.
2. training data의 수가 적은 경우 training data를 여러 개로 분리해 돌아가며 validation data를 맡는 cross-validation을 한다. (5-fold-cross-validation은 training data를 5개로 분리한 것)
이제, linear classification으로 넘어갑니다.
linear classification은 parameter 기반의 접근 방식입니다.(parametric approach)
score function = f(x,W)은 10 by 1 행렬이고, f(x,W) = Wx (+b) 에서
W은 10 by 3072 행렬, x는 3072 by 1 행렬(열벡터)이다. (W = parameter, weights)
(편향 b = 10 by 1)
Q. what is linear classification?
A. 이미지 내의 모든 픽셀값에 대해 가중치 W를 곱하여 처리를 한 것의 합
Cifar-10 dataset에는 10개의 label이 있고, 각각 linear classifier가 있다. 즉, 10개의 선형 분류기가 있는 것.
마치 좌표평면 위에 10개의 선이 있는 것과 같다.
'Ai Study' 카테고리의 다른 글
EXplainable AI - with machine learning (0) | 2023.01.19 |
---|---|
2022년 9월 서강대학교 인공지능학과 음성대화연구실 학부연구생 개인 공부 내용 (3) | 2022.12.26 |
CS224N : NLP with Deep Learning | Lecture 1 - Intro & Word Vectors (0) | 2022.07.29 |