https://arxiv.org/abs/1409.3215
Sequence to Sequence Learning with Neural Networks
Deep Neural Networks (DNNs) are powerful models that have achieved excellent performance on difficult learning tasks. Although DNNs work well whenever large labeled training sets are available, they cannot be used to map sequences to sequences. In this pap
arxiv.org
Seq2Seq : Sequence to Sequence Learning with Neural Networks(NIPS, 2014)
기존 RNN, LSTM을 통한 기계번역은 source language sentence의 토큰 하나하나를 입력값으로 보고, 입력된 벡터의 개수와 동일한 개수의 출력값을 내보낸다. Source language가 한국어이고 target language가 영어인 기계번역 모델에서의 예시는 다음과 같다.
입력된 문장(1) : "나는 물을 마신다"
출력된 문장(1) : "I drink water"
입력된 문장(2) : "날씨가 좋다"
올바른 출력된 문장(2) : "The weather is nice"
잘못된 출력된 문장(2) : "Weather nice"
입력된 문장(1) 과 출력된 문장(1)을 확인하였을 때, 입력 문장과 동일한 개수의 토큰을 가진 출력된 문장을 확인할 수 있다. 반면에, 입력된 문장(2)의 경우 동일한 개수의 토큰을 가진 잘못된 출력된 문장(2)와 올바른 출력된 문장(2)을 비교하였을 경우 입력된 문장과 토큰의 개수가 같은 경우 어색한 문장으로 번역되는 것을 확인할 수 있다.
이러한 문제점을, Seq2Seq는 개별의 토큰이 아니라 문장 전체를 하나의 벡터로 처리하기 때문에 source language sentence와 target language sentence의 토큰 개수가 달라도 동작하게 된다.
Seq2Seq 구조
Seq2Seq는 두 개의 서로 다른 LSTM모델을 각각 Encoder와 Decoder로 정의하였다.
위 그림은 Seq2Seq의 구조이다. 첫 번째 LSTM모델인 Encoder는 입력 문장의 끝인 <eos>까지 "ABC"를 역순으로 입력받아 처리한 후 마지막 시점인 hidden state vector를 context vector로 사용하고 두 번째 LSTM모델인 Decoder는 "WXYZ"를 출력한다.
본 논문에서는 성능 향상을 위해 RNN이 아닌 LSTM으로 Encoder와 Decoder를 설계하였다.
Encoder와 Decoder는 서로 다른 파라미터를 가지고 있으며, 4개의 층으로 깊은 신경망 모델을 사용하였다.
Seq2Seq의 특징으로 테스트할 때 source language의 토큰 순서를 뒤집으면 성능이 향상된다는 것으로, 실제로 LSTM의 perplexity는 5.8에서 4.7로 감소하였고, BLEU score는 25.9에서 30.6으로 향상되었다.
<sos> : "start of sequence"
<eos> : "end of sequence"
Encoder :
- 입력 Sequence의 정보를 압축해 context vector(고정된 하나의 벡터)로 만드는 역할
- Encoder LSTM모델의 마지막 시점 hidden state vector == context vector
Decoder :
- context vector를 활용해 출력 sequence를 만드는 역할
- Decoder LSTM모델의 첫 번째 시점 hidden state vector == context vector
Seq2Seq의 한계
- 장기 의존성 문제 : Seq2Seq는 LSTM모델과 같은 RNN을 사용하여 긴 문장을 처리할 때 처음 입력된 정보가 점차 잊혀지면서 장기 의존성을 유지하기 어렵다.(입력 데이터가 길어지게 되면 성능이 확연하게 떨어진다.)
- 고정된 길이의 context vector : 고정된 벡터 하나로 문장의 모든 정보를 압축해서 전달을 하기 때문에 중요한 정보가 손실되거나 decoder의 품질이 떨어질 수 있다.
- 병렬 처리 문제 : 입력이 차례대로 들어가 계산을 병렬적으로 처리하지 못한다.
- 이를 극복하기 위해 제안된 방법이 Attention Mechanism이다.
'DL > NLP' 카테고리의 다른 글
Attention Mechanism (0) | 2024.11.18 |
---|---|
Seq2Seq를 활용한 논리연산(AND, OR, XOR) (0) | 2024.11.08 |
LSTM, GRU 간단 정리 (5) | 2024.10.08 |
RNN (0) | 2024.10.08 |