본문 바로가기
Natural Language Processing/NLP

논문 읽기[Seq2Seq] - Sequence to Sequence Learning with Neural Networks

by 187cm 2022. 8. 13.
반응형

Abstract 

- DNN은 레이블된 학습 데이터 셋을 쓸 때 성능이 좋음. 하지만 Sequence to sequence를 mapping 하는데 사용 불가능

- 고정된 차원 벡터의 Input LSTM(Encoder), Output을 출력하는 또 다른 LSTM(Decoder)로 구성.

- English to French 번역인 WMT'14 데이터 셋 사용, *BELU Score는 34.8

- pharse-based SMT system의 BELU score는 33.3, LSTM에 SMT system을 적용시 BELU Score 36.5

- 입력 문장을 뒤집는 방법을 통해 LSTM의 성능 상승. 입력 문장과 출력 문장의 단기 의존도가 생겨 최적화가 쉬워짐.

 

* BELU Score : 변역의 퀄리티를 평가하는 지표

 

1. Introduction.

- DNN은 음성 인식, 시각적 물체 인식 등 어려운 문제에서의 좋은 성능을 보임.

- DNN의 레이블이 있는 훈련 데이터 셋이 네트워크의 파라미터를 구별 할 수 있는 충분한 정보를 가지고 있을 때마다 역전파를 통해 훈련이 가능함. 따라서 좋은 결과를 얻을 수 있는 파라미터가 존재한다면 역전파를 통해 문제 해결 가능.

 

- 하지만 이런 능력에도 불구하고 DNN은 고정된 입력과 고정된 차원의 크기를 가지는 경우에만 적용이 가능함.

- 음성 인식, 기계 번역과 같은 sequential 문제에 적용하기 어려움. 정답에 답변하는 경우도 마찬가지.

-> sequence to sequence에 mapping하는 방법에는 "domain-independent" 방법이 유용할 것.

 

- LSTM을 사용하여 input sequence를 읽어서 고정된 큰 차원의 벡터 표현을 얻음. 또 다른 LSTM을 사용하여 output sequence를 추출함. (Figure 1 참조)

- LSTM은 장기적 시간 의존 데이터에 대해 성능이 좋음. (입력과 그에 상응하는 출력값이 시간상의 차이를 고려하기 때문)

Figure 1 : LSTM을 사용한 Sequence to Sequence 구현, 앞 부분이 Encoder, 뒷 부분이 Decoer. 우리가 아는 LSTM의 모양은 Decoder 부분에 가까움

 

- WMT’14 English to French 데이터 셋을 통해 34.81의 BELU Score를 기록, 5개의 left-to-right beam search decoder를 사용한 LSTM 모델 앙상블을 함.

- SMT baseline을 사용한 모델의 BELU Score는 33.30

- 1000-best SMT baseline을 사용한 LSTM의 경우 36.50 BELU Score기록

 

- 학습 데이터 셋 문장의 어순을 바꿔 단기 의존가 생김. 이는 최적화 문제를 더 쉽게 만듬. 

- 결과적으로 SGD가 LSTM의 긴 문장에 대해 문제 없이 학습 가능하게 함.

 

- 번역 목표는 LSTM이 문장의 의미를 나타내는 표현을 찾게 하는 것.

 

2. The Model

- 일반적인 RNN은 Input sequence (x1, ... xT) 가 주어졌을 때 Output sequence로 (y1, ... yT) 를 출력하며, 수식으로 나타내면 다음과 같다.

xt : input t, ht : hidden state t, yt : output

- RNN은 입력과 출력이 정렬되어 있는 경우 sequence to sequence를 하기가 쉬움. 하지만 입력과 출력의 길이가 다른경우 RNN에 적용하기가 힘듬.

- 고정된 사이즈의 입력 벡터를 사용한 RNN과 또 다른 벡터를 가진 RNN에 출력을 mapping하는 법을 통해 해결 가능하다.

다음과 같은 조건부 확률을 최적화 하는 것이 LSTM의 목표이다. 입력 sequence x에 대한 출력 sequence y를 계산하고, 이를 통해 만들어진 T'이 T와 같게 최적화 시키는 것이다.

- LSTM은 조건부 확률을 계산하여 입력 sequence x를 통해 만들어진 고정된 차원의 v를 얻는다. (Encoder의 출력, Encoder LSTM의 마지막 Hidden state를 지나감) 그 다음 출력값 y에 대한 확률을 구함.

- p(yt | v, y1, ... yt-1) 의 경우 사전의 모든 단어에 대해서 softmax를 취한 결과이다.

- 각 문장의 끝에는 <EOS> 라는 End of symbol 표시가 있다. 이 심볼을 통해 모든 길이의 sequence의 분포 정의가 가능함.

자세한 그림은 위의 Figure 1 참조

 

- 실제 모델은 위의 Figure 1과 다른 부분이 3가지 정도 있다.

1. 2개의 다른 LSTM 모델을 사용함. (Encoder & Decoder)

     -> 무시해도 될 정도의 모델의 파라미터 수 증가 & 다양한 문장의 쌍을 동시에 자연스럽게 학습 가능

2. Deep LSTM이 얕은 LSTM보다 상당한 성능 향상을 보임.

     -> 4층짜리 Deep LSTM 모델 사용

3. 입력 문장의 어순을 뒤집음.

    -> a,b,c에 대한 입력으로 α β γ 가 주어진다면, LSTM은 c, b, a를 통해 α β γ를 mapping함.

    -> a와 α는 가까워지고, b와 β 또한 마찬가지. 이는 SGD가 input과 output 사이의 "establish communication"을 쉽게 함.

 

3. Experiments

- WMT'14 English to French 데이터 셋을 2가지 방법을 통해 사용. 

- SMT system을 사용하지 않고 직접 번역을 한 후 SMT baseline을 사용한 n-best list를 통해 다시 점수를 매김.

3.1 Dataset details

- WMT'14 English to French dataset의 348M French 단어와 304M English 단어 중 12M의 문장을 학습하는데 사용.

- 전형적인 Neural language 모델은 각 단어의 대한 벡터 표현에 의존함. -> 영어&프랑스어를 위해 고정된 어휘 사용.

- 입력으로 160,000의 자주 쓰이는 단어를, 출력으로는 80,000개의 자주 쓰이는 단어 선택. 그 외 언어는 "UNK" 토큰 매핑.

3.2 Decoding and Rescoring

- 핵심 목표는 관련된 크고 깊은 LSTM을 학습 시키는 것.

- 번역을 학습한 결과인 T의  Log probability를 입력 문장인 S에 대해 최대화 함.

     -> (조건부 확률, 입력 S에 대한 결과 값 T)

- 학습이 끝난 후 LSTM은 아래의 수식을 통해 가장 번역과 비슷한 답을 찾음

- 간단한 B개의 부분 가설을 가지는 left-to-right beam search decoder를 통해 가장 비슷한 번역을 찾음.

   -> 부분 가설 : 일부 번역의 접두사

- 각각의 단계마다 가능한 모든 단어의 beam을 이용한 각각의 부분 가설을 증가시킴. 

- 부분 가설의 수가 증가함에 따라 가장 높은 log probability를 가지는 B를 제외하고 없앰.

- EOS 심볼이 가설에 추가되면, beam에서 제거되고 완전한 가설 집합에 추가됨.

- Decoder도 비슷하게 돌아감.

3.3 Reversing the Source Sentences

- LSTM이 어순을 뒤집을 경우 Test perplexity가 5.8에서 4.7으로 감소, BELU Score 또한 25.9에서 30.6으로 증가한 것을 보임.

- 데이터 셋의 많은 단기 의존성에 의해 이러한 현상이 야기된다고 믿음. 일반적으로 입력 문장과 출력 문장을 concatenate할 경우 입력 문장에 대응하는 출력 문장이 나옴. => "minimal time lag" 발생

- 어순을 뒤집을 경우 일부 입력 문장과 출력 문장이 가까워지기 때문에 이러한 "minimal time lag"가 해소됌.

- 따라서 역전파 단계에서 조기에 "establishing communication"이 발생함. -> 전반적으로 큰 성능 향상.

 

- 문장을 뒤집을 경우 문장의 앞 부분의 정확도가 올라갈 것이라 믿음.

- 메모리 활용 부분에서도 더 좋은 성능을 보임.

3.4 Training details

- Deep LSTM의 Layer : 4 & 1000 cells each layer

- 1000 dimensional word embedding, 160,000의 input vocabulary and 80,000의 output vocabulary

- Deep LSTM이 얕은 LSTM보다 perplexity를 10%에 가깝게 줄여줌.

- 총 파라미터 수 384M, 64M은 RNN parameters (32M Encoder & 32M Decoder)

 

1. 초기 LSTM의 파라미터는 -0.08 부터 0.08 사이의 균등분포.

2. SGD 사용 (momentum X), 5 epochs 이후 Learning Rate는 0.7 고정. 0.5 epoch마다 learning rate 절반으로 줄임. Total epochs 수는 7.5

3. batch size : 128

4. LSTM은 기울기 소실이 아닌 기울기 폭팔문제가 존재. Gradient가 threshold를 넘을 경우 규제를 줌. 

    각각의 학습 batch 마다 s = ||g||_2 를 계산 후 (g는 Gradient를 128로 나눈 것),  if s > 5, g = 5g/s 

    * || .. ||_2 는 L2 규제를 의미함

5. 문장마다 길이가 다 다름. 대부분의 문장은 (20 ~ 30) 정도로 길이가 짧지만 100이 넘는 큰 친구들도 존재. 따라서 mini-batch 사이즈 128은 연산량에서 낭비가 심함. 비슷한 문장 길이 끼리 mini-batch를 구성하게 함. 2배 정도의 speedup.

3.5 Parallelization

- 단일 GPU를 사용할 경우 초당 1,700개 정도의 단어 처리.

- 8개의 GPU를 사용함. LSTM의 Layer가 4개이므로 4개의 GPU는 각 Layer에 상주. 남은 4개의 GPU는 softmax를 병렬처리 하는데 사용함. 따라서 각각의 GPU는 softmax에서 1000x20000 matrix의 연산 수행.

- 병렬 GPU를 사용할 경우 초당 6,300개의 mini-batch size가 128인 연산 수행가능.

3.6 Experimental Results

table1
table 2

- WMT'14 데이터 셋의 Best Score는 37.0

- Sequence to Sequence 를 활용한 모델의 최고 성능은 34.81이며 초기 기울기 값 & mini-batch 사이즈를 다르게 하여 앙상블 진행

- 우리 논문의 최고 성능 모델이 WMT'14 데이터 셋의 최고 점수 모델보다 점수가 낮지만, vocabulary를 벗어나는 단어는 무시하며, 많은 양의 MT에서 구문 기반의 SMT-baseline 보다 높은 성능을 낸 순수 Neural 번역 시스템은 처음. 

- 1000-best list를 통해 rescore한 BELU Score는 36.5 이다.

3.7 Performance on long sentences

- 우리의 LSTM은 긴 문장도 번역을 잘 한다. 자세한 내용은 Figure 3에서 다룸.

3.8 Model Analysis

Figure 2.&nbsp; 구문을 처리한 후 LSTM의 Hidden state에 2차원 PCA투영을 적용. 구문은 주로 의미에 군집하는 모습을 보이며, 단어의 순서 혹은 bag-of-word 모델로 의미를 포착하긴 어려움

-  우리 모델의 매력적인 특징 중 하나는 문장의 단어를 고정된 차원에 벡터로 넣을 수 있다는 점이다. 

-  Figure 2는 표현 학습을 시각화 한 것. 표현은 문장의 어순에 민감하지만, 능동인지 수동인지에 대해서는 둔감한 모습을 보임. 

table 3. LSTM을 이용한 긴 문장의 번역 결과와 정답을 나란히 보여줌. 구독자들은 구글 번역을 이용하여 합리적인지 확인 가능함.
Figure 3. 왼쪽 그림은 문장의 길이의 따른 논문의 모델과 SMT baseline 모델의 성능 비교 이다. 35 단어 이하일 때 성능의 저하가 없으며, 가장 긴 문장은 약간의 성능 저하가 있다. 오른쪽 그림은 점차 희귀한 단어가 포함되었을 때의 LSTM의 성능이다. x축은 "평균 단어 빈도 순위" 이다.

4. Related work

RNNLM : RNN-Language Model

NNLM : FeedForward Nerual Network Language Model

 

입력 언어의 정보를 NNLM에 포함시키기 위해 시도함.

Auli et al : NNLM 모델과 입력 문장의 topic model을 결합시켜 성능을 향상시킴.

Devlin et al : NNLM에 정렬된 정보를 가진 디코더를 넣음. -> NNLM이 입력 문장에 대해 더욱 유용한 단어를 제공.

 

우리 논문은 처음으로 입력 문장에 벡터를 매핑시키고 다시 문장을 반환하는 Kalchbrenner 논문과 연관되어있음.

Kalchbrenner and Blunsom : CNN을 사용하여 문장을 벡터에 매핑시킴. 그 과정에서 어순을 잃기도 함.

Cho et al : LSTM-like RNN을 사용하여 문장을 벡터에 매핑시키려고 함. NN을 SMT 시스템과 통합하는 것을 목표로 함.

Bahdanau at el : attention mechanism NN을 사용해 직접 번역을 시도. 긴 문장에 대해 낮은 성능을 보이는 Cho et al 논문을 극복.

 

5.  Conclusion

1. vocabulary가 제한되고 (input vocabulary 160,000 Output vocabulary 80,000) 문제 구조에 대한 추정을 하지 않는 구조의 크고 깊은 LSTM을 제시하여 대규모 MT작업에서 무제한 vocabulary를 사용한 SMT-baseline 시스템보다 성능이 좋다는 점을 보여줌.

-> MT에 대한 간단한 LSTM 기반 접근은 데이터가 많다면 sequence 학습 문제에서 성공 할 것임.

 

2. 문장을 뒤집는 방법을 통해 정확도를 높였다. 단기 상관관계를 발견하여 학습 문제를 간단하게 만들 수 있다.

 

3. 기존의 연구들이 LSTM의 제한된 메모리로 인해 긴 문장에서 번역 실패를 보였기에 우리 또한 긴 문장에서 실패할 것이라 생각함. 그럼에도 LSTM은 어순이 바뀐 데이터로 학습하였을 때 긴 문장을 번역하는데 어려움이 없었음.

 

4. 가장 중요한 것은 간단하고 상대적으로 최적화되지 않은 접근법이 SMT system을 능가한다는 점 입니다. 따라서 추가적인 연구는 더 큰 번역 정확도를 가져와 줄 것입니다. 이러한 결과는 우리의 접근 방식이 어려운 sequence to sequence 문제에서 잘 적용될 수 있다는 것을 보여줍니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형