2019. 3. 14. 13:53ㆍ풀잎스쿨 NLP Bootcamp
논문링크: https://arxiv.org/abs/1503.08895
참고자료: (김성운님 발표자료) N2Nmem.pdf.pdf
추가참고자료: http://solarisailab.com/archives/690
Abstract
- Input Sequence: 지문에 대한 사전정보. 질문에 대해 답변하기 위한 정보가 포함된다.
- Question Sequence: 질문에 대한 정보. Input Sequence의 어떤 부분을 살펴볼 것인가에 대한 단서가 된다.
- Answer: Question와 Input을 처리한 결과물. 답변에 대한 정보.
Contribution
Model Architecture
일단 이 그림에서 헷갈리기 쉬운 점은, Figure 1 전체가 Model의 큰 구조를 나타낸다는 점이다. (적어도 본인은 처음에 그렇게 헷갈렸다...) 해당 그림은 두 부분으로 나눠볼 수 있는데, (a)부분(왼쪽)은 모델 내의 각 Single Layer의 구조를 나타내고, (b)부분(오른쪽)은 모델의 전반적인 구조를 나타내고 있다. 따라서 여기서는 각 부분에 대해 따로 설명하고자 한다.
Single Layer
- Question Encoding(q)와 Input Encoding(Embedding A)를 Input으로 받아 Attention을 Dot Product를 통해 계산하는 것으로 지문의 문장들과 질문의 Similarity를 확률로 표현
- 여기서 각 Setence를 Embedding한 결과는 Memory 벡터(m)이라고 칭함
- 질문 q의 Embedding한 결과는 벡터(u)라고 칭함
- 문장별로 주목할 정도를 학습함 (Soft Attention)
- 여기서 나온 결과물은 c_i로 표기 (Context)
- 문장들과 질문의 Similarity인 m_i를 Softmax로 Attention을 계산한 결과물인 p_i와 c_i를 곱해주는 것으로 Output 계산
- 여기에 output(o)과 Question을 Embedding한 결과물인 u를 곱해서 Softmax를 적용하는 것으로 최종 Prediction을 계산
- Embedding B = u
Layer-by-Layer Architecture
다음으로 전체적인 구조를 살펴보기로 한다. 여기서는 Embedding C(Sentence Attention)와 Embedding A(Sentence-Question Similarity)로 이루어져 있는 구조가 하나의 블럭이라고 보고 이러한 블럭을 쌓는 방식을 Residual Connection과 같은 방식으로 처리하고 있다. 이렇게 Residual Connection을 거치는 것으로 Question에 대한 Embedding(Embedding B)은 그대로 유지하는 방식을 취하고 있다. (u_k+1 = u_k + o_k)
Weight Details
또한 정답을 예측하는데 사용하는 Matrix는 마지막 Output Embedding과 동일하게 가져간다. (T: Token 길이, K: Hop갯수)이는 아래와 같은 수식으로 나타낼 수 있다.
두번째는 Layer-wise 방식이다. 여기서는 모든 Layer에서 사용되는 Embedding A와 Embedding C가 동일하다. (단 Embedding A != Embedding C이다. 즉, 두 Embedding은 다르다)
또한 Hop사이의 Residual Connection을 약간 변형해서 Question의 Encoding인 u_k(k번째 Hop의 Encoding)을 얼마나 감안할 것인가를 H를 통해 설정하게 된다.
Model Details
Encoding
Temporal Encoding은 문장 자체의 순서를 고려하기 위한 방식이다. 여기서는 문장의 순서가 영향이 있는 경우를 감안하고 있으며, 이를 위해 Time Embedding matrix를 별도로 학습하게 된다.
Random Noise
정확히는 Learning time invariance by injecting random noise라고 언급하고 있다. 학습 과정에서 Random empty memory를 넣어줌으로써 Regularization 효과를 얻는 방법이다.
Joint Learning
Linear Start training
Language Modeling
- Question Vector는 0.1로 이루어진 Constant Vector이다. ([0.1, 0.1, ..., 0.1])
- Memory Vector는 각 Word별로 학습하게 된다.
Result & Conclusion
Results
해당 테이블에서는 적용 방법에 따른 결과를 분석하고자 한다. 각 용어는 다음과 같다.
PE: Positional Encoding
LS: Linear Start
RN: Random Noise
joint: Joint Training (for all tasks)
LW: Layer-wise weight tying (명시하지 않을 경우 Adjacent weight tying이 쓰인다)
- PE: 4, 5, 15, 18번 Task에 대해 나아진 결과를 보인다. (BoW에 비해)
- 해당 Task들은 단어의 순서가 특히 중요한 Task들이다.
- LS: local minima를 피하는데 충분히 효과적이었던 것으로 보인다.
- RN: 특별히 효과적으로 보이지는 않지만 꾸준한 성능개션을 보인다.
- Hops #: Hop이 늘어날 수록 계산량이 늘어남에 비해 성능 개션이 이루어진 것을 확인할 수 있다.
위 테이블에서는 Hop이 늘어날수록 얼마나 성능 개선이 이루어지는가에 대해 분석한다. 특히 Supporting Facts없이 얼마나 Target Sentence에 잘 근접할 수 있는가를 나타내고 있다.
여기서는 Memory Network의 Language Modeling에 대한 Task의 성능이 Hidden/Hop/Memory에 따라 얼마나 개선되는가 보여준다.
Conclusion
'풀잎스쿨 NLP Bootcamp' 카테고리의 다른 글
10주차(1) - Teaching Machines to Read and Comprehend (0) | 2019.03.29 |
---|---|
9주차(2) - Ask Me Anything: Dynamic Memory Networks for Natural Language Processing (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 |
7주차(1) - Effective Approaches to Attention-based Neural Machine Translation (0) | 2019.03.06 |