learning to remember rare events
TRANSCRIPT
Learning to Remember Rare Events
Łukasz Kaiser, Ofir NachumGoogle Brain
자료정리 : 김홍배
논문을 한마디로 정리하면제목만 보면 도대체 뭔 소리인지 ?
주 내용은 Matching Networks for One Shot Learning 에 메모리 기능을 추가
일반적인 이미지 분류작업
Feature Extractor
Fully Connected Layers
Classifier
일반적인 이미지 분류작업의 경우 , 다음과 같이 NN 을 구성하여 훈련을 통하여 parameter 를 tuning 한다 .
여기서는 기존에 아주 잘 훈련된 Feature Extractor 와 FCL 를 활용 FCL 의 마지막 Layer 로부터 이미지에 대한 Feature Vector 를 얻는다 Feature Vector 또는 query, q 를 메모리 겸 분류기에 입력
Feature Extractor
Fully Connected Layers
Memory &Classifier
Feature Vector, q
메모리의 구조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, integerA[i] : i 번째 memory cell age, integer
메모리 작동원리
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]
작동 예• 만약 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
작동 예• 만약 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
메모리 Tuning• 앞과 같이 작동되기 위해서는 메모리가 Tuning 이 잘 된 경우• 메모리 Tuning 은 어찌해야 하나 ?• 우선 주어진 이미지에 따라 계산된 query, q 와의 유사도에 따라 다음과 같이 메모리의 key vector 간 k 개의 Nearest Neighbors 를 계산한다 .
(n1, n2, ….., nk)= NNk(q,M)
n1> n2> …..> nk
메모리 Tuning
즉 주어진 이미지가 class V[n1] 에 해당하는 경우이다 .
• query, q 가 주어질 경우 , 다음과 같은 2 경우가 존재한다 .
Case 1) 메모리 내에 q 와 유사한 key vector 가 존재하는 경우
이 경우 , n1 에 해당하는 메모리의 key vector 만 update 한다 .
두 벡터의 normalized 평균값으로 대체또한 갱신되었으므로 age 를 reset 시켜준다 .
메모리 Tuning• query, q 가 주어질 경우 , 다음과 같은 2 경우가 존재한다 .
Case 2) 메모리 내에 q 와 유사한 key vector 가 존재하는지 않는 경우이 경우 , 메모리에 새로운 key vector 와 class 를 저장하여야 함 .
어디에 저장하여야 하나 ?
가장 오래된 ( 즉 사용빈도가 가장 낮은 ) 메모리에 저장
* 메모리 갱신이 끝나면 모든 메모리의 age 를 +1 시켜준다 .
메모리 Loss 의 정의• 여기서 Loss 는 단지 Performance Indicator 역할• 메모리의 성능은 분류대상 이미지가 메모리에 저장된 class 에 되도록 많이 포함될 수록 좋게 나타나도록 즉 분류대상에 대한 정보를 많이 가질 수록 성능이 좋다 !
V[np] : 기존의 class 에 포함된 경우 , positive neighborV[nb] : 기존의 class 에 포함되지않은 경우 , negative neighbor
Query 와 negative neighbor 사이의 유사도 되도록 작게 Query 와 positive neighbor 사이의 유사도 되도록 크게
실험결과 : Omniglot dataset
• 기존의 메모리를 사용한 onse-shot learning 에 비하여 우수한 성능을 나타냄 .