[논문 리뷰] Ask Me Anything Dynamic Memory Networks for Natural Language Processing
happynunu
2022. 2. 11. 16:57
Ask Me Anything Dynamic Memory Networks for Natural Language Processing 논문은 2016년 ICML에서 발표된 논문이다. Dynamic memory 개념을 통해서, input으로 여러 문장들이 입력되어도 이들 간의 관계를 유기적으로 고려할 수 있다는 것이 인상적이였다.
1. Introduction
대부분의 자연어 처리와 관련된 작업들은 question-answering problem이다 question-answering과 관련된 tasks의 예는 다음과 같다.
(1)Machine translation : 기계번역
(2)Named entity recognition(개체명 인식작업) : 단어를 보고 어떤 유형인지 or 어떤 집단에 속하는지를 추측하는 것
(3)Part-of-speech tagging (POS) : POS는 문장 내 단어들의 품사를 식별하여 태그를 붙여주는 것을 말한다. 튜플(tuple)의 형태로 출력되며 (단어, 태그)로 출력된다. 여기서 태그는 품사(POS) 태그다.
(4)Classification problems like sentiment analysis : 감정 분류
(5)Multi-sentence joint classification problems : 예를 들어, Multi-sentence를 보고, Who does ”their” refer to?에 대한 답을 하는 것, 여러 문장 간의 관계성을 파악하거나 이에 맞는 답을 하기
Dynamic Memory Network
• Dynamic Memory Network는 input sequence와 question를 처리하고, episodic memories를형성한 뒤, 이와 관련된 답변을 만든다.
• DMN은 attention mechanism을 활용하였는데, attention mechanism의 기본 아이디어는 디코더에서 출력 단어를 예측하는 매 시점(time step)마다, 인코더에서의 전체 입력 문장을 다시 한 번 참고하는 것입니다. 다만, 모두 동일한 비율로 참고하는 것이 아니라, 해당 시점에서 예측해야 할 단어와 연관성 있는 입력 단어 부분을 좀 더 집중해서 봅니다
• Input-question-answer에 대한 triplet dataset를 사용해서 학습을 진행한다
Dataset example
• Dynamic Memory Network를 통해 만들어진 inputs,questions와 answers의 예이다.
• input 문장들이 여러개 주어지고 이에 대한 question 문장이 마지막에 주어진다. 그러면 input문장들을 통해서 question 문장에 대한 answer를 답할 수 있어야 한다.
- 이러한 벡터 표현은 episodic memory module에 들어가서 학습이 되고 episodic memory module이 순차적으로 학습을 이어 나가기 위한,initial state를 구성한다.
(3)Episodic Memory Module :
- Attention mechanism을 통해, input representations의 collection중에서 inputs의 어느 부분에 중점을 둘 지 결정한다.
- previous memory뿐만 아니라, question도 고려하는 “memory” vector 표현을 산출한다.
- 매 iteration마다 input과 관련된 새로운 정보를 제공받는다. 이러한 정보는 이전 iteration에서는 관련 없는 정보로 취급 받았던 것이다.
(4)Answer Module:
- Episodicmemory module의 final memory로부터, answer를 생성한다.
Real example of DMN
① 먼저 input module에 들어가기 위해 모든 input 문장들의 word embedding 결과를 concatenate한다. 이때 각문장이 끝나는 지점에 end of token을 넣어주었다
②Input 모듈은 rnn으로 되어있다. Episodic memory에 들어갈 때는 각문장의 end of token의 hidden state가 episodic memory의 입력값이 된다. 이러한 hidden state를 논문에서는 Fact representation이라고 한다.
③Episodic memory module도 마찬가지로 rnn으로 되어있다. 저기서 e의 개수는 input으로 들어간 문장 개수이다. 이는 입력값으로 각문장의 end of token의 hidden state가 입력됬으니 당연한 결과이다. 여기서 rnn의 layer는 2개로 다층적으로 구성되어있다.
④ 이때, 특이한점은 어떤 input sequence가 중요한지를 따로 계산해줘서 그지점에 대해서 특징점을 추출한다는 것이다. 특징 지점의 위치도 label로 입력받는다.
⑤ 그리고 최종적인 final state값이 answer module에 들어가서 answer 를 계산한다.
2.1 Input Module
h_t = RNN (L[w_t], h_(t-1) )
L : embedding matrix
w_t : the input sequence에서 t번째 단어의 단어 인덱스
•Inputsequence가 여러 개이면, concatenate하고 각 문장이 끝나는 지점마다, end-of-sentence token를 넣어준다.
•GRU와 more complex LSTM를 사용했다. 후자의 경우 성능은 비슷했지만 연산량이 많았다.
•두개의 network모두 일반적인tanh RNN보다 성능이 좋았다.
•Input module의 RNN는 각각의 end of sentence token과 일치하는 t 스텝에서의 hidden states를 episodic module에 대해서 fact representation으로 사용한다.