2019. 3. 14. 13:55ㆍ풀잎스쿨 NLP Bootcamp
논문링크: https://arxiv.org/abs/1506.07285
참고자료: (조용래님 발표자료) Ask Me Anything_ Dynamic Memory Networks for Natural Language Processing.pdf
Abstract
Contribution
Model Architecture
Question Module
Question Module부터 순서대로 살펴보도록 하겠다. Question Module에서는 질문 Sequence를 GRU를 통해 단어 하나씩(w_t)를 넣어 Encoding을 한다. 이렇게 각 time step(t)마다 생성되는 결과물은 q_t이며, 질문 Sequence를 모두 거친 마지막 Encoding 결과물은 T_Q의 길이를 가진 q = q_T_Q로 내타내고 있다.
(GRU를 통해서 질문 Sequence를 Encoding한다)
Input Module
Input Module에서는 RNN모듈을 이용하여 순차적으로 Encoding을 해주고있다. Input Sequence를 받을때, 문장이 한개가 아닌 여러개로 구성될 가능성이 있는데, 이때는 각 문장마다 Encode된 결과인 c_t(t에서의 Encoding)을 Output으로 가진다. Output은 s1, s2, ..., s_n까지 구성되는데, 각 문장마다 c_t를 가진다고 이해할 수 있다. 이때 각 s_n시점에서의 c_t는 w_t단위의 단어를 Input으로 받는다. 즉, w_t와 이전 State인 h_t-1을 받아 현재의 h_t를 계산하는 것으로 이해할 수 있고, 시점이 sentence가 끝나는 지점이라면 c_t가 된다고 이해할 수 있다.
(h_t도 계산하는 방식은 Question Module과 크게 다르지 않다)
Episodic Memory Module
Episodic Memory Module은 이 논문에서의 주요 Contribution이라고 할 수 있겠다. 잠시 예시를 들어보겠다. 만약 당신이 'All You Need is Attention'과 같은 어려운 논문을 읽는다고 가정해보자. 당신이 논문을 집중하면서 읽었다고 가정하면, 처음 이 논문을 읽은 것과 동일 논문을 3~4번 읽은 것의 이해도는 분명 다를 것이다. 해당 논문은 이러한 부분에서 Neuroscience에서의 개념을 차용했다는 것을 Related Works를 통해서 밝히고 있다.
다시 Episodic Memory Module로 돌아와보자. 해당 구조는 여러번의 Episode(m1, m2, ...)을 거치면 각 Episode에서 나오는 Attention이 달라진다고 주장하고 있다. 즉, 같은 Input Sequence에 대해 여러번의 Process를 거치면 Attention이 달라지는 것이다. 수식을 잠깐 살펴보면 c_t와 g_t, 그리고 h_t가 있다. c_t는 Input Module에서 Encoding된 Output이며, h_t는 현재의 State를 말한다. g_t는 1) GRU에서 c_t와 h_t-1을 Input으로 받은 GRU의 Output과 2) h_t와의 비율을 결정짓는데 사용되는 variable이다. 이러한 방식으로 각 Sentence에서의 Attention을 얼마나 줄까에 대해 결정하게 된다.
(c_t, m_(i-1), q를 통해서 비율에 대한 factor인 g_t를 결정한다)
여기서 g_t를 계산하는 공식은 g_t = G(c_t, m_(i-1), q)로 표기하고 있다. 여기서 c_t와 q는 우리가 앞에서 언급했지만 m_(i-1)에 대해서는 아직 언급하지 않았다. 여기서 m변수는 Encoding된 각 Episode인데, Episode는 Hidden State인 e_t와 이전 Episode를 Input으로 받은 GRU에서의 Output을 나타낸다. 즉, 현재 Episode는 이전 Episode와 현재의 Hidden State에 영향을 받는다. 한가지 유의할 점은, 만약 이전 Episode가 존재하지 않는다면, 즉 처음으로 Episode가 계산되는 경우라면 m = q로 설정한다.
G는 Feature를 선택하는데 사용된다. G에서는 앞서 언급했던대로 c_t, m_(i-1), q를 입력으로 받는데, 이렇게 받은 입력들을 기반으로 위 사진과 같은 방식으로 Feature를 생산해낸다. 엄밀히 말하면 이 수식은 G가 아닌 z(c, m q)인데, 실제로 G(c, m, q가 계산되는 방식은 아래 수식을 따른다.
(각 Feature를 기반으로 tanh와 Sigmoid를 이용하여 입력에서의 가중치를 결정한다)
Answer Module
(a_t는 Prediction을 하기 위한 Input으로 쓰인다)
Result & Conclusion
Result
일단 기존 Memory NN과의 성능비교 결과이다. 2,3번의 Task는 Supporting Fact인데, 여기서 DMN(Dynamic Memory Network)는 기존 Memory NN에 비해 성능이 약간 떨어지는 것으로 나타난다. 여기서, 매우 긴 Input Sequence를 처리하는데에 DMN이 좋은 모델이 아니라는 사실이라는 추측 할 수 있다. 하지만 7,8번과 같은 Task인 무언가를 세는 주제에 대해서는 기존 Memory NN에 비해 상당한 수준으로 더 나은 결과를 보여준다. 이는 Episodic Memory Module이 얼마나 잘 작동하는가에 대한 간접적인 증거로 볼 수 있을 것이다. 17,19번의 경우 Memory NN보다 더 떨어지는 성능을 보이지만 애초에 둘다 좋은 성능을 내지 못한다.
위 결과는 Episodic Memory의 Iteration이 많이 돌수록 좋은가에 대한 결과이다. Three-facts, Count, List/Sets와 같은 Task에 대해서는 Iteration이 돌수록 좋은 결과를 보여주는 데에 비해 Fine Grain(정도, 등급)기반의 Sentiment Analysis의 경우에는 무조건 Iteration 횟수가 많다고 좋은 결과를 내지 않는다는 것을 보여주고 있다. 이는
Conclusion
Episodic Memory Module을 이용한 Dynamic Memory Network구조를 통해 반복적인 학습을 통해 어느정도의 성능 상승을 꾀하는 구조를 이 논문에서는 제시한다. 그럼에도 불구하고 현재는 Transformer를 이용한 BERT와 같은 Pretrained Model을 통한 방식의 등장때문에 쓰이지 않는 방식이기도 하다.
그렇다면 현재는 정말 Transformer와 같은 방식 외에 다른 방식은 전혀 쓸수가 없는걸까? 정말 Self-Attention은 Memory Module의 필요성을 없앴을까? 이러한 부분에서 발표자 분이 가지는 궁금증에 동의하지 않을 수 없다.
'풀잎스쿨 NLP Bootcamp' 카테고리의 다른 글
10주차(2) - Bidirectional Attention Flow for Machine Comprehension (BiDAF) (0) | 2019.03.31 |
---|---|
10주차(1) - Teaching Machines to Read and Comprehend (0) | 2019.03.29 |
9주차(1) - End-to-End Memory Network (0) | 2019.03.14 |
8주차(1) - Convolutional Sequence to Sequence Learning (0) | 2019.03.11 |
7주차(2) - Neural Machine Translation in Linear Time (0) | 2019.03.07 |