NLP study

[논문 리딩] Neural Machine Translation By Jointly Learning to Align and Translate

2로 접어듦 2023. 4. 3. 14:23

논문의 저자

Dzmitry Bahdanau, KyungHyun Cho, Yoshua Bengio, 2015

 

논문의 하이라이트 및 핵심


기존 encoder-decoder 모델의 fixed-length vector의 생성은 bottleneck이 될 수 있다. 또한, 한정된 길이로의 압축은 input sequence가 길어질 경우 정보의 손실이 생기며 번역 성능이 떨어지는 결과를 가져왔다.

기존 인코더-디코더에서 생성되는 context vector는 fixed length를 갖는다.

 

해당 논문이 제안하는 모델에서는, 이러한 고정된 크기의 context vector로 많은 정보를 압축시키지 않는다.

디코더가 input sentence의 어떤 부분에 집중해야하는지 attention weight를 통해 직접 결정한다.

디코더는 매 단계마다 context vector, 이전 단계에 생성한 word y, 디코더의 이전 Hidden state를 기반으로, 인코딩 된 input word 중 어떤 단어에 더 집중해야하는지를 계산한다.

 

 

이 논문의 특징

1. fixed-length vector 생성하지 않아도 되고,

 

2. input sentence를 hard segment로 분할하지 않아도 된다(phrase/정해진 길이의 문장 분할이 필요없음)

 

3. align and translate를 동시에(함께) 진행할 수 있어서, training 단계에서 분할되지 않고 함께 학습되기 때문에 더 나은 log-probability를 만들 수 있다.

 

4. 단어 개수가 많아져도 상관없이 robust하고 accurate한 번역 결과를 만들었다.

 

5. (단점) 아직 unknown word, rare word에 대해서는 번역 성능이 떨어지는 특징이 있다.

 

 

논문 출간 배경 및 관련 모델 발전 사항(백그라운드)


Phrase-based 통계적 번역모델(conventional)

MOSES 라는 오픈소스 툴 킷이 2007년 공개되었다. 이 모델은 통계에 기반한 번역모델인데, 간략히 설명하자면,

n-gram을 이용해서 phrase의 등장 빈도를 기록한다(논문을 직접 살펴본 것이 아니라 확실하지 않습니다)

모델은 input sentence에서 해당 phrase의 등장 확률을 바탕으로 phrase 단위로 구분하고, 가장 적절한(확률이 높은) 번역 문장을 탐색한다.

 

신경망 기반 번역모델

지난 주에 리뷰했던 논문 seq2seq와 같은 Neural Machine translation models이 여기에 속한다.

조금 더 구체적으로, RNN encoder-decoder(본인들이 2014년에 제출한 논문)을 논문의 저자는 (한번 더) 소개한다.

 

기존에 소개된 번역모델들의 경우 encoder-decoder의 형태로 번역을 수행하였다. input sentence → fixed-length vector encoding → decoding의 과정을 거쳤다.

하지만 본인들의 실험에 따르면 문장 내 단어 개수가 많아질 경우 성능 저하를 보였다고 언급하며, fixed-length vector를 생성하는 부분이 bottleneck으로 작용한다는 점을 시사하였다. 이러한 단점을 극복하고자 한다고 주장하였다.

 

 

논문 제시 아키텍쳐


기존 인코더-디코더 구조 복습

 

지난 주에 리뷰했던 논문을 잠깐 복습하자면, encoder-decoder 구조는 아래와 같은 수식으로 정리될 수 있다.

 

$$ h_t=f(x_t,h_{t-1}) $$

$$ c=q(\{h_1,\dots,h_{T_x}\}) $$

 

RNN encoding으로 context vector c를 생성했고, RNN decoding과정에서는 context vector c와 이전에 예측했던 단어를 토대로 아래와 같이 조건부확률의 결합확률을 계산할 수 있었다.

 

$$ p(y) =\displaystyle\prod^T_{t=1}p(y_t|\{y_1,\dots,y_{t-1}\},c) $$

$$ p(y_t|\{y_1,\dots,y_{t-1}\},c) =g(y_{t-1},s_t,c) $$

 

논문에서 제시하는 모델의 간단한 수식

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

$$ s_i =f(s_{i-1},y_{i-1},c_i) $$

수식 2와 아주 조금 다르게, 디코더에서 context vector에 첨자 i 가 붙었다. 즉, 단어를 예측하는 i 번째마다 context vector가 매번 계산된다.

 

$$ c_i =\displaystyle\sum^{T_x}_{j=1}\alpha_{ij}h_j $$

$$ \alpha_{ij} =\displaystyle\frac{\text{exp}(e_{ij})}{\sum^{T_x}_{k=1}\text{exp}(e_{ik})} $$

 

context vector는 인코딩된 벡터의 weighted sum이다. 즉, 인코딩된 H 벡터에 어떠한 가중치가 계산되는 것을 확인할 수 있다.

 

보다 구체적인 설명과 깊은 이해를 위해 LSTM의 구조를 먼저 다시 복습하고 넘어가자.

LSTM의 구조는 아래와 같고, 각 gate의 계산을 다음과 같은 수식으로 수행할 수 있다.

forget gate f, input gate i, output gate o가 각각 계산된다.

논문에서 제시하는 RNN encoder와 decoder 내부에서의 Hidden state 연산은 이 LSTM과 매우 유사하다. 논문의 저자도 이 LSTM으로 대체할 수 있다고도 언급하였다. 인코더와 디코더 내부의 hidden state 연산은 아래와 같은 수식으로 구성된다.

 

Encoder:

Encoder에서 hidden state를 계산하는 수식

Decoder:

Decoder에서 hidden state는 이전 hidden state s와 현재 계산된 context vector c로부터 계산된다.

 

도식화

이 논문에서 제시되는 모델의 동작을 보다 이해하기 쉽게 도식화 해보자. English - Korean 번역 태스크를 수행한다고 가정하고, 먼저 input source sentence를 "What is your goal?", 그리고 target sentence를 "네 목표는 무엇이니?" 라고 설정해보자.

 

먼저 모델의 인코더는 아래와 같이 양방향 RNN을 사용하여 각 단어를 인코딩한다. 왼쪽에서 오른쪽 방향으로 인코딩하는 forward RNN, 오른쪽에서 왼쪽으로 인코딩하는 backward RNN의 두 결과를 concatenate 한다. 각 h 는 논문에서 'annotation'이라고 지칭된다.

 

이 단계로 인코딩은 종료된다.

디코더의 동작이 이어진다. 인코딩된 각각의 h와, 이전의 Hidden state S가 함께 Fully Connected layer의 Input으로 들어간다. 이 결과로는 energy라는 값이 계산된다. 유의해야 할 점은, 현재 단계에서(예시 그림에서는 두 번째 단어를 출력하고자 하는 단계이다)는 디코더의 이전 Hidden state s1 을 사용한다. 아래 그림에서는 잘려있지만, 회색 선으로 연결된 부분이 decoder hidden state s1이다.

첫 번째 단어를 출력하는 단계에서는 이전의 hidden state는 없으므로, backward에서 인코딩할 때 쓴 h1 벡터를 사용한다(수식은 논문 참고)

 

 

각각의 words로부터 계산된 energy는 소프트맥스 연산에 사용되어, weight a를 만들어낸다(아래 그림)

논문에서는 직접 언급하지는 않지만, 이 weight a는 "attention weight"로서 동작한다. 여기서는 첫 번째 단어를 출력하고자 할 때 input word의 어떤 단어에 집중해야하는지를 확률 값으로 나타낸다.

 

 

이 attention weight를 기반으로 디코더는 context vector C1을 만들어낸다(아래 그림 참고)

이 context vector C는 annotation에 attention weight 을 곱한 것의 합이다. 논문에서는 weighted sum이라고 지칭한다.

계산된 context vector를 이용해서, 다소 복잡한 연산과정을 거쳐(한 번 더 Neural Network를 거치지만 생략하겠다.) 조건부 확률을 계산해내고, 단어를 출력해낸다. 또한, 디코더에서도 마찬가지로 hidden state를 만들어낸다.

 

두 번째 단어를 출력할 때는 비슷한 과정을 거치나, 첫 번째와는 다르게, hidden state가 생성되었으므로 해당 벡터를 energy 계산 단계에 포함한다. 즉, Neural Network의 Input으로 들어간다.

이로써 디코더의 이전 출력과 이전 Hidden state가 다음 단계의 단어 출력에 attention weight 계산에 영향을 주게 된다.

 

세 번째 및 문장의 끝을 출력하는 단계도 연속적으로 수행된다.

 

 

시퀀스의 핵심을 요약하자면 다음과 같다.

1. input word를 인코딩 할 때 Forward, backward 양 방향으로 계산하여 양 옆 단어에 대한 정보를 갖는다(Bi-directional)

 

2. 매 i 번째 단어를 예측할 때 마다 attention weight, context vector를 계산 과정에 포함하여, Input words 중 어떤 words에 집중할 지를 (확률값으로) 확인한다(이전에는 하나의 context vector 사용)

 

3. attention weight를 생성할 때는 이전 스텝에서 예측한 단어와 디코더의 이전 스텝 hidden state를 사용한다.

 

 

논문에서의 실험


데이터세트

데이터세트로는 English-French parallel corpora와 crawled corpora가 포함된 WMT’14 데이터를 사용했다.

총 850M words 데이터세트인데, 여기서 author는 2011년에 제시된 data selection 방식을 사용해서 348M words로 줄였다.

 

여기서 사용된 data selection 방식은 일종의 트릭으로 볼 수 있다.

새롭게 추가되는 unlabelled words 들에 대해, labelled 되어있는 word와 similarity를 계산해서, 조금 더 in-domain 에 속하는 words만 선택하는 selection 방식이라고 한다. 특정 도메인에 관련한 word만으로 구성된 training dataset을 만들게 되므로, author들도 마지막에 언급하지만, un-seen data에 대해서는 성능이 떨어지게 된다.

 

모델의 하이퍼파라미터 및 기타 세팅

1. 비교하고자 하는 모델은 (본인들 논문이었던) basic RNN encoder-decoder과 통계기반 모델인 MOSES이다.

 

2. 문장 내 최대 단어 개수를 30개, 50개로 제한하여 모델비교를 진행하였다.

 

3. 조건부 확률을 계산할 때는 ‘maxout hidden layer’를 사용했다고 하는데, 이 레이어는 activation layer의 한 종류로서, max-pooling과 비슷한 개념이라고 생각하면 좋다. feature로부터 maximum value를 뽑아내면서 노이즈를 제거하는 효과가 있다.

(maxout hidden layer에 대한 이해도가 아직 부족하다.)

Maxout layser의 수식적 표현. ReLU 등 처럼 Activation function이다.
Maxout layer는 초록색-파란색 두 레이어로 구성되어있다.

 

4. 지난 주 논문 리뷰에서 살펴보았던 것처럼, 조건부 확률 계산 시 beam search를 적용했다.

 

 

결과 분석


정량적 분석 - BLEU 스코어 비교

단어 개수 30/50 개로 이루어진 문장들로 학습한 실험군/대조군 결과

 

문장이, 학습한 vocabulary 안에 있는 단어로만 구성되어있는 경우, 전통적인 통계기반 모델 MOSES를 능가하는 퍼포먼스를 보였다. MOSES에 비해 훨씬 적은 데이터세트를 사용했기 때문에 주목할 만한 성과라고 저자들은 언급하였으나, 본인의 생각으로는 unknown word가 없으니까 그런 것이 아닌가 추측한다.

 

문장 길이에 상관없이 robust하게 BLEU 스코어가 유지되는 것을 확인할 수 있다.

 

또한 위의 figure 2에서 볼 수 있다시피, 단어의 개수가 많아져도 우리가 제안하는 RNN-search50는 robust to the length of the sentences.

정성적 분석 - attention weigth 시각화

 

문장 번역의 순서가 뒤바뀌어도 번역이 매끄러우며(a). 문장의 길이가 달라도 모델이 자연스럽게 문장 번역을 끝마친다.(d)

 

가중치 alpha 값을 시각화하면서 해당 논문에서의 soft alignment의 동작을 살펴볼 수 있다. 행 값은 모델이 예측해야하는 단어 i, 열 값은 Input word j를 의미한다.

 

우선, alignment가 사진에서 볼 수 있다시피, 대각성분에서 강한 weight 값이 확인되는 것을 볼 수 있다.

하지만, 영어와 불어 사이에서는 형용사와 명사의 순서가 다르기 때문에, 특정 구문에서는 weight가 왼쪽 위에서 오른쪽 아래로 내려가는 방향이 아닌 역 대각선 방향으로 그려진 부분이 보여진다. 이 논문의 모델 RNN Search-50은 이렇게 번역해야할 단어의 순서가 달라도, 점프해가면서 연관성있는 단어에 맞게 align한다는 것을 확인할 수 있다.

 

또한, 번역결과의 단어 개수가 input sentence의 길이보다 짧아도 자연스럽게 번역하는 것을 확인할 수 있다(figure 3.d, 번역하고자 하는 french가 더 길다. 적절히 알아서 매칭하는 것을 볼 수 있다)

hard alignment를 하면, the를 l’이라고 번역할 수 없다. le, la, les 등 다양한 번역을 할 수 없다고 논문의 저자는 주장한다.

 

 

최종 결론


1. 기존의 Neural Network 기반 encoder-decoder 모델에서, context vector라고 불렸던 fixed-length vector를 제거하고자 attention mechanism을 처음으로 제시했다는 점이 가장 중요한 포인트이다.

 

2. 보다 구체적인 동작을 설명하자면, decoder는 input sentence로부터 인코딩된 벡터, annotation과, 이전 decoder hidden state를 기반으로 현재 time에 번역할 단어는 Input의 어떤 단어에 attention 해야할 지를 Neural Network로 학습하였다.

 

3. 전체 구조 자체가 joint 되어있어, 한 번에 backpropagation이 가능하다는 점도 큰 장점이다.

 

4. 학습 data 를 위한 data selection 단계에서 In-domain selection을 수행하여, unknown 단어에 대한 처리 성능이 떨어진다는 것이 현재의 단점이다.

 

 

 

참고자료

1. https://arxiv.org/abs/1406.1078 , encoder and decoder architecture(논문)

2. https://arxiv.org/abs/1409.1259, encoder decoder의 한계점 시사 논문

3. https://proceedings.neurips.cc/paper/2014/file/a14ac55a4f27472c5d894ec1c3c743d2-Paper.pdf,
LSTM sequence and architecture(논문)

4. https://aclanthology.org/P07-2045.pdf, MOSES(논문)

4. https://aclanthology.org/D11-1033.pdf, data selection(논문) 

5. https://www.youtube.com/watch?v=StOFwSRBwMo&t=239s seq2seq with attention 도식화 참고

6. https://blog.naver.com/laonple/220836305907 Maxout layer 참고