본문 바로가기
대학원 이야기/논문 리뷰

[논문 리뷰] Neural machine translation by jointly learning to align and translate (2014 NIPS)

by misconstructed 2020. 10. 26.
728x90

Attention 기법을 사용해서 Neural Machine Translation의 성능을 향상시킨 내용이다.

논문의 원본은 여기서 확인할 수 있다.


과거의 Machine Translation은 phrase based로서, 다양한 sub-component로 구성되어 있었고, 각 component는 각각 학습되고 구성되었다. 이후에는 하나의 큰 neural network를 이용한 translation 방법들이 제안되었다. Neural Machine Translation은 대부분 encoder-decoder 형식으로 이루어져 있다. Encoder의 경우, 입력 문장을 고정 길이 벡터로 변환시키고, decoder는 해당 벡터를 이용해서 번역 결과를 생성해낸다. 해당 모델을 입력으로 제공된 Input sentence와 결과로 생성된 output sentence 사이의 probability를 최대화하는 방식으로 학습된다.

이러한 encoder-decoder 구조는 bottleneck 문제를 발생시킬 수 있다. Bottleneck 문제는 encoder에서 전체 문장을 하나의 고정된 길이의 벡터로 생성할 때 발생한다. 이러한 문제는 문장이 길어질수록 심각하게 나타나고, encoder-decoder 모델의 성능 또한 문장의 길이가 길어질수록 떨어지게 된다. 문장 전체의 정보를 짧은 고정 길이의 벡터로 모두 나타내기 어렵기 때문이다. 

이번 논문에서는 encoder-decoder 모델에서 새로운 구조를 추가해서 성능을 향상할 수 있는 방법을 제안한다. 해당 모델은 decoder에서 하나의 결과를 만들어낼 때마다, 입력 문장을 순차적으로 탐색해서 현재 생성하려는 부분과 가장 관련있는 영역을 적용시킨다. 최종적으로 encoder에서 생성한 context word 중 관련성이 크다고 판단되는 영역들과, decoder에서 이미 생성한 결과를 기반으로 다음 단어를 결과로 생성해낸다. 

이러한 방식의 가장 큰 장점 중 하나는 입력 문장을 고정된 길이의 벡터로 표현하지 않아도 된다는 것이다. Decoder에서 연산을 진행하면서 encoder에서 생성한 context word를 계속해서 참조하기 때문에, 전체 문장의 정보를 하나의 벡터에 담으려고 하지 않아도 되고, 문장의 길이가 길어지더라도 성능을 유지할 수 있다.

# Neural Machine Translation

확률론적으로 Neural Machine Translation(NMT)을 보면, 입력 문장 $ s $ 가 주어졌을 때, 조건부 확률 $ p(y|x) $ 를 최대화 하는 출력 문장 $ y $ 를 찾아내는 방식으로 동작한다. ( $ argmax_y(y|x) $ ) 최근(2014년 쯤)에는 neural network 를 이용해서 이러한 조건부 확률을 직접적으로 학습하는 방법도 제안되었다. 이러한 방식은 앞서 언급한 RNN을 이용한 encoder-decoder 모델을 예로 들 수 있다. 이후에는 LSTM을 이용해서 RNN 보다 좋은 성능을 내는 모델도 제안되었다. 

RNN을 이용한 encoder-decoder 모델 : Encoder는 입력으로 제공되는 문장 $ x = (x_1, x_2, ..., x_{T_x}) $ 을 고정된 길이의 벡터 $ c $ 로 변환하게 된다. RNN을 이용하는 경우 [식-1], [식-2]를 통해서 벡터 $ c $ 를 생성한다. [식-1]에서 $ h_t $ 는 time t 에서의 hidden state를 의미한다. $ f(), q() $ 는 non-linear function을 의미한다. 

[식-1]
[식-2]

Decoder는 context vector $ c $ 가 encoder로부터 주어졌을 때, $ c $ 와 이전에 예측한 결과 $ {y_1, y_2, ..., y_{t'-1}} $ 을 기반으로 다음 단어 $ y_{t'} $ 를 예측하게 된다. 번역된 결과 $ y = (y_1, ..., y_{T_y}) $ 는 [식-]3과 같은 조건부 확률을 기반으로 생성된다. 조건부 확률은 바로 직전 time인 $ (t-1) $ 에서 예측한 결과 $ y_{t-1} $ 과, RNN의 hidden state $ s_t $, 그리고 non-linear function $ g() $ 를 이용해서 구할 수 있다. 

[식-3]
[식-4]

# Attention 기법 (align and translate)

[그림-1]

Encoder : 입력 문장 $ x = (x_1, ..., x_{T_x}) $ 는 encoder의 입력으로 제공된다. 입력 문장에 대해서 이전에 나타는 내용과 함께, 이후에 나타나는 내용도 알아야지 좋은 번역이 가능하기 때문에, 이번 모델에서는 bidirectional RNN(BiRNN)을 사용한다. BiRNN은 두 개의 RNN(forward RNN, backward RNN)으로 구성된다. Forward RNN은 처음부터 순차적으로 입력을 읽어서 hidden state $ (\overrightarrow{h_1}, ..., \overrightarrow{h_{T_x}}) $ 를 생성한다. Backward RNN은 입력의 제일 뒤에서부터 역방향으로 입력을 읽어서 hidden state $ (\overleftarrow{h_1}, ..., \overleftarrow{h_{T_x}}) $ 를 생성한다. 

Time $ j $ 에서의 입력 $ x_j $ 에 대해서 forward hidden state $ \overrightarrow{h_j} $ 와 backward hidden state $ \overleftarrow{h_j} $ 를 연결해서 j-번째 hidden state $ h_j $ 를 생성한다. 인접한 state의 정보를 더 많이 가지고 있는 RNN의 특성상, $ h_j $는 입력 단어 $ x_j $ 의 가까운 위치에 있는 단어들의 정보를 더 많이 보유하게 된다. 

[식-5]

Decoder : Time $ ㅑ $ 에서 decoder의 hidden state를 $ s_i $ 이라고 한다. Alignment model에서는 decoder의 time $ i $ 에서의 정보다 encoder의 time $ j $ 에서의 정보와 얼마나 연관성이 있는지 score를 계산한다. 해당 Score는 decoder 의 바로 전 time  $ (i-1) $ 에서의 hidden state $ s_{t-1} $ 과 encoder의 time $ j $ 에서의 hidden state $ h_j $ 를 이용해 [식-6] 과 같은 연산을 수행한다. 이 때 alignment model 인 $ a() $ 는 feedforward neural network 라고 할 수 있다. 

[식-6]

이후, time $ i $ 에서의 context vector 인 $ c_i $ 를 생성한다. $ c_i $ 는 encoder의 모든 hidden state 의 weighted sum으로 구성된다. Encoder 의 hidden state 들은 모든 입력에 대한 정보들을 담고 있다. 

[식-7]

이 때, encoder의 각 hidden state에 대한 weight $ \alpha_{ij} $ 는 alignment model에서 구한 score $ e_{ij} $ 를 이용해서 [식-8]과 같이 구해진다.

해당 weight $ \alpha_{ij} $ 는 target word $ y_i $ 가 source word $ x_j $ 에 어느정과 연관이 있는지 나타낸다. 그래서 decoder는 해당 weight 값을 기반으로 source sentence에서 어떤 위치의 단어에 더 attention을 줄지 판단할 수 있다. 이러한 방식으로 인해, 기존에 모든 문장을 하나의 고정 길이 벡터로 변환하는 작업을 수행하지 않고도 더 좋은 성능을 제공할 수 있다.

[식-8]

이후에는 [식-4]와 동일한 방법으로 time $ i $ 에서의 decoder RNN의 hidden state $ s_i $ 를 계산한다. 

[식-9]

# 실험

데이터셋 : WMT'14 의 English-French parallel corpus 를 사용했다. 전체 corpus의 단어를 348M 개로 제한했고, monolingual data는 하나도 사용하지 않았다. 전체 단어 중 가장 많이 사용되는 30,000개의 단ㅇ어를 사용했고, 추가적으로 [UNK] 토큰도 함께 사용했다.

모델 : 총 2개의 모델을 학습했다. 첫 번째 모델은 RNN Encoder-Decoder 모델이고, 두 번째 모델은 이번 논문에서 제안한 모델(RNNsearch 라고 부른다.) 이다. 두 모델을 각각 두 번씩 학습한다. 첫 학습에서는 최대 30개의 단어들로 구성된 문장들에 대해서 학습을 진행하고, 두 번째 학습에서는 최대 50개의 단어들로 구성된 문장들로 학습을 진행한다. 30개의 단어로 구성된 문장으로 학습된 모델을 RNNencdec-30, RNNsearch-30 이라고 부르고, 50개의 단어로 구성된 문장으로 학습된 모델을 RNNencdec-50, RNNsearch-50 이라고 부른다. RNNencdec는 1000개의 hidden unit을 보유한다. RNNsearch의 경우, encoder는 forward/backward 각각 1000개의 hidden unit을 보유하고, decoder에서도 1000개의 hidden unit을 보유한다. minibatch SGD를 사용하고 Adadelta를 사용했다. minibatch는 80개의 문장으로 구성되었고, 총 5일 동안 학습을 진행했다.

[표-1]

결과 : BLEU score를 기반으로 translation 성능을 평가했다. RNNsearch 가 모든 경우 더 뛰어난 성능을 제공했다. ([표-1] 참고) 또한, 기존의 phrase-based translation system(Moses) 와 유사한 성능을 제공할 수 있었다. Moses의 모델의 경우 추가적인 monolingual corpus를 사용했다는 점에서 이번 모델이 뛰어난 성능을 제공한다는 것을 알 수 있다. 

[그림-2]

이번 모델의 큰 장점 중 하나는 source sentence를 하나의 고정된 길이의 벡터로 변환하지 않아도 된다는 점이다. Source sentence를 하나의 고정된 길이의 벡터로 변환하는 경우, 문장의 길이가 길어지면 성능이 떨어진다는 것을 알 수 있다. ([그림-2] 참고) 하지만, RNNsearch-30, RNNsearch-50의 경우, source sentence 가 길어져도 어느정도 일관된 성능을 제공한다. RNNsearch-50은 특히 문장이 길이가 계속 길어져도 성능 저하가 없다는 것을 볼 수 있다. 

[그림-3]

[그림-3]은 annotation weight $ \alpha_{ij} $ 를 시각화한 것이다. 해당 그림을 통해서 번역된 결과가 어떠한 입력에 (soft-)align 되었는지 확인할 수 있다. Hard-alignment의 경우, 한 단어가 무조건 다른 한 단어와 매핑되어야 하는데, 실제로 번역을 하는 경우 이렇게 1:1로 모든 단어를 매핑하는데 한계가 있다. 반면에 이번 모델에서 제안하는 soft-alignment의 경우, 한 단어가 여러 단어와의 관계를 나타낼 수 있으므로 번역을 하는데 더 좋은 성능을 제공할 수 있다. 

# 긴 문장 번역 예시

Source sentence (1) : 

RNNencdec-50 의 결과 : 

번역 결과를 보면, 문장 앞 부분은 정보의 누락 없이 어느정도 좋은 번역 결과를 제공했지만, 문장의 뒤로 갈수록 정보의 누락이 있었다.

RNNsearch-50 의 결과 :

Source Sentence (2) :

RNNencdec-50 의 결과 : 

RNNsearch-50 의 결과 : 


# 관련 논문

  1. Sequence to sequence learning with neural networks. : LSTM을 이용한 sequence-to-sequence machine translation (리뷰)
  2. On the properties of neural machine translation: Encoder–Decoder approaches. : encoder-decoder 방식의 machine translation (1)
  3. Learning phrase representations using RNN encoder-decoder for statistical machine translation. : encoder-decoder 방식의 machine translation (2)
  4. Bidirectional recurrent neural networks. : Bidriectional RNN (BiRNN)
  5. Generating sequences with recurrent neural networks. : 유사한 방식의 translation 기법 (여기서는 one direction 만 취급)
  6. Learning long-term dependencies with gradient descent is difficult. : gradient descent 의 문제점
  7. On the difficulty of training recurrent neural networks. : RNN을 학습할 때 문제점 (gradient 문제)

 

 

728x90

댓글