1. Learning to Remember Rare Events
Łukasz Kaiser, Ofir Nachum
Google Brain
자료정리 : 김홍배
2. 논문을 한마디로 정리하면
제목만 보면 도대체 뭔 소리인지 ?
주 내용은
Matching Networks for One Shot
Learning에 메모리 기능을 추가
3. 일반적인 이미지 분류작업
Feature Extractor
Fully Connected Layers
Classifier
일반적인 이미지 분류작업의 경우, 다음과 같이 NN을 구성하여
훈련을 통하여 parameter를 tuning한다.
4. 여기서는
기존에 아주 잘 훈련된 Feature Extractor와 FCL를 활용
FCL의 마지막 Layer로부터 이미지에 대한 Feature Vector를 얻는다
Feature Vector 또는 query, q를 메모리 겸 분류기에 입력
Feature Extractor
Fully Connected Layers
Memory &
Classifier
Feature Vector, q
5. 메모리의 구조
K[1] V[1] A[1]
K[2] V[2] A[2]
.
.
.
.
.
.
K[i] V[i] A[i]
.
.
.
.
.
.
K[n] V[n] A[n]
M[1]
M[2]
.
.
M[i]
.
.
M[n]
=
i번째 메모리 M[i]는 다음과 같이 3개의 요소로 구성
K[i] : i번째 memory feature(key) vector,
normalized one ІІ K[i] ІІ=1, ϵ R1xkey size
V[i] : i번째 memory class indicator, integer
A[i] : i번째 memory cell age, integer
6. 메모리 작동원리
q∙K[1] V[1] A[1]
q∙K[2] V[2] A[2]
.
.
.
.
.
.
q∙K[i] V[i] A[i]
.
.
.
.
.
.
q∙K[n] V[n] A[n]
• 주어진 이미지에 대한 Feature vector를 FCL로부터 받아
이를 Query, q(normalized one, ІІqІІ=1, , ϵ R1xkey size )로 메모리에 전달하면
• 메모리 셀에 있는 Key vector, K[i]와 유사도(Cosine Similarity)를 계산한다.
q와 K[i]가 유사하면 ~1 이고, 관계없으면 ~0
• 만약 q∙K[i]가 가장 큰 값이면, 주어진 이미지의 class는 V[i]
7. 작동 예
• 만약 0 ~ 9까지의 10 digits을 분류하는 작업을 예로 들면
• “5”를 입력할 경우, class “5”에 해당하는 Key vector, K[6]와 query의
유사도가 가장 큰 값을 나타낼 것이며
ㅂ
K[1] “0” A[1]
K[2] “1” A[2]
K[3] “2” A[3]
K[4] “3” A[4]
K[5] “4” A[5]
K[6] “5” A[6]
K[7] “6” A[7]
K[8] “7” A[8]
K[9] “8” A[9]
K[10] “9” A[10]
5 q
8. 작동 예
• 만약 0 ~ 9까지의 10 digits을 분류하는 작업을 예로 들면
• “7”를 입력할 경우, class “7”에 해당하는 Key vector, K[8]와 query의
유사도가 가장 큰 값을 나타낼 것
K[1] “0” A[1]
K[2] “1” A[2]
K[3] “2” A[3]
K[4] “3” A[4]
K[5] “4” A[5]
K[6] “5” A[6]
K[7] “6” A[7]
K[8] “7” A[8]
K[9] “8” A[9]
K[10] “9” A[10]
7 q
9. 메모리 Tuning
• 앞과 같이 작동되기 위해서는 메모리가 Tuning이 잘 된 경우
• 메모리 Tuning은 어찌해야 하나 ?
• 우선 주어진 이미지에 따라 계산된 query, q와의 유사도에 따라
다음과 같이 메모리의 key vector간 k개의 Nearest Neighbors를
계산한다.
(n1, n2, ….., nk)= NNk(q,M)
n1> n2> …..> nk
10. 메모리 Tuning
즉 주어진 이미지가 class V[n1]에 해당하는 경우이다.
• query, q가 주어질 경우, 다음과 같은 2경우가 존재한다.
Case 1) 메모리 내에 q와 유사한 key vector가 존재하는 경우
이 경우, n1에 해당하는 메모리의 key vector만 update한다.
두 벡터의 normalized 평균값으로 대체
또한 갱신되었으므로 age를 reset시켜준다.
11. 메모리 Tuning
• query, q가 주어질 경우, 다음과 같은 2경우가 존재한다.
Case 2) 메모리 내에 q와 유사한 key vector가 존재하는지 않는 경우
이 경우, 메모리에 새로운 key vector와 class 를 저장하여야 함.
어디에 저장하여야 하나 ?
가장 오래된(즉 사용빈도가 가장 낮은) 메모리에 저장
* 메모리 갱신이 끝나면 모든 메모리의 age를 +1시켜준다.
12. 메모리 Loss의 정의
• 여기서 Loss는 단지 Performance Indicator 역할
• 메모리의 성능은 분류대상 이미지가 메모리에 저장된 class에 되도록
많이 포함될 수록 좋게 나타나도록
즉 분류대상에 대한 정보를 많이 가질 수록 성능이 좋다 !
V[np] : 기존의 class에 포함된 경우, positive neighbor
V[nb] : 기존의 class에 포함되지않은 경우, negative neighbor
Query와 negative neighbor사이의 유사도
되도록 작게
Query와 positive neighbor사이의 유사도
되도록 크게
13. 실험결과 : Omniglot dataset
• 기존의 메모리를 사용한 onse-shot learning 에 비하여 우수한 성능을 나타냄.