-
[Seq2Seq] Sequence to Sequence Learning with Neural Networks (NIPS 2014)Paper Review(논문이야기) 2024. 2. 15. 22:52
Seq2Seq 논문의 의미는 기존의 통계적 기계번역(SMT) 모델보다 딥러닝 기법의 기계번역 모델의 성능이 더 높게 나옴을 보여줌으로서, 그 흐름의 기점이 되었다는데에 중점을 두면 좋은 것 같다.
https://arxiv.org/abs/1409.3215
이전 RNN(https://secundo.tistory.com/91) 관련 글에서 밝힌 것처럼, 기본적인 Seq2Seq모델은 RNN의 many to many 구조와 유사한 형태이다. 즉, Sequence data를 받아 Sequence data를 출력하는 task에 이용되는 구조로 대표적으로 기계번역 및 쳇봇(질문을 입력으로 받아 답변을 출력하는) 사용가능하다.
특히 Seq2Seq의 가장 특징적인부분은 Encoder와 Decoder 부분으로, 입력과 출력을 처리하는 부분이 분리되어 있다는 점과(context vector를 전달하기는 함), Encoder와 Decoder는 비슷한 아키텍쳐(LSTM, RNN 등)을 가지지만, 독립된(공유하지 않은) 파라미터를 가지는다는 점이다.
논문에서의 목표 formula는 아래 식과 같은데, input 모두 주어지지 않은 상황에서도(초기 v만 주어짐) 생성한 output y를 이용해 기존과 동일하게 text를 생성해내는 것이다. 특히 input의 길이와 ouput의 길이가 가변적으로 변하는(즉, 둘의 크기가 다른 경우에도) 상황에 있어서(sequencal 한 data)도 문제 없이 적용하고자 했다(기존의 RNN에서는 이에 대응하기 어려웠다고 함)
이는 꽤나 주요한 문제인데, 아래의 예시만 보더라도 기계번역에서 그 입력과 출력의 결과물의 길이가 다른 경우가 많으며, 동시에 영어와 한국어처럼 그 어순이 다른 경우(SVO, SOV)가 많기 때문이다.
input의 경우 가변길이라고는 하지만, 실제 minibatch를 구성함에 있어서는 비슷한 길이의 sequence를 묶어주었다고 함(차후 training detail 참고)
이를 위해 Seq2Seq에서는 충분히 큰 크기에 고정된 차원의 vector(large fized dimensional data)를 Encoder에서 생성하여 이를 다른 LSTM, 즉, Decoder에 입력하는 것으로 해결하고자 한다. 특히 LSTM은 장기기억성 문제를 극복한 cell로 이를 적용하는데 큰 문제가 없었다고 한다.
아래의 그림은 Seq2Seq의 구조를 간략화 한 것이다. 구조를 보면 Encoder에서 Sequnce를 입력으로 받아, 고정된 크기의 Context vector를 출력하는 것을 알 수 있다. 이는 결국, Encoder에서 전달하는 state라고 볼 수 있을 것이다.
Decoder는 EOS, 즉, End of Sentence를 입력으로 받아(Start of sentence SOS를 첫 입력으로 받아도 무방하지만, 본 노문에서는 이를 따로 입력하지 않음) EOS를 출력으로 낼 때까지 결과를 출력한다.
Encoder
Encoder의 경우 위에서 말한 것과 동일하게, source문장을 받아 고정된 크기의 context vector로 만들어 낸다. 이때, input을 그대로 입력하지 않고, word embdeddig시켜 차원 축소 및 계산량 감소의 효과를 누리는 경우도 있다.
Imput 된 vector를 특정한 hyperplane의 한 점에(vector) projecton시키는 작업이라고도 할 수 있다.
(출처: Ki Hyun Kim님의 NLP with pythorch gitbook, 링크첨부)
Decoder
입력된 contex vector를 input으로 하여 위에서 제시한 목적식을 최대화 하는 함수이다.
조금 더 자세히 풀어보면, training에서는 아래의 log probability를 최대화하게 하였다. 즉, Source sentence에 관하여 올바른 translation 결과값을 만들어내게끔 하였다.
이후, 학습이 완료되었을 때에 decoder를 통해 target문장을 만들어 낼때, 즉, Source 입력시 가장 비슷한 T를 출력하게 translation을 생성하게하여함으로 아래 수식으로 이를 표현 가능하다.
이때 사용한 기법이 Beam search이다.
Beam Search?
본 논문에서 사용된 방법 중 Beam search라는 방법이 있는데, 자연어처리 task에서 많이 사용되는 방법이라 따로 정리하였다. 간략하게 말해 모든 후보 sequence를 생성하고, 이때, 각 후보들은 확률을 곱하여 점수를 측정한다. 최종적으로 가장 확률이 높은 k개 시퀀스를 선택하고 다른 후보들은 제거하면서 시퀀스가 모두 종료될 때까지 이를 반복하는 방법이다.
Training details & Analysis
본 논문에서는 1000 dim의 word embedding을 이용했고, 160,000개의 input 단어와 80,000 ouput 단어로 이를 구성했다고 한다. 몇몇 기법들이 있지만 가장 주요한 기법은 아래와 같다.
• Different sentences have different lengths. Most sentences are short (e.g., length 20-30) but some sentences are long (e.g., length > 100), so a minibatch of 128 randomly chosen training sentences will have many short sentences and few long sentences, and as a result, much of the computation in the minibatch is wasted. To address this problem, we made sure that all sentences in a minibatch are roughly of the same length, yielding a 2x speedup.
즉, 다른 문장들의 경우 다른 크기의 길이를 가짐으로, random하게 minibatch를 구성할 때, padding이 너무 많이 생기게 되어 minibatch computation이 낭비된다고 한다. 이를 해결하기 위해 비슷한 길이를 가지는 문장들로 minibatch를 구성하였고, 이것이 2배의 속도향상을 보여주었다고 한다.
위의 이미지는, 해당하는 문장들을 각각 입력시텼을 때, LSTM의 hidden state를 PCA를 이용해 projection 한 것이다. 보면 비슷한 의미의 문장들이 비슷한 백터에 위치함을 알 수 있다.
추가적으로 논문의 결과에서 특이한 점은 Input sequence의 경우, 입력 순서를 뒤집었을 때 좋은 성능을 보였다고 한다. 이는 대다수의 Sequence에서 첫번째 단어들이 유사성을 띄기에, 뒤집었을 때 해당하는 단어들의 특징을 더 잘 반영하기에 그런 것으로 보인다고 한다. 이 때 출력 문장의 경우는 출력 순서를 바꾸지는 않는다.
논문에서는 모델의 성과 지표로 BLEU 지표를 사용하였고, WMT dataset을 이용(기계번역 쪽 대표적 data)하였다. 또한 모델의 경우 Multilayered(논문에서는 4번) LSTM을 사용하였다고 한다.
'Paper Review(논문이야기)' 카테고리의 다른 글