Seq2Seq¶
Seq2Seq Model¶
입력 문장을 읽어들이는 RNN은 ENCODER라고 부르고 출력문장을 순차적으로 단어 하나씩 생성하는 RNN를 DECODER라고 부른다. ENCODER와 DECODER는 파라미터를 공유하지 않는다. 위에 RNN의 세부 구조를 볼때 LSTM를 채용한 것을 볼 수 있다.
ENCODER의 마지막 단어까지 읽어 들인 후 그 이후에 나오는 hidden state vector 즉, ENCODER 마지막 time step의 hidden state vector는 DECODER RNN에 $h_{0}$로 들어간다. 다시 말해 $h_{0}$는 DECODER의 첫번째 time step에 입력으로 주어지는 이전 time step의 hidden state값이 된다.
DECODER에 처음 입력 값으로 특수한 문자인
💡 with Attention¶
Core idea: decoder의 각 time step에서 source sequence의 특정 부분에 초점을 맞춘다.
위 그림에서 보면 encoder와 decoder의 hidden state vector의 dim은 4이다.
decoder hidden state와 attention output을 Concatenate하고 이를 사용하여 $\hat{y_{1}}$를 예측하게된다.
그 다음 부터 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의 값을 예측한다.
여기서 유사도(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 |