Sequence to Sequence Learning with Neural Networks
Abstract
- Deep Neural Network (DNN)은 labeled training set에는 잘 작동하나, sequence-to-sequence mapping에는 사용하기 어려움
- Multilayered Long Short-Term Memory(LSTM)을 이용하여 input sequence를 지정된 차원의 vector로 mapping → 다시 multilayered LSTM을 이용하여 그 vector로부터 target sequence로 디코딩
- English → French 번역 태스크에서 기존 SOTA 모델에 준하는 좋은 성능
- Source sentence의 단어 순서를 뒤집는 것이 LSTM의 성능 향상에 영향을 줌
Introduction
- DNN은 input과 target이 정해진 dimension의 vector로 인코딩될 수 있는 경우에만 적용 가능함
- 수많은 문제 상황이 길이가 정해지지 않은 sequence의 형태로 표현됨 ex) speech recognition, machine translation, question answering
- Long Short-Term Memory (LSTM) architecture로 해당 문제를 해결할 수 있으며 sequence-to-sequence problem에 적용할 수 있다
- 첫 번째 LSTM은 input sequence를 받아 vector representation을 얻고, 두 번째 LSTM은 그 벡터를 condition으로 이용하여 output sequence를 만들어냄
- LSTM + 80k vocabulary로 WMT’14 English to French translation task에서 34.81의 BLEU score 획득, 당시로서는 NN을 이용한 모델 중 가장 높은 성능
- Long sentence에서 강점을 보임
- Source 문장의 단어 순서를 뒤집는 간단한 trick을 이용하여 SGD로도 긴 문장을 받는 LSTM을 효과적으로 학습시킬 수 있음
The model
RNN
- Feedforward NN을 sequence에 적용하기 위해 일반화한 모델
- input sequence $(x_1, ... , x_t)$가 주어지면, standard RNN은 다음 수식을 반복 적용하여 output $(y_1, ... ,y_n)$을 출력
$$
h_t = \sigma(W^{hx}x_t + W^{hh}h_{t-1})\\y_t = W^{yh}h_t
$$
- input과 output 사이 alignment를 이미 알고 있는 경우 쉽게 적용 가능하나, input/output 길이가 다른 경우 즉 general sequence에 대해서는 적용이 어려움 → input sequence를 RNN을 이용하여 fixed-sized vector로 매핑하고, 그 vector을 다른 RNN을 이용하여 target sequence로 매핑하는 방법으로 해결 가능
- Long-term dependencies의 존재로 인해 Vanilla RNN을 학습시키는 것은 어려움. Gradient vanishing으로 인해 먼 곳에 위치한 정보의 손실이 일어남.
LSTM
- input sequence를 요약하는 Fixed-dimensional vector $v$를 받아 conditional probabilty $p(y_1,...,y_{T'}|x_1,...,x_T)$를 계산
- 각 input sequence는 문장의 끝을 나타내는 특수 토큰인 <EOS>로 끝나도록 함 → 이를 통해 다양한 길이의 sequence를 받을 수 있음
- 예) input sequence가 A, B, C, D, <EOS>로 주어진 경우, LSTM은 이 벡터의 representation을 구한 다음 이를 이용하여 target sequence W, X, Y, Z, <EOS>의 확률을 계산함
$$
p(y_1,...,y_{T'}|x_1,...,x_T) = \prod\limits_{t=1}^{T'}p(y_t|v,y1,...,y_{t-1})
$$
- 논문에서는 input/output에 각기 다른 LSTM을 사용했으며, 4-layer LSTM을 이용함
- input sentence의 문장 순서를 바꾸는 것이 큰 효과를 줌
- a, b, c → $\alpha, \beta, \gamma$ 매핑 대신 c, b, a → $\alpha, \beta, \gamma$ 매핑
- 입력의 앞쪽에 있는 단어들이 출력의 앞쪽에 있는 단어들과 더욱 가까워지는 효과
- (input sequence의 뒤쪽에 있을수록 gradient가 덜 감소하여 representation vector에 미치는 영향이 크기 때문으로 추측 (short term dependency))
Experiments
- Dataset으로 WMT’14 English to French dataset을 사용함 (12M sentence, 348M French words, 304M English words)
- input으로 정방향/역방향 문장 두 가지 경우 모두 실험
- 4-layer Deep LSTM, 1000 cells per layer, 1000-dim word embedding, 160,000 input vocabulary, 80,000 output vocabulary, 380M params
- $\mathcal{S}$가 training set이라고 할 때, 주어진 source 문장 $S$에 대해 올바른 번역 $T$의 log probability를 구하는 것이 training objective
$$
1/|\mathcal{S}| \sum\limits_{(T,S)\in\mathcal{S}}\log p(T|S)
$$
- Training 이후에는 다음과 같이 가장 가능성 높은 translation $\hat{T}$를 예측함
$$
\hat{T} = \arg\max_Tp(T|S)
$$
- Searching 과정에서는 left-to-right beam search decoder를 사용, beam size = 2일 때 가장 효과적 ← 이 부분은 잘 모르므로 추가적으로 찾아볼 예정
- input 문장의 순서를 바꾼 경우 큰 성능 향상
- perplexity: 5.8 → 4.7
- test BLEU score: 25.9 → 30.6
- Baseline 모델과의 비교
- 좌측은 sentence length별 LSTM과 baseline 모델의 성능 비교
우측은 문장 속 희귀 단어의 비율에 따른 LSTM과 baseline 모델의 성능 비교 - 거의 모든 구간에서 LSTM이 baseline보다 성능이 좋음을 확인 가능
- 좌측은 sentence length별 LSTM과 baseline 모델의 성능 비교