티스토리 뷰
해당 글은 Stanford CS class CS231n: Convolutional Neural Networks for Visual Recognition 강의를 기반으로 하고 있습니다.
(출처 :http://cs231n.stanford.edu/syllabus.html) Video 강의와 강의 note를 가지고 정리하고 있습니다.
1. Image Classification
- Data-driven approach vs Parametric approach
Image classification problem을 해결하는 데 접근 방식을 Data-driven approach와 Parametric approach로 나눠 생각해봅시다.
전자의 경우 기계에 (여기서 말하는 기계는 보통 컴퓨터를 말합니다.) 아주 많은 데이터를 인풋하여 클래스 분류를 학습할 수 있도록 합니다. 1번 클래스는 빨갛고, 동그랗고, 빛나고.. 등 각 클래스에 대해 정확하게 정의를 하고 그 기준에 맞춰 분류하라고 가르치는 것이 아니라 각 클래스에 해당하는 수 많은 데이터를 주고 기계가 이를 보면서 각 클래스의 외적인 특징을 학습하게 되는 것입니다. 때문에 data-driven approach는 training dataset에 의해 성능의 차이가 납니다. (이미지, 실제 클래스 label)로 인풋되는 training dataset의 누적에 의해 기계가 점점 각 클래스의 특징을 잘 파악하고 클래스간 차이도 잘 구분하게 됩니다.
parametric approach와의 구별점은 parameter의 유무라고 할 수 있습니다. Data-driven이 라벨링된 데이터들을 통해 학습하고, 테스트할 때 기존 데이터들을 돌아보면서 가까운 그림을 찾아 분류를 한다면 parametric 방식은 라벨링된 데이터들을 통해 parameter를 학습시키고, 이 값을 통해 입력이 들어오면 parameter와 곱함으로써 바로 클래스 분류가 되는 값으로 전환시킬 수 있습니다. 여기서 말하는 parameter란 데이터를 통해 업데이트해가며 학습한 결과로서 얻게되는 parameter를 말합니다. (hyper parameter가 아닙니다.) parametric approach에 대해서는 뒤에서 더 자세히 얘기하겠습니다.
- The image classification pipeline
image classification problem을 해결하는 과정은 다음과 같습니다.
Input - Learning - Evaluation
1. 여기서 말하는 input은 training set을 말합니다. N개의 이미지가 K개의 클래스로 라벨화되어 있다고 가정합시다.
2. training set에는 각 이미지와 그 이미지가 해당하는 클래스가 함께 주어집니다. a 이미지 -> 고양이, b 이미지 -> 강아지
training set의 images와 각각의 images에 맞는 labels를 받아 classifier model을 학습하게 됩니다.
3. new image가 들어왔을 때, 2. 에서 학습한 모델이 얼마나 클래스 예측을 잘하는지 평가하는 것으로 모델이 잘 학습되었는지 판단할 수 있습니다. 과적합 여부 등 더 많은 판단 기준을 거쳐야하지만 일단은 이것을 기본적인 성능 판단 기준이라고 할 수 있습니다.
(사진 출처: http://aikorea.org/cs231n/assets/nneg.jpeg)
* Differences between the L1-norm and the L2-norm (Least Absolute Deviations and Least Squares)
http://www.chioka.in/differences-between-the-l1-norm-and-the-l2-norm-least-absolute-deviations-and-least-squares/
training data를 k 개의 fold로 나누고, 매 iteration 마다 한 fold를 variation set으로 놓습니다. 위의 그림처럼 5 fold cross-validation을 하는 경우, iteration 1에서 fold 1,2,3,4를 사용해서 모델을 트레이닝하고 fold5 를 variation set으로 하여 hyperparameter tuning을 합니다. iteration 2에서는 fold 1,2,3,5로 모델을 트레이닝하고 fold4를 variation set으로 하는군요. 이를 반복하는 것입니다 fold 수만큼! 5번의 iteration을 통해 얻은 결과값을 평균내어 모델의 최종 성능으로 사용합니다. variation set을 버리지않고 training할 수 있으니 data가 적은 경우에 유용하겠죠?
위 그림으로 cross-validation이 어떻게 적용되는지 확인해봅시다.
k-NN에서 최적의 k가 무엇인지 hyperparameter tuning을 해야하는 상황입니다. 5 fold cross-validation 으로 해당 값을 찾아봅시다. 가장 좌측에 k = 0일 때, 5-fold cross-validation으로 구한 accuracy가 보입니다. 세로로 5개의 점이 놓여진 것을 확인하셨나요? k=0일 때 나타나는 5개의 점이 cross-validation의 각 iteration마다 구해진 accuracy입니다. 이를 평균낸 값이 파란 실선으로 보여지는군요. 이 실선값을 최종적으로 k=0일 때 모델의 성능이라고 할 수 있습니다. 실선을 따라 확인해본 결과 k는 0~ 20 사이에서 가장 높은 값을 보이는 군요. 약 0.288 정도의 accuracy로 보입니다. 강의에서는 이 값을 보이는 k가 7 이라고 하는군요.
* k-Nearest Neighbor on images never used.
- Very slow at test time
- Distance metrics on pixels are not informative
- Curse of dimensionality
'2018 _study > CS231n CNN ' 카테고리의 다른 글
[Lec3]Loss Functions and Optimization(2) (0) | 2018.01.24 |
---|---|
[Lec3]Loss Functions and Optimization(1) (0) | 2018.01.22 |
Assignment #1 환경설정 conda python36(1) (0) | 2018.01.22 |
[Lec2]Image Classification(3) (0) | 2018.01.09 |
[Lec2]Image Classification(1) (0) | 2018.01.03 |