일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 2019기사일정
- interesting party
- ML
- cnn
- 텐서플로우
- 소스코드 올리기
- 큐넷시험일정
- reinforcement
- classification
- TensorFlow
- 멀티에이전트
- atari RL
- state value function
- seednet
- action value function
- 2019정처기
- 딥러닝
- 머신러닝
- DeepLearning
- 텐서플로로 시작하는 딥러닝
- linearclassification
- 티스토리 코드올리기
- Reinforcement Learning
- value function
- RL
- 강화학습
- 인공지능
- 탑코더
- 알고리즘
- multiagent
- Today
- Total
돌아서면 까먹어서
ML 개념 정리 - classification, K-nearest neighbor 18.11.21 본문
Classification problem : Input Data를 미리 정해진 클래스 중 하나인 label로 분류하는 문제
<Image Classification이 고려해야할 점>
1. Viewpoint Variation : 카메라에 의해 시점이 달라지는 경우
2. Scale Variation : 크기 변화
3. Deformation : 변형, 여러 자세로 찍힌 사물
4. Occlusion : 다른 부분에 의해 가려진 경우, 일부만 보이는 경우
5. Background Clutter : 배경과 비슷해 구분이 안되는 경우
6. Intra-class Variation : 객체의 종류가 많은 경우
Data Driven Approach : 먼저 com에게 각 class에 대해 많은 예제를 주고서 Test Data를 보고 시각적으로 학습할 수 있는
training 알고리즘을 개발하는 것.
<Image Classification Pipeline>
Input -> Learning -> Evaluation
Input : N개의 이미지로 구성, K개의 class로 이루어져있음.
Learning : Input Img를 training set으로 사용해 각 class에 대해 학습한다.
Evaluation : 새로운 이미지가 어떤 label로 분류될지 예측함으로써 분류기의 성능을 평가한다.
새로운 이미지의 예측된 label과 정답 label(Ground truth)을 비교
<DATASET>
ImageNet : 전세계에서 모은 이미지
CIFAR-10,100 : class가 10,100인 이미지를 모아놓은 데이터 셋
SVHN : 집 번호판 데이터 셋(구글)
MNIST : 필기체 데이터셋
등등이 있다.
<Nearest Neighbor>
각 Image 간 Pixel 거리 차이 구하기.
- L1 Distance(Manhattan)
L1은 좌표계의 영향을 받는다.
Vector의 각 요소에 대한 개별적인 의미를 알고있다면 사용했을때 더 좋은 성능을 내기도 함.
- L2 Distance(Euclidean)
L2는 좌표계의 영향을 받지 않는다.
vector가 일반적인 vector이고 개별적인 의미가 없을 때 더 잘 어울린다.
<K-Nearest Neighbor Classifier>
Nearest Neighbor이 가장 가까운 이미지 하나만 찾는 것이라면
K-Nearest Neighbor Classifier는 가장 가까운 이미지 K개를 찾고 그 이미지의 label에 대해 vote하는 방식이다.
K=1인 경우는 이미지 1개만 찾기때문에 NN과 같다.
K가 커질수록 경계가 부드러워지고 동 떨어진 이상한 점을 만들지 않지만 무작정 크다고 좋은 것이 아니다.
어느 label에도 속하지 않는 경우는 따로 어디로 속하게 할 것인지 정해야한다.
K-Nearest Neighbor Classifier의 HyperParameter(머신러닝을 위해 최적으로 만들어줘야하는 값들)
= K, Distance
Hyper Parameter를 조정하기 위해서 Testset을 사용해선 안된다.
-> testset에 맞는 hyper parameter를 찾게 된다. 즉, overfitting
overfitting : 과적합, 과하게 데이터 셋에 맞게 학습한것.
test set은 마지막에 딱 한 번만 적용해보도록 한다.
Cross Validation : Hyper parameter를 조정하기 위한 방법
Dataset이 작은 경우에 사용한다.
Training set을 여러개로 나누고 validation set을 번걸아가며 지정해주면서 트레이닝한다.
학습이 끝나면 가장 좋은 parameter로 test set 적용해보고 성능 평가한다.
* 출처 : https://www.kaggle.com/dansbecker/cross-validation
<NN의 장단점>
1. 느리다.
2. L1, L2 Distance가 이미지를 비교하기 적절치못함(이미지가 변형되어도 같은 값이 나온다.)
3. 차원이 커지면 계산이 필요한 학습 data양이 기하급수적으로 증가(curse of dimension=차원의 저주)
이 포스팅은 http://cs231n.stanford.edu 바탕으로 작성했습니다.
* 잘못된 부분들은 댓글 부탁드립니다
'ML > ETC' 카테고리의 다른 글
ML 개념 정리 - Backpropagation 18.12.01 (0) | 2018.12.01 |
---|---|
ML 개념 정리 - Optimization 18.12.01 (0) | 2018.12.01 |
Unity ML-Agents 사용법 18.11.27 (0) | 2018.11.27 |
ML 개념 정리 - Activation function&Loss function(Softmax, multiclass SVM) 18.11.26 (0) | 2018.11.26 |
ML 개념 정리 - Linear Classification 18.11.22 (0) | 2018.11.22 |