논문 구현

참고 영상

1. Introduction

Deep Nueral Network (DNN)은 매우 강력한 머신러닝 모델로, 음성 및 사진 인식과 같은 어려운 문제에서 탁월한 성능을 달성한다. DNN은 적은 단계만으로 많은 양의 계산을 수행할 수 있기 때문에 강력하지만, 그럼에도 불구하고 input과 target이 고정 차원의 벡터로 인코딩될 수 있는 문제에만 적용할 수 있다는 단점이 있다. 많은 문제는 정해지지 않는 길이의 sequence로 가장 잘 표현되기 때문에 이는 매우 큰 제한 사항이다.

Sequence를 다루는 것은 DNN에 있어 어려운 문제인데, input과 output의 dimension이 고정되어 있어야 하기 때문이다. 이 논문에서는 Long Short-Term Memory (LSTM) architecture를 직관적으로 적용하여 일반적인 sequence to sequence problem을 해결할 수 있음을 보여준다. 아이디어는 large fixed dimensional vector representation을 얻기 위해 LSTM을 사용하여 각 timestep에서 input sequence를 읽고 vector로부터 output sequence를 추출하기 위해 또다른 LSTM을 사용하는 것이다. 두 번째 LSTM은 input sequence에 조건이 있는 것을 제외하고는 recurrent neural network language model과 유사하다. 이를 그림으로 표현하면 Fig. 1과 같다.

Figure 1: Our model reads an input sentence "ABC" and produces "WXYZ" as the output sentence.

Figure 1: Our model reads an input sentence "ABC" and produces "WXYZ" as the output sentence.

2. The model

Recurrent Neural Network (RNN)은 feedforward neural network를 sequence로 일반화한 것이다. Sequence of inputs $(x_1, \dots, x_T)$가 주어졌을 때, standard RNN은 다음의 계산을 반복함으로써 sequence of outputs $(y_1, \dots, y_T)$를 계산한다.

$$ \begin{align*} h_t &= \text{sigm}(W^{hx}x_t+W^{hh}h_{t-1}) \\ y_t &= W^{yh}h_t \end{align*} $$

RNN은 입력과 출력 간의 alignment가 미리 알려진 경우에는 sequence를 sequence로 쉽게 mapping할 수 있다. 그러나 input과 output sequence가 다른 길이를 가지며 복잡한 관계를 가지는 경우 RNN을 적용하는 방법은 명확하지 않다.

General sequence learning을 위한 가장 간단한 전략은 input sequence를 하나의 RNN을 사용하여 fixed-sized vector로 mapping한 다음 다른 RNN을 사용하여 벡터를 target sequence로 mapping하는 것이다. RNN은 모든 정보를 제공받기 때문에 원칙적으로 작동할 수 있지만 결과적으로 long term dependency가 발생하기 때문에 RNN을 훈련하기는 어렵다. 그러나 LSTM은 long range temporal dependency를 가진 문제를 학습하는 데 최적화되어 있기 때문에 성공할 가능성이 높다.

LSTM의 목표는 input sequence $(x_1,\dots,x_T)$와 그에 대응되는 output sequence $(y_1,\dots,y_{T′})$에 대해 conditional probability $p(y_1, \dots, y_{T'}|x_1, \dots, x_T)$를 계산하는 것이다. Input sequence $(x_1,\dots,x_T)$를 LSTM에 적용했을 때 마지막 hidden state에서 얻어진 fixed-dimensional representation $v$에 대해 $y_1,\dots,y_{T′}$의 확률을 다음과 같이 계산할 수 있다.

Untitled

이 식에서 $p(y_t|v, y_1, \dots, y_{t-1})$의 분포는 모든 vocabulary 단어에 대한 softmax로 표현된다. 이때 각 문장은 "<EOS>"라는 end-of-sentence symbol으로 끝남으로써 모델이 문장의 길이를 파악할 수 있도록 해준다. 예를 들어 Figure 1에서 LSTM은 input sequence를 "A", "B", "C", "<EOS>"로 표현하고 output sequence를 "W", "X", "Y", "Z", "<EOS>"로 표시하여 확률을 계산하는 것이다.

실제 모델은 위의 설명과 세 가지 중요한 차이점이 있다.

  1. Input sequence와 output sequence에 각각 하나씩 두 개의 다른 LSTM을 사용했다. 이렇게 하면 조금의 computational cost만으로 model parameter의 수를 증가시킬 수 있으며 여러 언어 쌍에서 동시에 LSTM을 훈련시키기가 자연스러워진다.

  2. Deep LSTM이 shallow LSTM보다 훨씬 우수한 성능을 보였으므로 4개의 layer로 된 LSTM을 선택했다.