> 컴퓨터는 이미지를 그림모양이 아닌 격자모양의 숫자집합으로 인식한다. (Semantic Gap – 사람 눈으로 보는 이미지, 실제 컴퓨터가 보는 픽셀 값과의 차이)
> 고양이 이미지가 조금이라도 변동(view point, lllumination, Deformation, occlusion, background clutter, interclass variation)이 생기면 픽셀 값이 달라져서 컴퓨터가 고양이를 잘 인식하지 못한다. 그러나 고양이라는 사실은 달라지지 않기 때문에 변동에서도 고양이를 인식할 수 있는 robust한 모델을 만들어야 한다.
Data-Driven Approach
> 기존에는 이미지를 인식시킬 때, 각 객체에 대한 규칙을 하나하나 정하였다. 그러나 실제 생활에서는 수많은 객체들이 존재하기에 객체마다 규칙을 정해주는 것은 한계를 가진다.
> Data-Driven-Approach를 이용 (1. 많은 데이터 set을 모은 뒤, 2. Machine Learning으로 data set을 학습하고 다양한 객체를 인식할 수 있는 모델을 만든다. 3. 새로운 이미지를 가지고 평가를 한다.)
Nearest Neighbor
> 기존의 학습데이터와 새로운 이미지를 비교해서 가장 유사한 이미지로 레이블을 예측하는 방법 ( 유사도를 비교하는 방법으로는 L1 distance, L2 distance가 있다.)
> train data set은 초기에 가지고 있는 고정된 data를 가지고 train하기에 때문에 train time이 항상 일정하다. Test 시간은 Test data 가 많아지면 Test 시간이 늘어난다.
>일반적으로 모델들은 핸드폰, 브라우저 등 Low Power Device에서 동작해야 되기 때문에 test time이 빨라야 한다. Nearest Neighbor 모델은 그러하지 못한다.
> NN 알고리즘은 가장 가까운 이웃만을 보기 때문에 위 그림과 같은 문제가 발생 할 수 있다.
K-Nearest Neighbors
> 위의 문제를 해결하기 위해서 k-Nearest Neighbors 등장, 가까운 Neighbors를 K개의 만큼 찾고, 이웃끼리 투표를 하는 방법이다.
> k의 수가 늘어날수록 경계들이 smooth해지고 좋아지고 있다. 그렇지만 k가 무조건 크다고 좋은 것은 아니다. 적절한 k를 선정하는 것이 중요하다. 빈 공간은 가까운 이웃이 없다는 표시이다.
> 이미지를 다루는 문제에서 K-NN 방법은 좋은 방법은 아니다.
> L1 – 기존의 좌표계를 회전시키면 L1 distance는 변한다. 각각 요소들이 개별적인 의미를 가지고 있으면 L1이 어울린다.
> L2 – 좌표계의 영향을 받지 않는다. 요소들간의 실질적인 의미가 없다면 L2가 어울린다.
> l2가 좌표계에 영향을 덜 받았기에 좀더 smooth하다.
<L1, L2 참고자료>
https://light-tree.tistory.com/125
https://ratsgo.github.io/machine%20learning/2017/10/12/terms/
https://www.stand-firm-peter.me/2018/09/24/l1l2/
Hyperparameter
> Hyperparameter는 직접 설정 해야 되는 값( knn에서는 k의 개수, distance종류), 데이터에 맞게 다양한 Hyperparameter값을 시도해보고 가장 좋은 값을 찾는다.
# idea1 – 학습데이터만을 학습하여 하이퍼 파라미터를 선택
# idea2 – train한 모델을 바탕으로 Test set에서만 잘 동작하는 하이퍼 파라미터를 선택
Idea1, idea2는 unseen data에 대한 정확도가 떨어진다. 기계학습의 궁극적인 목적은 한번도 보지 못한 데이터에서 잘 동작해야 한다.
#idea3 – train set으로 모델을 학습, validation set으로 가장 좋았던 하이퍼 파라미터 선택, validation set에서 고른 하이퍼 파라미터를 바탕으로 test set을 test시작
# idea4(cross validation) – 여러 개의 fold로 나눈 뒤, 나누어진 fold중 하나를 validation set, 그 외 나머지 fold를 train set으로 사용한 뒤 최적의 하이퍼 파라미터를 찾아간다.
> 작은 dataset에서 주로 사용한다. 딥러닝에선 사용하지 않는다.
> 원본이미지와 변형된 3개의 이미지의 distance 계산해 보았을 때 똑같은 값이 나오게 되었다.
> 변형된 3개 이미지는 다른 이미지임에도 불구하고 같은 distance를 나온 것으로 보아서 K-NN 알고리즘은 이미지를 비교하는데 적절하지 않다는 것을 확인 할 수 있다.
Curse of dimension
> k-NN이 잘 동작하기 위해서는 전체 공간을 조밀하게 커버 할 만큼 충분한 트레이닝 샘플이 필요하다. 데이터 충분하지 않으면 이웃들 간의 거리가 멀 것이라고 예측하고 제대로 된 분류를 하지 못한다.
> 차원이 증가함에 따라 기하급수적으로 데이터가 필요하게 될 것이고 그만큼 데이터를 모으는 일은 어렵다.
Linear classification
> 10-CLASSES 스코어를 예측, w에는 데이터에 대한 요약한 정보들이 모여있다.
> 3-classes 예측 예시
> 각 클래스에 대해서 단 하나의 템플릿만을 학습한다.(한 클래스 내에 다양한 특징들이 존재 할 수 있지만, 모든 것들을 평균화시키기에 각 카테고리를 인식하기 위한 템플릿은 하나만 존재한다.)
> 선 하나로 분류할 수 있는 방법이 없다. Linear classifier의 한계