-
[논문 리뷰] Sequence to Sequence Learning with Neural Networks - Seq2Seq논문 리뷰 2024. 7. 21. 16:16
[논문 링크]
Sequence to Sequence Learning with Neural Networks
[세줄 요약]
LSTM를 encode-decoder 형식으로 사용하는 Seq2Seq 모델을 개발함.
Seq2Seq는 context vector의 도입을 통해 encoder과 decoder 간의 활용성을 높임.
Input sequence를 거꾸로 input하는 것은 성능을 향상시킴.
[정리]
[Abstract]
End to end sequence를 학습할 수 있는 Seq2Seq architecture를 제시함.
Input sequence를 LSTM을 통해 의미를 포함하는 fixed vector 추출하고 이를 또다른 LSTM에 넣어 target sequence를 decode하는 방식을 이용함.
Input sequence의 순서를 Reverse하는 것으로 LSTM의 performance를 향상함.
[Model]
1) RNN
Input: x1~xT -> Output y1~yT
[문제점]
1. Input과 Output의 Length가 다를 경우를 고려하지 못한다.
2. LongTerm dependencies. 긴 문장을 처리하지 못한다.
장기기억에 문제를 가지고 있는 RNN의 방식을 해결한 LSTM이 기존의 모델이었다. 그럼에도 LSTM는 기계번역시 한계가 존재하였다.
[기계번역시 LSTM의 한계]
1) 문장의 어순을 고려하지 못한다.
2) 입출력되는 단어의 갯수가 같다.
Ex)
Thank you so much를 한국어로 변역할 시, 입출력되는 단어가 다르고, 어순 또한 달라지는 것을 확인할 수 있다. 이러한 문제를 해결하기 위해 Seq2Seq를 제시했다.
이러한 이유가 나타나는 이유는 Input과 Output의 Vector가 fixed되어 있기 때문이다.
DNNs can only be applied to problems whose inputs and targets can be sensibly encoded with vectors of fixed dimensionality.
[Seq2Seq]
위의 문제를 해결하기 위한 아이디어가 Seq2Seq model이다.
1) Input sentence를 LSTM에 넣어 Context vector(large fixed dimensional vector representation)를 얻는다.
2) Context vector를 다른 LSTM에 넣어 output sequence를 추출한다.
ABC : input sequence
W: context vector
XYZ: output sequence
<EOS>: end of sequence - 출력될 시 문장의 끝을 의미한다.
예시를 들어 설명하자면,
1) Encoder
Thank you -> 고마워 로 번역할 때
각 단어를 Word2Vec에 기반하여 Embedding 한 후 이를 LSTM에 넣어 context vector를 추출한다.
위처럼 여러 LSTM layer를 형성해서 deep neural network를 만들 수 있다. 마지막에 context vector는 그 전까지의 input sequence의 의미 정보를 포함한다. 여기까지가 Encoder이다.
2) Decoder
Context vector를 이용하여 output sequence를 추출한다. <eos>를 넣어서 softmax를 통해 단어를 선정하고 이를 통해 <EOS>가 출력할 때까지 output sequence를 추출한다.
Input의 길이과 Output의 길이가 다르다는 것을 확인할 수 있다.
v: context vector를 통해 output sequence를 예측하는 것을 확인할 수 있다.
[Experiments]
English to French machine translation task
source language의 160,000 단어, target language의 80000 단어를 사용하였다.
[Decoding and Rescoring]
학습할 때는 위와 같은 log probability를 최대화하는 방향으로 학습한다.
S: source sentence 주어진 input
T: correct translation 정답으로하는 output
S: training set
학습한 후에는 주어진 source sentence에 대해서 가장 잘 번역된 T를 선택하여 이를 출력한다.
Decoding할 때 Left to right beam search 방식을 사용한다.
Beam search에 대해 설명하자면, small number B 개를 후보군으로 삼아, 다음 단어를 decode할 때마다, log probability가 높은 B개를 찾아 <EOS>가 나올때까지 decoding하는 방식이다.
(224n lecture 7: https://velog.io/@e1kim/224N-Lecture-6-review 에 쉽게 설명되어있다.)
[Reversing the source sentences]
Input sentence a b c 일 때, c b a 형식으로 input 하는 것이다.
Input sentence를 거꾸로 입력했을 때 더 좋은 결과를 보였다. LSTM test perplexity는 5.8에서 4.7, BLEU socre는 25.9에서 30.6으로 향상하였다.
논문에서는 정확한 이유를 설명하지 못하고 다음과 같이 추측하였다.
input sentence를 거꾸로 입력하면 순서대로 입력했을 때에 비해, 단어 사이의 average distance는 같지만, minimal time lag가 감소하기 때문에 좋은 결과가 나타난 것으로 본다.
[Result]
5 reversed LSTM with beam size 12가 좋은 결과를 보였다.
[한계]
아무리 Context vector가 seq2seq의 모든 의미를 담아내기는 어렵다. 이러한 문제를 해결하기 위해 attention를 사용한다.
'논문 리뷰' 카테고리의 다른 글