본문 바로가기

딥러닝/Paper review

[논문 리뷰] End-to-End Memory Networks

논문: https://arxiv.org/abs/1503.08895v5

Abstract

구조 : a form of Memory Network, trained ene-to-end, an extension of RNNsearch,

multiple computational steps(hops)-> improved results

task : question answering, language modeling 

 

* Memory network

https://wikidocs.net/82475

(1) 스토리 문장 Embedding C로 임베딩, 질문 문장 Embedding B로 임베딩 -> 내적을 통해 각 단어 간 유사도  -> 소프트맥스 함수

(2) 스토리 문장 Embedding A로 임베딩 -> 유사도와 덧셈 (어텐션 메커니즘) => 질문 문장과의 유사도를 반영한 스토리 문장 표현

(3) 질문 문장 임베딩한 질문 표현과 Concat -> LSTM과 밀집층(dense layer)의 입력으로 사용 -> 정답 예측

 

* * Attention

디코더에서 출력 단어를 예측하는 매 시점(time step)마다, 인코더에서의 전체 입력 문장을 다시 한 번 참고

단, 전체 입력 문장을 전부 다 동일한 비율로 참고하는 것이 아니라, 해당 시점에서 예측해야할 단어와 연관이 있는 입력 단어 부분을 좀 더 집중(attention)해서 참고

https://wikidocs.net/22893
https://wikidocs.net/22893

 

 

(1) 주어진 '쿼리(Query)'에 대해서 모든 '키(Key)'와의 유사도를 각각 구한다.

(2) 그리고 이 유사도를 가중치로 하여 키와 맵핑되어있는 각각의 '값(Value)'에 반영한다. 

그리고 유사도가 반영된 '값(Value)'을 모두 가중합하여 리턴한다.

 

 

 

*** Dot-Product Attention

https://wikidocs.net/22893
https://wikidocs.net/22893

 

 

1) attention score (초록 원)

현재 디코더의 시점 t에서 단어 예측 위해 

인코더의 모든 은닉 상태 각각(hi)이

디코더의 현 시점 은닉 상태St와

얼마나 유사한지 판단

-> 각 은닉 상태와 St 내적

 

2)Attention Distribution (빨간 분포)

어텐션 스코어의 모음 값에 소프트맥스 함수 적용

-> 모든 값 합하면 1이 되는 확률 분포

-> 어텐션 가중치 

 

 

3)Attention Value

각 인코더의 은닉 상태와 어텐션 가중치값들을 가중합 

-> 어텐션의 최종결과 : 어텐션 값

4) 어텐션 값과 디코더의 t 시점 은닉 상태 (St) 연결 

-> 예측 연산의 입력으로 사용하므로서 인코더로부터 얻은 정보를 활용하여 예측 성능 올라감 

 

* RNN 

순환 신경망 : 은닉층에서 활성화 함수를 지난 값은 오직 출력층 방향으로만 향했던 피드 포워드 신경망과는 달리 출력층 방향으로도 보내면서, 다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징

https://wikidocs.net/22886

은닉층의 메모리 셀은 각각의 시점에서 바로 이전 시점에서의 은닉층의 메모리 셀에서 나온 값(은닉 상태값)을 자신의 입력으로 사용하는 재귀적 활동

 

* QA task 

: 주어진 질문에 대한 text에서 답을 추출하는 것

input: 질문 sentence , text (paragraph)

 

한국외대의 위치는?

한국외국어대학교는 대한민국의 ~~~~~~~~~~이다.

~~~~~~~~~ 이며 서울 동대문구에 위치해 있다. 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

output: 질문에 대한 답을 포함하는 text의 sentence

 

~~~~~~~~~~서울 동대문구에 위치해 있다.

 

* Language modeling task

주어진 문맥을 활용해 다음 단어를 예측

오늘은 -> 날씨가 -> ?

 


Introduction

Two grand challenges

1) multiple computational steps in the completing a task

2) Long dependency in sequential data

 

-> attention 개념, 부가적인 storage 도입

=> end to end로 학습, 기존의 모델보다 unsupervised한 성격의 모델

 


Approach

 

- Single Layer

https://www.quantumdl.com/entry/9%EC%A3%BC%EC%B0%A81-EndtoEnd-Memory-Network

Input memory representation

 

(1) input Xi - mi로 storage에 저장 - Embedding matrix A

(1) Question (query) - Enbedding matrix B - internal state u

(2) 각각의 mi 와 u 곱한 후 softmax (각 sentence와 query질문 의 연관성 계산)

Ouput memory representation

 

(1) input Xi - Embedding matrix C

(2) Pi와 output vecter(c) 가중평균 -> 최종 response

 

 

* attention

 

 

 

Generating the final prediction

 

(1) 질문 벡터 embedding 한 u + o

(2) 가중치 행렬 W(o+u)

(3) 소프트 맥스함수

총 4개의 parameter matrix A,B,C,W가 있고 학습의 경우 prediction 값인 â 와 실제 label a를 비교한

cross-entropy loss 함수를 사용하고 update는 SGD를 사용

 

 

 

- Multiple Layers

위의 layer를 K개 쌓음

 

* 첫 번째 layer를 제외한 layer의 질문(query) 벡터

 이전 layer의 output vector인 o와 query vector 인 u를 더한 값을 사용

* 각 layer는 모두 다른 embedding matrix A,C를 사용

 

* parameter를 줄이기 위한 방법

(1) Adjacent : 인접한 embedding matrix를 같은 weight를 사용하게 함으로써 paramter 수를 줄이는 방법

https://reniew.github.io/46/


(2) Layer-wise(RNN-like) : AC들이 각각 모두 같은 matrix를 사용

이 경우, 추가적인  linear mapping 함수 H 사용

 

 

 

참고자료:

https://wikidocs.net/book/2155

https://reniew.github.io/46/