////
Search
Duplicate

Copy of d’Autume et al. [2019] Episodic Memory in Lifelong Language Learning

들어가기에 앞서

Deepmind에서 NIPS2019에 제출한 이 논문의 문제의식을 이해하려면 다음 내용을 이해하고 계시면 도움이 됩니다.
Sprechmann et al.[2018] Memory-based Parameter Adaptation (이하 MbPA)
Ramalho and Garnelo [2019] Adaptive Posterior Learning: few-shot learning with a surprise-based memory module
Devlin et al. [2018] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
몰라도 이 논문을 이해하시는데는 큰 지장은 없으실 겁니다.

Lifelong Language Learning 이란?

그냥 Continual Learning이라고 해도 되는데, 좀더 멋진 제목을 붙였다. 그러나 그 제목에는 이 연구의 지향점이 드러나게 마련이다. [사람이 언어를 배우듯] 이라는 뉘앙스를 행간에 넣고 싶었던 모양이다.
딥러닝에서 Continual Learning이 잘 안되는 이유가 무엇인가? training distribution shift 때문이다. 딥러닝의 기본 가정인 i.i.d (Independent and identically distributed)가 무너지는 상황, 즉 시간이 지남에 따라 학습데이터의 분포가 달라지면서, 예전 분포에 따라 학습한 모델이 Catastrophic Forgetting을 경험하는 상황 때문이다. 딥러닝에서 학습데이터의 분포는 불변의 전제 같은 것이다. 그러나 세상에 그런게 어디있겠는가? 맥락(context)은 계속 변한다. 따라서 관측되는 데이터의 distribution도 계속 변한다. NLP분야야 말로 맥락의 변화가 가장 드라마틱하게 발생하는 분야 아니겠는가?
Sprechmann et al.[2018]은 Deepmind에서 나름 공들여 쓴 논문이다. 사실 본 논문의 핵심 아이디어는 Sprechmann et al.[2018]에 소개된 MbPA라는 모델에 다 들어있고, 이후 나온 BERT를 가지고 그 당시 할 수 없었던 개선을 더하여 MbPA++을 만들었다는게 이 논문의 내용 전부다. Sprechmann et al.[2018]에서는 Continual Learning을 위해 2가지가 필요하다고 한다.
1) (Episodic) Memory Module (과거의 기억)
2) Local Adaptation (보관된 과거의 기억들 중 현재 상황과 가장 유사한 것들 찾아내어 현재상황 해석에 활용하기)
그런데 제목에 있는 Episodic Memory란 무얼까? 논문에 설명이 전혀 없다. 그래서 참고 논문인 David Lopez-Paz and Marc’Aurelio Ranzato[2017] Gradient Episodic Memory for Continual Learning(이하 GEM)을 참고해 보면, Episodic Memory는 기억의 중요도에 따라 개념적으로 저장하는 방식이 아니라 개별 episode를 그냥(그야말로 그냥. 아무런 기준없이) 저장하는 Experience Replay의 개념이다. Ramalho and Garnelo [2019]는 memory를 surprise 기준으로 저장하므로 중요도 개념이 있다. 그러나 본 논문에서는 그런 개념이 없다.
혹시, Continual Learning 이라면 새로운 클래스에 대한 유연한 적응 같은 요건이 필요한거 아니냐고 물으신다면? 예리하십니다. 이 논문의 약점이 이 부분에 주목하지 않는다는 것입니다.
(참고) Continual Learning에는 Task-incremental Learning, Domain-incremental Learning, Class-incremental Learning 이 있다고 합니다.

(참고) Catastrophic Forgetting을 다루는 3가지 메인 어프로치들

1) augmenting the loss function
that is being minimized during training with extra terms (e.g., a regularization term, an optimization constraint)
2) adding extra learning phases
such as a knowledge distillation phase, an experience replay
3) augmenting the model with an episodic memory module
본 논문은 3)에 해당되겠습니다.

문제의 정의

Data distribution이 변하는 상황에서의 supervised learning 이다. 그래서 학습데이터는 다음과 같은 스트림으로 정의된다.
본 논문에서는 2가지 task에 대해 데이터셋이 여러가지인 경우를 상정한다. 1) Text Classification Task 라면?
Yelp(5 classes), AGNews(4 classes), DBPedia(14 classes), Amazon(5 classes), Yahoo(10 classes) 이상 5개 데이터를 순서대로 쓰거나
2) Question and Answer (QnA) Task 라면?
SQuAD, TriviaQA_Web, QuAC, TriviaQA_Wiki이상 4개 데이터셋을 순서대로 쓰거나
하는 방식이다.
Text Classification이라면 일부 클래스 라벨이 겹치기도 한다.
어떤 선행연구(A-GEM, Chaudhry et al. 2019)는 (xt, yt)가 어떤 데이터셋에 소속된 것인지 추가정보를 주기도 한다. 본 논문에서는 그걸 안하면서도 성능이 더 잘나온다는 점이 장점이기도 하다. 즉, 모델은 (xt, yt)가 어느 데이터셋으로부터 온 것인지 정보를 모른다.
이 상황에서 likelihood를 극대화하는 (아래 L(W)를 최소화하는) 파라미터 W를 찾는, 전형적인 지도학습으로 정의한다.
그러나!! Domain Adaptation을 사용한다는 것은 Inference 를 위해 Global Optimum(일지 모를) 파라미터 W를 사용하지 않는다는 것이다. 자세한 것은 아래에서...

본 논문의 솔루션

아래 그림은 본 논문에서 학습(training)단계에서 episodic memory를 어떻게 구축하는지, 그리고 추론(infer) 단계에서 이를 어떻게 활용하는지 보여 준다.
이 모델은 다시 1)Example Encoder 2)Task Decoder 3)Episodic Memory 의 세 파트로 나뉜다.

1) Example Encoder

BERT를 쓴다. 잘된다. 끝!
BERT라는 pretrained language model이 나왔기 때문에 가능한 부분이다.
이전연구 MbPA는 encoder를 학습해야 했다. 이것은 3)Episodic Memory의 구성방식에도 큰 차이를 가져온다.
Encoder의 출력은 Task에 따라 다소 다르게 처리된다.
Text Classification : special beginning-of-document symbol CLS as Xt,0
Question and Answer : Context Xt,context + [SEP] + Question Xt,question

2) Task Decoder

위 BERT 그림 윗부분 Classification Layer 가 Task Decoder가 된다.
Task에 따라 전개되는 수식 및 레이어 구조는 다음과 같다.
Text Classification
Question and Answer

3) Episodic Memory

Episodic Memory Module은 key-value 메모리 블럭으로 구성되어 있다.
xt의 key ut는 xt의 첫번째 심볼의 encoding으로 규정한다.
Text Classification
Question and Answer
이후 보겠지만, 이 key 기준으로 memory 블럭들 간 유사도를 따진다. 그렇다면 xt,0 안에 전체 xt의 의미가 들어 있어야 한다. BERT기 때문에 그게 가능하다.

학습과 추론 알고리즘

1) Training : Sparse experience replay의 구축 과정

1) Sampling Step R = 10000 S = 100
즉 10000번마다 100개의 example을 (랜덤하게) 샘플링한다.
즉, 10000번마다 한번씩 이전 기억들을 랜덤하게 소환하여, W가 그 기억을 잊지 않도록 보완하는 방식으로 Catastrophic Forgetting을 방지한다.
2) Training Step
매번의 example도 한번씩은 학습된다.
3) Storing Step 학습한 example을 메모리에 저장한다. 단, 모든 example이 저장되는 것은 또한 아니다. (10% 또는 50%, 100% .. 다양하게 선택가능)

2) Inference : Local adaptation을 통한 맥락(local data distribution) 반영

1) Sampling Step 매번 i번째 example xi 의 라벨 yi를 추론하기 위해, xi의 local data distribution과 가장 유사한 K개의 메모리 블럭을 찾는다. 어떻게? K nearest neighbor 를 활용하여, 메모리블럭의 key (ui) 사이의 유클리디언 거리를 계산하여 xi와 가장 가까운 K개를 구한다. (K는 8, 16, 32, .. 다양하다)
2) parameter adaptation step (핵심적인 뽀인뜨!!)
W와 크게 멀어지지 않으면서도, xi와 가까운 example (xk, yk) 관계를 잘 맞추는, xi마다 달라지는 Wi를 구한다.
3) Inference step
이렇게 얻어진 Wi를 이용해 xi의 정답 yi를 추론한다.

실험을 위한 Baselines

ENC-DEC: episodic memory module을 활용하지 않는 (평범한) encoder-decoder 모듈
A-GEM (Chaudhry et al., 2019): 본 논문과 비슷하지만 data identifier를 활용
REPLAY: sparse experience replay 를 사용하지만 local adaptation은 없는 버전
MBPA (Sprechmann et al., 2018): 18년도 베이스라인. BERT가 없으므로 key를 학습해야 한다.
MBPArand++ : local adaptation을 위해 memory module 활용 없이 random sampling
MBPA++: episodic memory model + local adaptation (본 논문)
MTL: 모든 데이터셋을 다 학습한 모델. 넘어설 수 없는 upper bound

실험결과

1. Ablation Study

Memory Module은 꼭 필요하다. ENC-DEC와 차이가 많이난다.
Local Adaptation을 통해 맥락을 반영하는 것은 그렇지 않은 것과 차이가 난다.
Local Adaptation을 위해서 가까운 메모리끼리 샘플링을 잘하는 것은 중요하다. random sampling은 정확도가 매우 떨어진다.
Memory가 없으면 Continual Learning은 불가능하다.

2. 하이퍼파라미터 세팅

모든 메모리가 다 필요한 것은 아니다.
QA는 메모리에 크게 의존하는 것 같지는 않다는 느낌?
Local Adaptation을 위해 유사한 기억들을 많이 검토하는 것은 계산량증가와 속도저하의 문제를 제외한다면 바람직하다.

3. 적절한 local adaptation step = 15