【NLP-1 논문 리뷰】Neural Machine Translation by Jointly Learning to Align and Translate

* 해당 글은 작성자의 복습을 위한 포스팅입니다

 


$\mathscr{A}$ Intro

본 논문은 Yoshua Bengio, 조경현 교수님이 참여하셨고, Attention 기법의 시초라고 볼 수 있다. 

 

2013년 정도 부터 Neural Machine Traslation (NMT) 이 기계번역 (machine translation) 영역에서 좋은 효과를 보이고 있어 많이 연구되고, 사용되고 있다. NMT의 대표적인 모델로는 encoder-decoder가 많이 사용되었는데, 이는 기존 encoder-decoder 특징을 그대로 사용하고 있다. Encoder를 통해 문장을 fixed-length latent vector로 변환하고, latent vector는 decoder를 통해 우리가 원하는 결과(번역)를 얻을 수 있다.

 

하지만 이런 encoder-decoder의 가장 큰 문제는 어떠한 길이의 문장이라도 encoder를 통해 정해진 길이의 latent space로 encoding 되기 때문에, 이 과정에서 큰 손실이 일어날 수 있다. 입력 문장이 길면 길수록 더 큰 손실이 일어나며 성능도 빠르게 떨어지는 현상을 보인다.

 

이 논문에서 주장하는 가장 중요한 포인트는 기존 encoder-decoder와 달리 "모든 입력 문장을 fixed-length latent vector로 변환하지 않고, 입력 문장을 sequence of vectors로 encoding한 뒤, 선택적으로 latent vector의 subset을 골라 decoding을 진행한다" (align & translate)는 것이다. 이럴 경우, 문장 정보를 한 곳에 몰아 넣는 것을 피할 수 있고, 긴 문장을 입력 받아도 좋은 성능을 보일 수 있다.

 

본 논문의 기본이 되는 RNN Encoder-Decoder의 자세한 식은 논문을 참고하면 되겠다. 아래 PPT 슬라이드는 NMT Baseline을 정리해놓은 것이다.

Figure 1. NMT baseline encoder-decoder.


$\mathscr{B}$ Method

본 논문은 기존 encoder-decoder를 발전시켜 새로운 architecture를 소개하고 있다. encoder와 decoder 각각 다른 기법을 적용했다.

 1. Decoder: General Description

이해를 돕기위해 Figure 1에 나오는 notaion을 살펴보자. 

$f, q$: non-linear functions

$h_t$: $t$ 시간의 Encoder의 hidden state

$s_t$: $t$ 시간의 Decoder의 hidden state

$y_t$: $t$ 시간의 예측 결과 (output)

$c$: context vector (latent)

 

기존 encoder-decoder에서 사용되었던 output $y$에 대한 확률(식 (1))과 달리, 새로운 식 (2)을 정의한다.

$$p(y_i|y_1,\ldots,y_{i-1},c)=g(y_{i_1},s_t,c)\tag{1}$$

$$p(y_i|y_1,\ldots,y_{i-1},x)=g(y_{i-1},s_i,c_i)\tag{2}$$

이 때, $s_i=f(s_{i-1}, y_{i-1}, c_i)$ 이다. 식 (2)을 풀어 설명하면, $i$ 시간에서 새로운 output $y_i$의 확률은 $i-1$ 시간의 output, $i$ 시간의 decoder의 hidden state 와 context vector에 의해 결정된다. 기존 encoder-decoder의 식 (1)과 다른 점은 output $y_i$가 context vector 전체 $(c)$가 아닌 $i$ 시간에 해당하는 context vector에 영향을 받는다는 것이다. $c_i$는 encoder hidden state $(h_1,\cdots,h_{T_x})$에 영향을 받는데, 이 때, $h_i$는 입력 문장에 대한 모든 정보를 포함하고 있지만 그 중에서도 $i$ 번째 단어에 더 강한 focus를 두고 있다. $i$ 시간의 context vector $c_i$는 식(3)과 같이 encoder hidden layer들의 weighted sum으로 구할 수 있다.

$$c_i=\sum_{j=1}^{T_x}\alpha_{ij}h_j\tag{3}$$

식 (3)에 사용된 $\alpha_{ij}$는 hidden state $h_j$에 해당하는 weight 이고 식 (4)와 같이 계산된다.

$$\alpha_{ij}=\frac{exp(e_{ij}}{\sum_{k=1}^{T_x}exp(e_{ik})}\tag{4}$$

마지막으로 식 (4)에 사용되는 $e$는 Alignment Score라 부르며 식 (5)로 표현한다.

$$e_{ij}=a(s_{i-1}, h_j)\tag{5}$$

이 alignment score는 현재 많이 사용되고 있는 attention score랑 같은 역할을 하는 값으로, $j$ 위치에 있는 input 값이 $i$ 위치에 있는 output과 얼마나 많은 연관이 있는지 수치적으로 나타내준다. 식 (5)에서, $a$는  feedforwad neural network로 구성된 alignment model이라 부르며 다른 구성 요소들과 동시에 학습된다. 

 

위의 복잡한 내용을 간단히 정리하면 다음과 같다.

 

target word $y_i$를 구하기 위해 context vector 전체가 아닌, $y_i$와 가장 관련 깊은 context vector $c_i$를 사용한다. 이 때, decoder의 $i-1$ 위치의 hidden state 값과 encoder의 모든 위치의 hidden state 값들의 alignment score를 모두 계산하여 weighted sum을 해준다. 이럼으로써, decoder의 $i-1$ 위치의 hidden state 값이 encoder 전체 hidden state와 얼마나 많은 상관관계가 있는지 $c_i$로 표현할 수 있다. 즉, output의 $i-1$번 째 단어가 입력 문장의 각 단어와 얼마나 연관성이 있는지를 반영하여 $i$번 째 단어를 출력한다. (간단히 이해하고자 정리한 것인데, 여전히 복잡하다.)

 

 

2. Encoder: Bidirectional RNN for Annotating Sequences

기존 RNN은 앞 단어가 뒤 단어 (오른쪽 방향) 에만 영향을 끼치는 모델이다. 본 논문은 앞에서 뒤 뿐만 아니라, 뒤에서 앞으로도 반영하도록 하기 위해 bidirectional RNN (BiRNN)을 사용한다. BiRNN은 말 그대로 forward RNN과 backword RNN를 동시에 반영하는 구조다. forward RNN은 기존 RNN과 같이 입력 문장을 앞에서 뒤로, backword RNN은 이와 반대로 뒤에서 앞으로 읽으며 계산을 진행한다. 이 때, forward hidden states는 $(\overrightarrow{h_1}, \cdots, \overrightarrow{h_{T_x}})$ 로 표시하고, backward hidden states는 $(\overleftarrow{h_1}, \cdots, \overleftarrow{h_{T_x}})$로 표시한다. 만약 $x_j$번째 단어에 대한 forward, backward hidden states를 concatenating 한다면 $h_j=[\overrightarrow{h^\top_j} ; \overleftarrow{h^\top_j}]^\top$으로 표시한다. BiRNN을 사용하면, 입력 문장의 앞뒤 단어에 모두 영향을 받기 때문에 더 정확한 정보를 가지고 학습될 수 있다. Figure 2는 본 논문에서 제시한 모델을 나타낸다.

 

Figure 2. The graphical illustration of the proposed model


$\mathscr{C}$ Experments

주 실험 내용으로는 영어-프랑스 번역에 관한 데이터셋을 사용했으며, 비교할 벤치마크 모델로는 조경현 교수님의 RNN Encoder-Decoder 모델 (RNNencdec)을 사용했다. 본 논문에서 제시한 모델은 RNNsearch라는 이름을 사용한다. 실험 디테일은 아래와 같다.

 

- 1000 hidden units, SGD, 80 sentences as a minibatch

 

번역 성능 측정으로 BLEU score를 사용했고, 결과는 Table 1과 같다.

Table 1. BLEU scores of the trained models computed on the test set

모델 뒤에 붙어있는 -30, -50의 의미는 학습시킬 때 사용한 문장의 최대 길이를 뜻한다. No UNK은 Unknown token을 사용하지 않을 때 score를 의미한다. 전체적으로 RNNsearch가 RNNencdec보다 높은 점수를 보이고 있으며, 본 논문에서는 Moses와 굉장히 비슷한 성능을 보인다는 것을 강조하고 있다. (Moses는 통계 기반의 번역 모델이며 phrase 단위의 번역 패턴을 학습한다.) 

 

또한, RNNsearch는 RNNencdec이 가지고 있던 큰 단점인 fixed-length context vector 문제를 해결하고자 했고, 이는 Figure 3을 통해 확인할 수 있다.

Figure 3. BLEU scores of the generated translations on the test set with respect to the lengths of the sentences.

Figure 3은 입력 문장에 길이에 따른 RNNsearch와 RNNencdec의 BLEU score를 나타낸다. 짧은 길이의 문장에서는 큰 성능차이가 없지만, 30 이상의 길이에서는 RNNencdec 성능이 대폭 감소하는 것을 확인할 수 있다. 그리고, RNNsearch 같은 경우 -30 보다 -50이 더 robust 한 것을 확인 할 수 있고, 학습시 사용한 문장의 길이보다 더 긴 문장을 사용하더라도 성능이 유지되는 것을 확인할 수 있다.


$\mathscr{D}$ Discussion

1. Alignment

본 논문에서는 Alignment(=Attention)이 어떻게 적용되고 있는지 Figure 4와 같이 시각화했다. 행과 열에 각각 영어와 프랑스 단어가 할당되어 있고, 각 단어들이 어느 단어와 얼마나 연관되어 있는지 나타낸다. 하얀색에 가까운 색일수록 더 많은 연관이 있다는 뜻이다. 예를 들어, 영어의 Economic이란 단어는 프랑스어의 zone과 economique라는 단어에 attention을 하고 있는데, 그중에 economique라는 단어에 더 큰 집중을 하고 있다. 

 

Figure 4. Alignments found by RNNsearch-50. 

또한, hard-alignment는 개념을 소개하며 관사와 명사같은 phrase도 모두 분리시켜 학습해야 더 좋은 결과를 얻을 수 있다고 한다.

 

2. Long Sentences

Figure 3에서 보인 학습 결과를 실제 번역을 통해 검증하고 있다. RNNsearch 가 RNNencdec보다 더 긴 문장에 robust하고 성능이 좋다는 것을 보여준다.

 

 

* 참고문헌