Nearest neighbor search vs. t-sne를 이용한 차원 축소 기법

1. Nearest neighbor search  - idea

 

high level에서 나온 feature에 대한 분석

 

여러가지 이미지 데이터를 주고 데이터 베이스에 저장된 데이터중 이들과 가장 비슷한 데이터를 유사도에 따라 정렬

 

 

왼쪽이 input으로 준 이미지 데이터이고 오른쪽이 유사한 정도에 따라 정렬한 결과

 

이 결과를 잘 살펴보면 코끼리 같은 경우 코끼리라는 의미로 비슷한 이미지들이 clustering되어있는 것을 확인 가능

 

이 모형이 이미지의 의미를 잘 파악했구나로 생각 가능하다

 

비슷한 이미지 검색을 어떻게 했을지 생각해본다면 단순하게 두 이미지 사이에서 대응하는 pixel별로 거리가 가까운 걸 고를수있는데

 

그렇게 한 경우 마지막 줄에 주어진 개 이미지의 경우 포즈가 거의 비슷한 개만 출력해야하는데 실제로 그렇지 않았다

 

이 모형이 학습한 feature가 주어진 이미지 내 물체의 위치 변화도 잘 인식하면서 의미를 이해한다는 걸 알 수 있다

 

 

2. Nearest neighbor search - 구체적으로 어떻게 가능할까

 

주어진 이미지 데이터들을 high level feature vector를 뽑아 embedding space에 보낸다

 

feature를 잘 학습한 neural network를 이용해서 high level feature vector를 만들 수 있다.

 

(예시: class를 분류하는 image classification neural network에 image input을 넣어 feature vector만 가지고온다)

 

 

 

이런 식으로 모든 데이터들을 high dimensional embedding space에 보낸다면

 

각 high dimensional vector들은 input image들과 연결이 되어있다.

 

이 상황에 가장 가까운 이미지들이 무엇인지 파악하고 싶은 test image를 high dimensional vector에 embedding시켜본다면

 

 

 

빨간색 부분에 mapping이 되는데 여기서 가장 거리가 가까운 주변 vector들을 찾는다

 

그러면 주변 vector들은 데이터베이스 내 이미지들과 연결이 되어있기 때문에

 

그것과 연결된 이미지들을 return하는 것이 nearest neighbor search이다.

 

 

nearest neighbor search로 test image와 비슷한 image를 return하는 모습

 

 

3. t-sne : motivation

 

nearest neighbor search는 모형의 전체적인 그림을 파악하기 어렵다는 단점이 있음

 

우리에게 익숙한 세상은 3차원인데 network에서 high level로 갈수록 feature의 차원이 높아져 사람이 상상하기 어려운 형태로 나온다

 

고차원 벡터를 사람이 알아보기 쉽게 차원축소(dimensionality reduction)하여 눈으로 쉽게 확인하자

 

 

4. t-sne: t distributed stochastic neighbor embedding

 

고차원의 벡터로 표현되는 이들간의 neighbor structure를 보존하는 2차원의 embedding vector를 학습하여 평면상에 표현하는 방법

 

원 데이터간 유사도를 embedding 공간에서 유사도에도 보존하겠다는 원리로 학습

 

embedding 공간에서 유사도를 t분포의 확률분포로 바꿔서 학습

 

 

MNIST data를 t-SNE로 학습하여 시각화한 그림

 

재미있는 부분은 숫자 3,5,8 class의 vector들 그룹이 맞닿아있다는 것

 

맞닿아있다는 것은 이미지의 class가 헷갈리기 쉽다는 것인데 모델이 3,5,8을 유사하게 생각하고 있다는 것

 

실제로도 숫자 3,5,8은 꽤 비슷하긴 하다

 

TAGS.

Comments