[딥러닝]Siamese Network(샴 네트워크)란?
카테고리: DeepLearning
Siamese Neural Network(샴 네트워크)란?
1. Siames Neural Network의 구조
Siamese Neural Network는 마치 샴 쌍둥이처럼 두 네트워크의 구조가 서로 닮아있으며, Weight를 공유한다. 샴 네트워크를 보다 더 자세히 이해하려면 One-shot learning에 대해 알아야 한다.
One-Shot Learning
딥러닝을 매우 강력한 분류 모델이다. 하지만, 그 깊이가 깊어질수록(Deep Neural Net) 파라미터의 양이 기하급수적으로 증가하게 된다. 또한, Transformer와 같은 모델의 경우 학습에 방대한 양의 데이터를 필요로한다. 많은 양의 데이터를 Labeling해야지 성능이 더 좋아진다. 하지만, 사람은 적은 데이터로도 학습이 가능하다.
예를 들어, 여러 가지 ‘총’으로 레이블링된 데이터로 학습된 딥러닝 모델이 있다. 그 모델은 총의 구성 부품인 총신, 탄창, 개머리판 등의 특징을 찾아내어 다양한 종류의 총기를 총으로 인식한다.
하지만, 위와 같은 총은 과연 총으로 인식할 수 있을까? 과거에는 여러 가지 목적을 위해 위와 같은 총이 개발되었다. 하지만, 딥러닝 모델은 일반적인 총기의 특징을 통해 이런 총들을 총이 아니라고 인식할 수 있다. 학습된 데이터에서 보지 못했기 때문이다.
딥러닝 모델이 인간처럼 소량의 데이터만으로 학습을 할 수 있게 하는 것을 Few-Shot Learning이라고 한다. One-Shot Learning은 이 Few-Shot Learning의 극단적인 예시로, 하나의 데이터만으로 학습을 할 수 있게 만들 것이다.
정리하자면, Classification을 푸는데 기존의 레이블링된 데이터를 이용한다면, 방대한 양의 데이터를 필요로 하고, 데이터가 추가적으로 들어오면서 Class의 수가 늘어날 경우 모델을 새로 학습해야하는 불상사가 생긴다. 실제로는, Task에 따라 소량의 데이터를 가지고 학습해야하는 경우도 생기므로 이를 위한 해결책이 바로 One-Shot Learning이다.
2. Architecture
샴 네트워크는 위에처럼 Weight를 공유한다. 따라서 한 네트워크라고 봐도 무방하다.
3. Training
- 두 개의 입력 데이터(Input1, Input2)를 준비한다.
- 각 입력에 대한 임베딩 값(Embedding1, Embedding2)을 얻는다.
- 두 임베딩 사이의 거리를 계산한다. L1-norm, L2-norm등의 방법을 사용한다.
- 두 입력이 같은 클래스에 속한다면 거리를 가깝게, 다른 클래스에 속한다면 거리를 멀게 Siamese Neural Network를 학습시킨다.
결론적으로 모든 학습 데이터에 대한 임베딩 값을 Scattering 했을 때, 같은 클래스끼리는 모이고 다른 클래스끼리는 멀어지는 결과를 보여준다.
4. Pros
- Low Sampling
- 샴 네트워크는 One-Shot learning을 위해 개발되었다. 다시 말해, 소량의 데이터만으로 학습이 가능하다는 장점을 지닌다.
- Feature Extraction Network
- 샴 네트워크는 결과적으로 입력 데이터를 임베딩으로 변환시킴.
- 변환되는 임베딩의 차원 수로 feature extraction(reduction) 하는 네트워크라고 볼 수 있음
- 임베딩으로 변환 후, k-NN, MLP등의 classifier를 붙여 feature extractor로 활용 가능
Reference
Siamese Neural Networks (샴 네트워크) 개념 이해하기
샴 네트워크를 이용한 문제 이미지 검색기능 만들기
댓글 남기기