딥러닝(DL)/논문 리뷰

Sequence to Sequence Learning with Neural Networks (NIPS 2014) - Seq2Seq

Song 컴퓨터공학 2023. 8. 24. 18:59

2014년 NIPS에 발표된 Sequence to Sequence Learning with Neural Networks 논문 리뷰 포스팅입니다. 이 논문은 LSTM을 활용한 Seq2Seq 기계 번역 아키텍처를 제안하는 NLP 분야의 기초 논문입니다.

 

이전의 DNN을 통한 Translation 은 SMT, 즉 통계적 방식을 통한 번역의 부분적 요소로만 활용되었습니다. 언어의 특성 상 요소들의 관계나, 연속적인 데이터를 통해 출력을 내놓는 것이 쉽지 않았기 때문입니다. 이 후 RNN 이나 LSTM 처럼 Sequence data에 대해서도 좋은 성능을 보여주는 모델이 등장하게 됩니다. 그러나 이들의 문제점은 Input 으로 Fixed-length vector를 넘겨주어야 한다는 점인데, 가변적인 길이를 가지는 언어의 특성 상 이 부분을 해소하는 것이 어려웠습니다. 본 논문에서는 이 부분을 해소하고자 합니다. 인코더와 디코더 구조를 통해 고정된 크기의 context vector 를 사용하기 시작하여 딥러닝 기반 기계 번역을 하게 된 논문이고, 이 논문을 기반으로 최근 사용되는 GPT나 BERT, Transformer 같은 논문들은 입력 시퀸스 전체에서 정보를 추출하는 방향으로 발전되었습니다. 엄청 많은 인용 횟수를 가진 논문이고, 이 논문의 핵심 개념을 이해해야 추후 나아가는 attention, transformer, GPT, BERT 등의 논문을 이해할 수 있기 때문에 자연어 처리에 대해 공부하려면 꼭 짚고 넘어가야 하는 논문입니다. 요약보다는 최대한 논문의 본문을 살리면서 번역에 가깝게(수치 및 결과는 생략) 리뷰하고, 이해에 도움이 될 내용에 대해서만 추가적으로 외부 자료 및 내용을 추가하였습니다. 논문 구현 코드는 아래의 깃허브 주소에서 확인할 수 있습니다.

 

GitHub - Song-Joo-Young/Deep-Learning-Paper-Review

Contribute to Song-Joo-Young/Deep-Learning-Paper-Review development by creating an account on GitHub.

github.com

 


Sequence to Sequence Learning with Neural Networks

Abstract

딥 뉴럴 네트워크(DNN)는 학습이 어려운 task 에 대해 훌륭한 성능을 보여주는 좋은 모델입니다. DNN은 레이블의 개수가 많은 training set에 대해 좋은 성능을 보이지만, sequence to sequence 매핑에는 사용할 수 없습니다. 본 논문에서는 sequence 구조 위에 minimal assumption을 만드는 일반적인 end-to-end 접근 방식의 학습 방법을 제안합니다. 본 논문의 방법론에서는 고정된 차원의 벡터로 입력 시퀸스를 매핑시키기 위해 여러 층의 LSTM을 사용합니다. 그리고 타깃 시퀸스를 만들어내는 또 다른 깊은 층의 LSTM이 디코더로 동작합니다. 본 논문의 주된 결과은 WMT-14 dataset에 대해 Englich to French 기계번역을 하는 것이고, 이 task에 대하여 BLEU score 34.8점을 획득하였습니다. 추가적으로 LSTM은 긴 문장을 처리함에 있어서도 특별한 어려움을 겪지 않는다는 것을 밝혔습니다. LSTM의 다양한 실험 결과, LSTM은 단어의 순서에 민감하게 학습되고, 상대적으로 능동 수동에는 큰 영향을 받지 않았습니다. 마지막으로 모든 입력 시퀸스에 대해 단어의 순서를 거꾸로 하였을 때 LSTM의 성능이 향상 되는 것을 찾아냈습니다. 그 이유는 단어의 순서를 거꾸로 함으로써 만들어지는 많은 short term dependency 는 source 와 target 문장의 최적화 문제를 쉽게 만들었기 때문입니다.

 

 

1. Introduction

DNN은 음성 인식, 객체 탐지와 같은 어려운 문제에서 좋은 성능을 보이는 훌륭한 기계학습 모델입니다. DNN이 강력한 이유는 작은 수의 단계에 대해서 임의의 병렬 연산을 수행할 수 있기 때문입니다. DNN의 강점 중 하나는 N-bit 의 수를 qudratic size를 가지는 2개의 hidden layer만을 가지고 sorting 할 수 있다는 것입니다. Neural network는 전통적인 통계 모델과 관련이 있고, 복잡한 계산을 학습합니다. 게다가 큰 DNN은 레이블된 training set에 대해 언제든지 오차 역전파를 통해 학습할 수 있습니다. 또한 파라미터 세팅을 통해 DNN은 좋은 결과를 달성할 수 있고, 지도학습의 오차 역전파는 이러한 파라미터들을 찾아 문제를 해결할 수 있도록 해줍니다.

 

DNN의 유연함과 강력함에도 불구하고 DNN은 input과 target 이 오직 고정된 차원의 벡터로 인코딩 되는 문제에만 적용이 가능합니다. 많은 중요한 문제들은 선험적으로 알지 못하는 길이로 표현되기 때문에 이는 매우 치명적인 한계점입니다. 예를 들어 음성 인식이나 기계 번역은 길이가 고정되지 않은 sequential problem 입니다. 마찬가지로 질문에 대한 답변을 하는 task도 질문을 나타내는 단어의 순서를, 답변을 나타내는 단어의 순서에 매핑하는 것으로 볼 수 있습니다. 따라서 이러한 sequence to sequence map 문제는 여러 도메인에서 다양하게 활용할 수 있는 방법론입니다.

 

시퀸스는 고정된 입력과 출력을 가지고 있는 DNN에게 매우 도전적인 문제입니다. 본 논문에서는 일반적인 sequence to sequence 문제를 해결할 수 있는 LSTM 아키텍처에 대한 간단한 응용을 보이고 있습니다. 핵심 아이디어는 한 개의 LSTM을 사용하여 입력 시퀸스를 한 번에 한 번씩 읽고(read the input sequence, one timestep at a time) 큰 고정된 차원의 벡터를 얻은 다음에 (to obtain large fixed dimensional vector represestation), 다른 LSTM을 사용하여 해당 벡터에서 출력 시퀸스를 추출하는 것(use another LSTM to extract the output sequence from that vector)입니다. 두 번째 LSTM은 입력 시퀸스에 따라 조정되는 것을 제외하면 본질적으로는 반복 신경망 언어 모델(RNN, Recurrent neural network) language model 입니다. LSTM은 long range temporal dependencies 를 가지는 데이터들에 대해서도 성공적으로 학습할 수 있고(장기적인 시간 의존성이 있는 데이터를 잘 학습한다), seq2seq task 는 입력과 그에 해당하는 출력 간의 상당한 시간적 지연이 있기 때문에 이 문제에 대한 자연스러운 선택입니다. 

 

이전에도 Neural Networks 에서 Sequence to Sequence 학습 문제를 해결하기 위한 몇가지 시도들이 있었습니다. 본 논문의 연구는 문장 전체를 vector 로 매핑 시키는 첫 시도를 한 [Recurrent continuous translation models] 연구와 근접하고 [Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation] 연구와도 매우 유사합니다.  [Generating Sequences With Recurrent Neural Networks] 에서는 처음으로 새로운 attention mechanism 을 소개하였고, attention 메커니즘은 Neural network이 입력의 서로 다른 부분에 집중할 수 있도록 해주었고 이러한 아이디어는 

[Neural Machine Translation by Jointly Learning to Align and Translate] 에서 성공적으로 기계 번역에 적용 되었습니다.

 

본 논문의 주된 결과는 다음과 같습니다. WMT14 English to French translation task에서 단순한 left-to-right beam-search decoder 를 사용한 5개의 깊은 LSTM(각 380M parameters)를 앙상블하여  통해 34.81 BLEU score를 획득했습니다. 이것은 큰 신경망을 이용한 직역중 가장 좋은 결과를 얻은 것입니다. 타 모델과 비교하자면, 통계적 기계 번역의 가장 좋은 BLEU Score는 33.30 이었습니다.  34.81점의 BLEU score는 80,000개의 어휘를 학습시킨 LSTM에서 얻어진 결과로 따라서 80,000개의 어휘를 벗어나는 번역에서는 더 낮은 점수를 얻을 수 있습니다. 이 결과는 아직 개선의 여지가 많고 최적화가 완전하게 되지 않은 작은 신경망 모델이 굉장히 최적화된 SMT 시스템보다 더 낫다는 것을 보여줍니다.

 

마지막으로 SMT에서 가장 점수가 높은 1000개의 리스트를 가지고 LSTM에서 실험을 진행하였습니다. 이때 36.5점의 BLEU점수가 나왔고 SOTA인 37.0에 거의 근접한 점수였습니다. 놀랍게도 LSTM은 매우 긴 문장을 학습하는 것에 어려움을 겪지 않았습니다. 본 논문에서는 매우 긴 source 문장에 대하여 단어의 순서를 거꾸로 넣어주었습니다(target 문장의 순서는 바꾸지 않고). 이렇게 함으로 short term dependencies에 대하여 쉽게 최적화를 진행 할 수 있었습니다. 결과적으로 SGD(Stochastic Gradient Decent)로 긴 문장에 대하여 어려움 없이 LSTM을 학습 할 수 있었고, 순서를 거꾸로 뒤집는 간단한 trick을 통하여 본 논문의 결과에 큰 기여를 하였습니다. LSTM의 유용한 성질은 다양한 길이를 가지고 있는 input sentence를 고정된 차원의 vector 표현으로 mapping 해준다는 것입니다. 번역은 입력 문장을 의역하는 경향이 있기 때문에, 번역의 목적은 LSTM을 이용해 비슷한 의미를 가지는, 그들의 의미를 포착하는 문장 표현 찾는 것입니다. (to find sentence representations that capture their meaning, as sentences with similar meanings) 문장 표현을 찾으면서 유사한 의미의 문장은 서로 가까이하고, 그렇지 않으면 서로 거리를 멀리 떨어트립니다.

 

 

2. The model

RNN 은 시퀸스에 대한 순전파 신경망의 자연스러운 일반화입니다. 주어진 입력 시퀸스 $(x_1, ... , x_T)$에 대하여 표준적인 RNN은 출력 시퀀스 $(y_1, ... , 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 은 input과 output의 alignment 가 주어지면 쉽게 sequence 를 sequence 로 매핑키실 수 있습니다. 하지만 input과 output sequence 가 일정한 규칙 없이 다양한 길이를 가지는 문제에 대해서는 해당 방법을 적용하기가 어렵습니다.

 

일반적인 길이를 가지는 sequence 를 학습시키기 위한 간단한 전략은 input 시퀸스를 RNN을 이용하여 고정된 크기의 벡터로 mapping 하고, 또 다른 RNN을 이용하여 벡터를 target sequence 로 만드는 것입니다. RNN에 모든 관련 정보가 제공되기 때문에 이론적으로 동작할 수는 있으나, long term dependency 로 인해 RNN을 학습하는 것은 어렵습니다. 반면 LSTM은 long range temproal dependencies 를 잘 학습한다고 알려져 있으니, LSTM을 사용하는 것이 더 알맞은 세팅입니다.

 

LSTM 의 목표는 조건부 확률 $p(y_1, ... , y_{T'}|x_1, ... , x_T) $ 를 추정하는 것입니다. 이 때 $T$와 $T'$ 은 다른 값이 될 수 있습니다. LSTM은 우선 입력 문장에 대해 고정된 차원의 벡터 $v$를 연산하고, 아래 수식으로 연산되는 LSTM-LM의 확률을 계산합니다.

 

$$ p(y_1, ... , y_{T'}|x_1, ... , x_T)= \prod_{t=1}^T' p(y_t | v, y_1, ... , y_{t-1}) $$

 

이 수식에 따라서 각각의 $p(y_t | v, y_1, ... , y_{t-1}) $ 분포는 각 단어에 대한 softmax 로 표현됩니다. 본 논문에서는  [Generating Sequences With Recurrent Neural Networks] 에서 주어진 LSTM 공식을 사용합니다. 이 때 각 문장의 끝에는 <EOS> 토큰이 필요합니다. 

 

본 논문의 실제 모델은 figure 1 과 중요하게 3가지 다른 점을 가지고 있습니다. 첫 번째로 본 논문에서는 서로 다른 2개의 LSTM을 사용합니다. 하나는 입력 문장을 위한 것이고, 또 다른 하나는 출력 문장을 위한 것입니다. 다른 모델을 쓰는 이유는 작은 계산 비용의 증가로 파라미터 수의 수를 쉽게 증가시킬 수 있고, 이는 여러 개의 언어 쌍에서 LSTM을 동시에 훈련시키기 더욱 쉽기 때문입니다. 두 번째로 얕은 LSTM보다 깊은 층을 가지고 있는 LSTM이 좋은 성능을 보이는 것을 관찰해서 4개의 Layer를 가지고 있는 LSTM을 이용하였습니다. 마지막으로 입력 문장의 단어 순서를 거꾸로 했을 때 더 좋은 성능을 보이는 것을 관찰했습니다. 따라서 입력의 순서를 거꾸로 넣어줌으로써 성능을 향상시켰습니다.

 

 

3. Experiments

WMT'14 English to French Machine Translation Task로 본 논문에서 제안하는 모델을 실험하였습니다. 우선 SMT의 사용 없이 직접적으로 input 문장을 번역하였으며 그리고 또 다른 실험으로 SMT baseline의 n-best에 대하여 실험을 진행하였습니다.

3.1 Dataset details

본 논문의 실험에서는 WMT'14 English to French dataset을 이용하였습니다. 본 논문에서 제안하는 모델을 훈련시키고자 348M개의 French word와 304M English word로 구성된 12M개의 문장을 이용하였습니다. 일반적인 신경망 모델은 각 단어에 대한 vector 표현에 의존적이기 때문에, 저자들은 두 언어의 모든 어휘를 고정시켰습니다. 영어에서 자주 사용되는 160,000개의 단어를 선정하였고, french에서는 자주 사용되는 80,000개의 단어를 선정하였습니다. 해당 단어에 포함되지 않은 단어는 <UNK> token으로 대체하였다.

3.2 Decoding and Rescoring

본 논문의 실험에서 가장 핵심은 크고 깊은 LSTM을 많은 문장쌍에 대해 훈련시키는 것입니다. 다음과 같은 수식을 Objective function 으로 사용하여 log probability 를 최대화 시키는 훈련을 진행하였습니다.

 

$$ 1/|\mathcal{S}| \sum_{(T, S) \in \mathcal{S}} \log p(T|S) $$

 

$\mathcal{S}$ 는 Training set 이고 $T$는 Translation 의 결과입니다. 학습이 끝나고 나면 다음과 같은 수식을 통해 가장 가능성이 높은 번역을 찾아냅니다. 본 논문의 실험에서는 left-to-right beam search decoder 을 이용하여 가장 높은 확률의 번역을 찾아내었습니다.

 

$$ \hat{T} = \text{arg}\underset{T}{\text{max }} p(T|S) $$

 

각각의 time step 마다 beam의 가설들을 확장해나가고 각 가설들은 모든 단어들이 가능합니다. 이렇게 되면 가설의 크기가 기하급수적으로 증가하기 때문에 모델의 log 확률에서 가장 높은 B개를 제외하고 나머지 가설들은 무시하였습니다. <EOS> symbol을 만날 때까지 가설의 크기는 커지게 됩니다. 흥미로운 사실은 beam size 가 1일 때도 좋은 성능을 보였지만, beam size 가 2일 때 beam size 증가에 따른 가장 큰 성능 향상을 보였습니다.

 

본 논문에서는 baseline system에 의하여 만들어진 1000-best list에 대하여 rescoring을 진행하였습니다. 본 실험을 진행함에 있어서 LSTM에서 만들어지는 모든 가설에 대한 log probability를 이용했으며 baseline system의 점수와 LSTM의 점수의 평균을 이용했습니다.

3.3 Reversing the Source Sentences

LSTM은 long term dependencies problem을 해결 할 수 있는 능력을 가지고 있음에도, source sentence의 단어 순서를 거꾸로 입력하는 것이 더 좋은 성능을 보일 수 있음을 밝혀냈습니다. 이렇게 함으로, LSTM의 perplexity는 5.8에서 4.7로 감소했으며 BLEU scores는 25.9에서 30.6으로 증가하였습니다. 이러한 현상에 대하여 완벽하게 설명할 수는 없고, 저자들은 dateset으로부터 많은 short term dependencies가 전달된 영향이라고 유추합니다. 일반적으로 source sentence와 target sentence가 결합할 때, source sentence의 각 단어는 target sentence와 거리가 먼 단어에 연결되기 때문에 큰 "minimal time lag" 문제가 발생합니다. 단어의 순서를 거꾸로 입력하는 것이 source sentence와 target sentence의 관련된 단어끼리의 평균적인 거리에 변화를 주지는 못 하지만 source sentence의 처음 단어는 target languge의 처음 단어와 매우 밀접하기 때문에 minimal time lag는 크게 감소하게 됩니다. 또한 오차 역전파의 과정에서 source language와 target language 사이의 "establishing communication"이 쉬워지게 됩니다. 이로써 전반적인 성능 향상이 이뤄지게 될 것입니다. 저자들은 처음에 source sentence의 순서를 거꾸로 하는 것이 target sentence의 앞 부분의 예측에만 더 좋은 결과를 내고 뒷 부분에는 더 안 좋은 결과를 낼것이라고 믿었으나 실제로는 LSTM은 긴 문장에 대해서는 raw sentence보다 순서를 거꾸로한 sentence에서 더 잘 훈련되었습니다.

3.4 Training details

LSTM model이 상당히 쉽게 훈련된다는 것을 알아냈습니다. 우리는 1000개의 cell과 160,000개의 input 어휘, 80,000개의 output 어휘를 가지고 있는 1000차원의 word embedding을 가지고 있는 4 layers LSTM을 이용했습니다. 얕은 LSTM보다 깊은 LSTM이 더 좋은 성능을 보임을 알아냈고, 그 효과는 perplexity를 10% 가까이 줄일 수 있었습니다. output어휘 80,000개에 대한 navie softmax를 이용했습니다. 64M의 recurrent conntetion을 가지고 있는 380M개의 parameter의 LSTM을 최종적으로 사용하였고 training의 구체적인 스펙은 아래와 같습니다.

3.5 Parallelization

C++로 구현된 deep LSTM모델은 single GPU를 사용하였을 때 초당 1700단어 정도의 실행 속도를 보였습니다. 하지만 이는 우리(저자들)의 작업에 있어서 너무 느렸고, GPU 8개 모델을 이용하여 병렬화 하였다. 각 LSTM layer는 서로 다른 GPU에서 실행되었고, 현재 작업이 끝나면 다음 GPU와 통신을 하였습니다. 본 논문의 LSTM은 4개의 layer를 가지고 있음으로 서로 다른 4개의 GPU에 할당되어 실행됩니다. 나머지 4개의 GPU는 softmax 병렬화에 사용되었습니다. 결과적으로 128 mini-bath에 대하여 초당 6300개의 단어를 실행 할 수 있는 속도를 얻었습니다. 약 10일동안 해당 모델을 훈련시켰다 합니다.

3.6 Experimental Results

번역의 질을 평가하기 위해 BLEU score 를 사용합니다. WMT'14 English to French Machine Translation Task 에 대한 실험 결과입니다.

3.7 Model Analysis

본 모델의 매력적인 특징 중 하나는 일련의 단어를 고정 차원의 벡터로 바꾸는 능력입니다. Figure 2는 학습된 표현 중 일부를 시각화한 것으로 그림은 표현이 단어의 순서에는 매우 민감한 반면, 능동과 수동에 대해서는 상당히 둔감하다는 것을 보여주고 있습니다. 2-D projections는 PCA를 통해 얻었습니다.

 

 

4. Conclusion

본 논문에서는, 제한된 어휘를 가지고 있고 문제 구조에 대한 가정을 거의 하지 않은 상태의 대규모 심층 LSTM이 기계번역 작업에서 어휘가 무제한인 표준 SMT 시스템을 능가할 수 있음을 보였습니다. 기계 번역에 대한 간단한 LSTM 기반 접근 방식의 성공은, 충분한 훈련 데이터가 있는 경우 다른 시퀸스 학습 문제에도 잘 적용된다는 것을 시사합니다. 

 

또한 입력 문장의 순서를 뒤집음으로써 얻은 성능의 개선 정도는 놀라웠습니다. 이를 통해 저자들은 입력 문장을 뒤집는 것이 학습 문제를 훨씬 단순하게 만들고, 단기 의존성을 가장 많이 가지는 인코딩을 찾는 것이 중요하다는 결론을 내렸습니다. 또한 LSTM이 매우 긴 문장에 대해 정확히 번역을 수행한다는 사실에 대해 놀랐습니다. 더욱 중요하게, 간단하고 단순하며 최적화 되지 않은 Deep LSTM 모델이 성능이 뛰어난 SMT system을 뛰어넘었다는 것이 중요한 발견입니다. 이 결과는 우리의 접근 방식이 다른 seq2seq 문제에 적용될 것임을 시사합니다.

 

Reference :

https://arxiv.org/abs/1409.3215

https://aclanthology.org/D13-1176.pdf

https://arxiv.org/pdf/1406.1078.pdf

https://arxiv.org/abs/1409.0473

https://arxiv.org/abs/1308.0850

https://sooftware.io/beamsearch/