소개드릴 논문은 오래전에 나왔고, 노드의 구조 또한 단순 하지만, 거리 학습 기반의 One Shot 러닝을 고안하는데 크게 기여하였고, 이전엔 사람이 직접 설계한 특징으로
거리학습을 진행하였지만, 처음으로 Siamese Network를 통하여 DNN을 활용했다는 점에서 의미가 큽니다. 현업에서도 클래스는 많고, 이미지는 적은경우에 대해 유사도를 판단해야 하는 경우 자주 쓰이는 기법이 될 수 있습니다.
오늘 논문 리뷰를 위하여 이미지처리팀 '이예은'님이 자세한 리뷰 도와주셨습니다.
11. [DMQA Open Seminar] Metric-Based Approaches for Meta Learning
Traindataset
Novel
Class 2
Novel
Class 1
Novel
Class3
Example1
Example2
Test dataset
Class ? Class ?
Supportset Queryset
12. [DMQA Open Seminar] Metric-Based Approaches for Meta Learning
Supportset
Novel
Class 1
Novel
Class 2
Novel
Class 3
Example1
Example2
Query set
Class ? Class ?
Meta-test dataset
Class 1 Class 5 …
Example1
Example2 …
…
Meta-train dataset
Class 2 Class 3 Class 4
…
…
…
…
…
새로운 클래스에 대한
Meta-test dataset
13. [DMQA Open Seminar] Metric-Based Approaches for Meta Learning
! = argmax "#~$
!
"%~#,&~# σ(',()∈& )*+,!((|',%)
"#~$
Class 1 Class 2 Class 3 Class 4 Class 5 …
Example1
Example2 …
…
Meta-train dataset
…
…
…
…
…
Class 1
Task 1(#1)
Class 2 Class 3
14. [DMQA Open Seminar] Metric-Based Approaches for Meta Learning
! = argmax "#~$
!
"%~#,&~# σ(',()∈& )*+,!((|',%)
"#~$
"%~#
Class 1 Class 5 …
Example1
Example2 …
…
Meta-train dataset
Class 2 Class 3 Class 4
…
…
…
…
…
Example2
Task 1(#1)
Supportset(%1)
Class 1 Class 2 Class 3
Example 1
15. [DMQA Open Seminar] Metric-Based Approaches for Meta Learning
! = argmax "#~$
!
"%~#,&~# σ(',()∈& )*+,!((|',%)
"#~$
"%~#
"&~#
Class 1 Class 5 …
Example1
Example2 …
…
Meta-train dataset
Class 2 Class 3 Class 4
…
…
…
…
…
Example1
Example2
Query set(&1)
Task 1(#1)
Supportset(%1)
Class 1 Class 2 Class 3
16. [DMQA Open Seminar] Metric-Based Approaches for Meta Learning
! = argmax "#~$
!
"%~#,&~# σ(',()∈& )*+,!((|',%)
"#~$
"%~#
"&~#
Class 1 Class 5 …
Example1
Example2 …
…
Meta-train dataset
Class 2 Class 3 Class 4
…
…
…
…
…
T
ask 1(#1)
Support set Query set
Class 1 Class 2 Class 3
Example1
Example2
Episode
!
17. [DMQA Open Seminar] Metric-Based Approaches for Meta Learning
Class 1 Class 5 …
Example1
Example2 …
…
Meta-train dataset
Class 2 Class 3 Class 4
…
…
…
…
…
Example2
Query set(!1)
Task 1("1)
Supportset(#1)
Class 1 Class 2 Class 3
Supportset
Novel
Class 1
Novel
Class 2
Novel
Class 3
Example1
Example2
Query set
Class ? Class ?
Meta-test dataset
= Example1
22. Siamese Neural Network for One shot Image Recognition 이란?
Supervised metric-based 방식과 siamese neural network를 이용해 image에 대한 학습을 진행
하고 학습된 feature들을 retraining 없이 one-shot learning에 이용하는것
뉴럴넷에 2개의 이미지를 입력하고, 결과로 같은 카테고리인지 아닌지를 학습
23. 1. verification model을 학습
input pair이 입력되었을 때,
이 pair가 같은 class 인지아닌지 잘 구분할
수 있도록 학습
pairwise 방식으로 각 class의 image와
score를 매겨 highest score를 얻은
(distance가 가장 짧은) pairing이
one-shot task에서 highest probability를
얻음
24. h1과 h2 사이 weighted L1 distance
이 distance는 sigmoid activation을 사용하여 [0,1]간격으로
mapping되고, cross-entropy objective를 사용
Siamese 네트워크는 두 개의 똑같은 네트워크가 있고 입력이 각각 다른 것이 들어감
즉 병렬적으로 두 개의 입력이 그림처럼 들어가고 그것의 결과를 가지고 distance을 측정함
Input1
Input2
25. • 모델은 convolutional layer들의 연속으로 이루어져 있음
• 각 layer는 single channel, 다양한 size의 filter, fixed stride 1을 사용.
• 각 레이어마다 filter의 사이즈가 다름 (16의 배수)
• Convolutional filter의 수는 (optimizing을 위해) 16의 배수로 정했다.
• Output feature maps에 ReLU activation function을 사용하고, 선택적으로 filter size와 stride가 2인
max-pooling을 활용한다.
• 따라서 k번째 filter map은 다음과 같은 형태를 가진다.
(Wl-1,l 은 layer l 의 feature map을 나타내는 3-dimensional tensor이다.)
26. (input1 쪽만 나타냄)
현재 페이지 내용
1. convolutional의 마지막 layer은 flatten to single vector가 된 후, 다음과 같이 distance을 구하게 된다.
2. 마지막 feature (L-1 layer)에서 나온 두 벡터에서 component 끼리 절댓값 차이를 구하고 이를 weighted sum을
한 결과에 sigmoid을 취하게 됨
27.
28. Loss function - binary cross-entropy ( ■첨언) -Binary classification으로 학습
• 여기서 윗첨자 i는 i-th minibatch라는 것이다. (전체 minibatch size는 M)
• x1와 x2가 같은 character이면 y(x1,x2)=1, 아니면 0의 값을 가진다.
Optimization.
• Epoch T에 대한 update rule은 다음과 같다.
29. Dataset - The Omniglot Dataset
50개의 알파벳에 대한 샘플로 만들어졌고 Latin, Korean부터해서 잘 안알려진 local dialects 등
각 alphabet은 15~40개의 character로 구성되어 있다. 모든 alphabet의 모든 character는 20명의 drawer로
부터 그려졌다.
30. Verification : 학습을 위해 30,000, 90,000, 150,000 학습 pair(same pairs + different pairs) 생성
• 60% 데이터를 학습을 위해 설정하였다.
• 50개의 알파벳중 30개의 알파벳 (ex. a1~a30)
ü 20개의 drawer 중 12명 (ex. d1~d12)
ü 50개 알파벳중 30개의 알파벳을 고르고 이 알파벳을 쓴 20명의 drawer중
12명이 쓴 것에 대해서만 학습을 한다.
• 첫 번째 성능 평가 방법
ü 나머지 20개의(ex. a31~a50) 알파벳중 10개의(ex. a31~a40) 알파벳 이용
ü 이 10개 알파벳에 대해 아까 안고른 8명 drawer 중 (ex. d13~d20) 4명을
(ex. d13~a16) 선택하여 10,000개의 verification examples을 만듬
ü 나머지 10개(ex. a41~a50) 알파벳과 나머지 drawer 4명에(ex. d17~d20)
대한 것은 testing examples이 된다.
32. One-shot Learning
• Verification task를 잘 수행하도록 siamese network를 optimize하고 나면 학습된 feature들을 이용
해 one-shot learning을 성능을 측정
• 몇 개의 다른 이미지 가 주어진다. (categories: C개)
• query x에 대해서 다음과 같이 maximum similarity을 계산을 하게 된다.
• 이 논문에서는 One-shot learning 성능을 측정하기 위해 20-way within-alphabet classification
• -> 두번째 성능 측정 방법
34. MNIST One-shot Trial
• Omniglot으로 학습한 모델이 얼마나 MNIST에서 일반화가 되었는지 확인
• MNIST는 손글씨 숫자 10개이므로 10-way one-shot classification task
• Training set에서는 어떠한 fine-tunning도 하지 않고 MNIST test set
• 원래 MNIST는 28x28인데 35x35로 unsampling해서 이미지 크기 맞춤
35. Conclusion
• Verification을 위한 convolutional siamese neural network 학습을 첫 번째로 시도하였고 이는
one-shot classification에 수행된다.
• 이전 연구 SOTA와 비슷한 성능을 낸다.
• 학습한 네트워크는 사람 수준의 정확도를 보여줄 뿐 아니라 다른 domain에서도 작동하는 확장성을
보여준다.
36.
37. Loss functions used in Siamese Networks
[https://towardsdatascience.com/one-shot-learning-with-
siamese-networks-using-keras-17f34e75bb3d