Paper: Sequence to Sequence Learning with Neural Networks
DNN: 음성 인식이나 visual 객체 인식과 같은 어려운 문제에서도 훌륭한 성능을 보이는 매우 강력한 머신 러닝 모델.
특징: DNN은 적은 단계로 임의의 병렬 연산을 수행할 수 있을 만큼 유연하고 강력함.
다만, 고정된 크기의 input(입력) & target(출력) 벡터를 요구한다는 한계가 존재함. 동시에, 시퀀스 데이터는 길이가 가변적이기 때문에, DNN의 고정된 크기의 input & target 벡터 요구 사항과 맞지 않아, 처리가 어렵다는 문제 존재.
→ 시퀀스 데이터를 효과적으로 처리하고 매핑할 수 있는 방법이 필요함
LSTM 아키텍처를 사용하여 시퀀스 투 시퀀스 문제를 해결할 수 있음
어떻게?

하나의 LSTM을 사용해서 입력 시퀀스를 시간 단위로 하나씩 읽어서, fixed-dimensional vector을 표현함.
그 후, 또 다른 LSTM을 사용해서 그 벡터로부터 output 시퀀스를 추출해냄
LSTM의 유용한 점은 가변 길이의 input 문장을 고정된 차원의 벡터 표현으로 매핑하는 것을 학습한다는 것.
번역(translation)이라는 것은 원본 문장의 의미를 다른 말로 바꾸어 말하는 경향이 있음.
따라서, 번역의 목표는 LSTM이 문장의 의미를 포착하여 문장 표현을 할 수 있도록 함.
즉, 비슷한 의미의 문장은 서로 가깝게 나타내고, 다른 의미의 문장은 서로 떨어져서 나타내는 것임.
모델이 단어의 순서에 대한 인식이 있음과 능동태와 수동태에 대해 상당히 강한 성능을 보임을 나타냄.
RNN(순환 신경망, Recurrent Neural Network): feedforward 신경망을 시퀀스에 일반화한 모델
입력 시퀀스(x1,...,xT)가 주어졌을 때, 표준 RNN은 시퀀스 아웃풋(y1,...,yT)을 다음 방정식을 반복하여 계산함.

RNN은 입력과 출력 간의 정렬이 이미 알려진 경우, 쉽게 시퀀스 투 시퀀스로 매핑할 수 있음.
다만, 입/출력 시퀀스의 길이가 다르고, 복잡한 관계를 가진 문제에 RNN을 적용하기는 쉽지 않음.
일반적으로 RNN 하나를 사용해서 input sequence를 고정된 크기의 벡터로 매핑하고, 다른 RNN을 통해, 해당 벡터를 target sequence로 매핑하는 것이 가장 심플한 방법임.
그러나, 이 방식은 long term dependencies를 발생시키기 때문에, RNN을 학습시키는 것이 어려움.
이때 LSTM은 long term dependencies이 있는 문제를 학습할 수 있음!
LSTM
LSTM의 목표는 조건부 확률을 추정하는 것임.
이때, (x1,...,xT)는 input sequence, (y1,...,yT')는 output sequence임.(T'길이는 T와 다를 수 있음)
먼저, input sequence (x1,...,xT)를 처리하여 fixed layer representation v를 구함.
(이때 v는 LSTM의 마지막 hidden state에서 구해짐)
그 후, 표준 LSTM-LM 공식을 이용하여 (y1,...,yT')의 확률을 계산함.
(이때, LSTM-LM의 초기 hidden state는 input sequence (x1,...,xT)의 representation v로 설정됨)
위 방정식을 통해, 각 p(yt|v,y1,...,yT-1)의 분포는 vocabulary의 모든 단어에 대해 활성화 함수로 표현됨.

각 문장은 반드시 <EOS(End-Of-Sentence)>로 끝나야 함.
< EOS >는 모델이 모든 가능한 길이의 시퀀스에 대하여 분포를 정의할 수 있도록 함.
위 Figure 1에서 확인해 보자면, LSTM은 각 입력 시퀀스인 A, B, C, < EOS >의 representation을 계산함.
그리고 이 representation을 사용해서 출력 시퀀스인 W, X, Y, Z, < EOS >의 확률을 계산하는 것임.
본 논문에서의 Seq2Seq 모델
본 논문에서의 모델을 experiment에서는 WMT'14 English to French MT task에 두 가지 방법으로 적용했음.
1. 직접 번역(directly translate): 레퍼런스 SMT(통계적 기계 번역, Statistical Machine Translation)를 사용하지 않고, input sentence를 직접 번역함.
2. SMT baseline의 n-best lists* 를 rescore하는데 사용함.
n-best lists*: SMT에서 input sentence 번역할 때, 한 가지 ver. 번역만 제공하는 게 아니라, 상위 n개 ver.의 후보를 생성해서 list 만들어 놓는 것임. 이 list는 확률을 기반해서 각 후보들에 대해 점수를 매김.
↑ n-best lists 구조 예시
WMT'14 English to French dataset 사용했으며, 총 1,200만 문장으로 구성된 데이터에서 학습.
해당 데이터는 약 3억 4,800만 개의 프랑스 단어 & 3억 400만 개의 영어 단어 포함.
source language(영어): 빈도 가장 높은 16만 개 단어 사용.
target language(프랑스어): 빈도 가장 높은 8만 개 단어 사용.
본 실험의 core: 많은 sentence pairs를 통해 Large Deep LSTM을 학습시키는 것!
source sentence S가 주어졌을 때, 정확한 번역 T의 로그 확률을 최대화하는 방법으로 학습됨.

학습 완료되면, LSTM에 따라서 가장 그럴싸한 번역을 찾음으로써 translations를 생성함.

simple left-to-right beam search decoder는 small number B의 부분 가설(번역의 앞 부분)을 유지하는 디코더인데, 이것을 사용해서 가장 그럴싸한 번역을 찾음.
각 timestep 마다, 빔 내에 있는 각 부분의 가설을 vocabulary의 모든 가능한 단어로 확장함.
이때 가설의 수가 크게 증가되기에, 모델의 로그 확률에 따라서 가장 그럴싸한 B개 가설 빼고 모두 버림.
< EOS > 기호가 가설에 추가될 때, 해당 가설들은 빔에서 삭제되고, complete hypotheses 집합에 추가됨.
이 디코더가 근사치값이긴 해도, 구현하기가 정말 simple함.
LSTM이 long-term dependencies문제를 해결할 수 있지만, source sentences가 반전되었을 때 LSTM이 더 잘 학습한다는 것을 발견함.
아무래도, short term dependencies이 데이터셋에 도입되었기 때문일 것임.
일반적으로, 우리가 소스 문장과 타켓 문장을 합치면, 소스 문장의 각 단어들은 타겟 문장에서 대응되는 단어와 거리가 멈(far)...
→ minimal time lag(최소 시간 지연) 문제를 갖게 됨.
단!!!
Reversing the Source Sentences을 통해
→ 소스 언어와 타겟 언어에서 대응하는 단어들 간의 평균 거리는 변하지 않음!
근데 이제 소스 언어의 처음 몇 단어는 타겟 언어의 처음 몇 단어와 매우 close해짐.
→ minimal time lag(최소 시간 지연) 문제가 아주 줄어들게 됨.
=> backpropagation(역전파)가 소스 문장과 타겟 문장 간의 establishing communication을 더 쉽게 학습할 수 있고, 궁극적으로 상당한 전체 성능 향상을 이끌어냄.
본 실험에서 8개의 GPU로 모델을 병렬화를 구현함.
결과
: 기존 단일 GPU에서 초당 약 1,700 단어를 처리했는데, 병렬화를 통해 초당 약 6,300 단어 처리가 가능했음
즉, 병렬화 작업은 학습 속도 향상을 시켜서 효율적인 training을 가능하게 한다는 것.

결과적으로 LSTM 앙상블을 사용했을 때(random initializations & random order of minibatches) 가장 좋은 성능을 보임.
LSTM 앙상블 성능이 WMT'14 system의 성능보다 좋지는 못했지만, pure neural translation system(완전 신경망 번역 시스템)이 구문 기반인 SMT(통계적 기계 번역, Statistical Machine Translation)를 대규모 MTtask(기계 번역 작업, Machine Translation task)에서 상당한 margin으로 '처음' 뛰어 넘음.
long sentences에서도 모델이 좋은 성능을 발휘했음을 확인할 수 있음.
본 모델은 단어 시퀀스(sequence of words)를 고정된 차원의 벡터(fixed-dimensional vector)로 변환할 수 있음.
Figure 2에서 볼 수 있듯, order of words(좌측)에는 민감(sensitive)함과 동시에 active/passive voice(우측)에는 상대적으로 둔감(insensitive)함.
본 논문에서는 거대한 MT task에서 vocabulary에 제한이 없는 표준 SMT-based System을 뛰어 넘는 Large Deep LSTM(제한된 vocabulary & 간단 구조)을 제시했음.
특히, 소스 문장에서 reversing the words를 했을 때, 성능 향상이 두드러짐.
short term dependencies이 최대화가 되도록 하여 학습 문제를 훨씬 더 simple하게 만들 수 있다는 것을 확인할 수 있었음.
또한, LSTM이 매우 긴 문장을 정확하게 번역할 수 있는 능력도 확인함.
reversed dataset을 학습한 LSTM은 긴 문장을 번역할 때, 어려움을 거의 겪지 않음.
결론적으로, 본 모델이 SMT system을 뛰어넘을 수 있음을 입증함.
이러한 접근 방식이 다른 sequence to sequence 문제에서도 적용되어 뛰어난 성능을 구현할 수 있을 것임.