Seq2Seq

Seq2Seq


Seq2Seq Model

image.png

입력 문장을 읽어들이는 RNN은 ENCODER라고 부르고 출력문장을 순차적으로 단어 하나씩 생성하는 RNN를 DECODER라고 부른다. ENCODERDECODER는 파라미터를 공유하지 않는다. 위에 RNN의 세부 구조를 볼때 LSTM를 채용한 것을 볼 수 있다.


image.png

ENCODER의 마지막 단어까지 읽어 들인 후 그 이후에 나오는 hidden state vector 즉, ENCODER 마지막 time step의 hidden state vector는 DECODER RNN에 $h_{0}$로 들어간다. 다시 말해 $h_{0}$는 DECODER의 첫번째 time step에 입력으로 주어지는 이전 time step의 hidden state값이 된다.


image.png

DECODER에 처음 입력 값으로 특수한 문자인 토큰를 입력 받아 첫 문장을 예측하고 문장이 끝나는 시점은 마지막에 특수 문자인 토큰이 생성되면 문장의 끝이 된다.



💡 with Attention

Core idea: decoder의 각 time step에서 source sequence의 특정 부분에 초점을 맞춘다.

image.png

위 그림에서 보면 encoder와 decoder의 hidden state vector의 dim은 4이다.



image.png

decoder hidden state와 attention output을 Concatenate하고 이를 사용하여 $\hat{y_{1}}$를 예측하게된다.


image.png

그 다음 부터 decoder는 Teacher forcing방법으로 입력이 들어오고 그 전 time step의 hidden state값을 이용하여 현재의 hidden state값을 생성한다. 그 이후 encoder hidden state vector와 각각 내적을 계산하여 Attention scores값을 얻는다. 이 값을 $softmax$를 통과 시켜서 나온 값이 Attention distribution(Attention vector라고도 함)이 된다. $softmax$를 통과 시켰기 때문에 합이 1이되는 가중치 벡터가 되고 이 벡터를 이용하여 각각의 encoder hidden state값과 곱해서 가중 평균으로 나오는 값이 Attention output이 된다. 이 값과 decoder에서 나온 hidden state값을 통해서 현재 time step의 값을 예측한다.


image.png

여기서 유사도(Attention score)를 구하는 방식은 내적뿐만 아나라 다른 방법도 존재한다.

  • dot product
  • general dot product
  • concat

여기서 concat 방식은 $h_{t}와 \bar{h_{s}}$를 합쳐서 linear layer거치는 방식으로 score를 계산한다.

'AI > 이론' 카테고리의 다른 글

Advanced Self-Supervised Pre-training Models  (0) 2021.02.19
Self-Supervised Pre-training Models  (0) 2021.02.19
Transformer 이론  (0) 2021.02.18
Beam search and BLEU  (0) 2021.02.17
LSTM and GRU  (0) 2021.02.16
RNN and Language modeling  (0) 2021.02.16
Bag of Words  (0) 2021.02.15
Word Embedding  (0) 2021.02.15

+ Recent posts