working_helen

[NLP 학습] 1주차 : NMT, Seq2Seq / 논문 리뷰 : Sequence to Sequence Learning with Neural Networks 본문

deep daiv./NLP 스터디

[NLP 학습] 1주차 : NMT, Seq2Seq / 논문 리뷰 : Sequence to Sequence Learning with Neural Networks

HaeWon_Seo 2024. 8. 6. 13:05

출처 : https://kyull-it.tistory.com/212
출처 : https://brunch.co.kr/@jean/5

 

이전 포스트에서 다룬 RNN, LSTM 개념을 기반으로 NMT (Neural Machine Translation)의 개념과 Seq2Seq 모델에 대해 학습해본다. Seq2Seq 모델에 관한 논문 "Sequence to Sequence Learning with Neural Networks"를 리뷰한다.

 

1. NMT

2. Seq2Seq

3. 논문 리뷰 


1. NMT

1) SMT (Statistical Machine Translation, 통계 기반 기계번역)
- 대규모 데이터를 사용해 확률적으로 번역하는 방법
- 단어와 구문의 번역 데이터를 확보해 일종의 번역 사전을 생성하고

  입력 문장을 단어와 구로 분할하여 가장 연관성이 높은 번역 결과를 선택

- 희귀 단어와 구문에 대한 데이터의 부재, 대규모 메모리 요구 문제 
- 단어 간 의미관계를 제대로 반영하지 못하며, 문장 맥락(context awareness)에 대한 이해가 부족하다는 문제 


2) NMT (Neural Machine Translation(인공신경망 기반 기계번역)
- 인공 신경망을 사용하여 번역하는 방법
- 신경망의 은닉층을 사용한 다층 학습을 통해 문장 전체 정보를 파악하며 번역
- SMT보다 더 정확하고 문맥을 반영하는 번역 결과를 제시할 수 있음
- 입력 문장을 context vector로 변환하는 encoder,
  context vector에서 번역 문장을 생성하는 decoder로 구성

 

 

 

 

2. Seq2Seq

1) Seq2Seq 등장 배경

 

feed forward network는 input의 순서 관계를 고려하지 않음 
CNN은 순서 관계는 고려하지만 input과 output의 크기가 고정되어 있음
→ sequence를 처리하기 위한 RNN, LSTM 모델 

 

RNN 모델은 language sequence의 각 토큰을 하나씩 입력값하여 순차적으로 출력값을 생성 
- long term dependency (정보 소실 문제)
- monotonic alignment (순차적 출력에서 어순이 같음을 가정)
- 기본적으로 input과 output sequence의 길이가 동일한 문제에 적합, 길이가 다른 경우 모델의 아키텍처를 조정하거나 추가적인 메커니즘을 도입하여 다대일(many-to-one), 일대다(one-to-many), 다대다(many-to-many) 구조로 접근할 수 있지만 복잡해짐 

➡️ Seq2Seq2
= Encoder-Decoder 구조를 사용하여 input과 output sequence 사이
   고정된 길이의 context vector를 위치시킴 

 sequence를 단위로 하여 문장 전체를 입력값으로 인식
    모든 문장을 먼저 입력받은 다음에 번역 진행함으로써 어순을 반영하는 번역
    = monotonic alignment를 극복
 input과 output seqence의 길이가 달라질 수 있음

    = input과 output sequence 길이가 다른 sequence-to-sequence 문제를 처리 가능 


Seq2Seq2 논문의 의의
- encoder-decoder 아키텍처 제시 
- monotonic alignment를 극복

 

 

 

2) Seq2Seq의 구조 

 

- LSTM 기반의 Encoder-Decoder 구조

- input과 output sentence를 직접적으로 mapping을 하지 않고

  encoder가 input sentence를 context vector로 변환하고 decoder에서 이를 디코딩하여 output sentence를 생성 

- 어떤 길이의 input sequence가 들어오든지 관계없이, encoder LSTM은 sequence의 토큰 길이만큼 반복 학습하며, context vector의 고정된 길이에 해당하는 최종 출력값을 생성 

 

  • Encorder LSTM : input sequence → context vector
  • Decorder LSTM : context vector → output sequence
  • context vector : Encorder의 마지막 층의 출력값, Decorder의 첫번째 층의 입력값
  • v : 고정된 context vector의 크기

출처 : https://brunch.co.kr/@jean/5
출처 : https://velog.io/@nkw011/seq-to-seq

 

 

 

 

 

 

3. 논문 리뷰

논문명 : Sequence to Sequence Learning with Neural Networks

저자명 : Ilya Sutskever, Oriol Vinyals, Quoc V. Le

https://arXiv.labs.arxiv.org/html/1409.3215

 

Sequence to Sequence Learning with Neural Networks

Deep Neural Networks (DNNs) are powerful models that have achieved excellent performance on difficult learning tasks. Although DNNs work well whenever large labeled training sets are available, they cannot be used to m…

ar5iv.labs.arxiv.org

 

✏️ 논문 내용 정리 

- Seq2Seq 고안 배경
 : DNN은 강력한 ML 알고리즘이지만 input의 크기가 고정되어 있어야 한다는 특성으로 인해 sequential data에 적용되기 어려움 

→ DNN 대신 sequential data를 처리하기 위해 사용되는 RNN의 경우 input과 output sequence의 크기가 같아야한다는 한계가 존재 
따라서 길이가 가변적인 sequence to sequence 문제를 해결하기 위한 새로운 모델로 Seq2Seq을 제안 

- Seq4Seq과 이전 모델의 차이점

: LSTM 기반의 Encoder-Decoder 구조를 통해  input과 output sequence 사이 고정된 길이의 context vector를 위치시킴으로써 input과 output sequence 길이가 다른 sequence-to-sequence 문제도 처리 가능하다. 개별 토큰이 아닌 문장 전체를 입력값으로 사용하는 모델이다. 

- Seq2Seq의 구조
 = 4 layers LSTM 2가지 
 = input sequence를 고정된 크기의 벡터 v로 매핑하는 encoder LSTM
  + v를 입력값으로 사용해 output sequence로 매핑하는 decoder LSTM

- Seq2Seq의 학습
  source language S - target language T 데이터셋
  → P(T|S) 조건부 확률을 학습 
  → P(T'|S) 값이 가장 높은 T'를 번역 결과로 예측  

- 논문에서 제시하는 모델 특성
  ① 서로 다른 파라미터를 가지는 encoder와 decoder LSTM 사용
  ② 4 layer로 구성된 deep LSTM 사용
  ③ S의 단어 순서를 뒤집어서 학습시킬때 성능 향상 
      (특히 길이가 긴 문장에서 효과적으로 번역 성능 향상) 

 

 


▶ 0. Abstract

 

- DNN이 많은 어려운 과제에서 좋은 성과를 보여왔지만, sequence를 sequence에 매핑하는 문제에는 사용될 수 없다.
- 이 논문에선 multi-layered LSTM을 사용함으로써 sequence learning을 위한 딥러닝 구조를 제시한다.
- 한 deep LSTM이 input sequence를 고정된 크기의 벡터로 매핑하며, 또 다른 deep LSTM이 vector로부터 target sequence를 매핑한다.
- 영어-프랑스어 번역 과제를 활용했으며, BLEU score를 이용해 모델을 평가했다.
- LSTM 모델은 긴 문장에서도 잘 작동했으며, 어순에는 민감하나 능동/수동 여부에는 상대적으로 불변했다.
- 또한 input sequence의 단어 순서를 뒤집는 것이 단기 종속성을 도입하여 최적화 문제를 더 쉽게 만듬으로써 LSTM의 성능 향상에 기여함을 발견했다.

 

 

 

▶ 1. Introduction


- DNN은 음성인식, 사물인식 등 여러 어려운 문제에서도 좋은 성능을 보이는 강력한 ML 모델이다.
- 하지만 DNN은 input과 output이 고정된 크기의 벡터로 인코딩되는 문제에만 적용 가능하기 때문에 길이가 가변적인 sequence to sequence problem에는 사용되기 어렵다. 
- speech recognition, machine translation, question answering 등

- 논문은 LSTM 구조가 sequence to sequence problem를 해결할 수 있음을 보인다. 
- LSTM을 이용해 input sequence를 읽어 고정된 크기의 벡터 표현을 얻고, 또 다른 LSTM을 이용해 벡터로부터 output sequence를 추출한다.

- LSTM 모델은 특히 길이가 긴 문장에서도 좋은 성능을 보였다.
- 이는 모델 학습과 테스트에서 source language의 토큰 순서를 역방향으로 뒤집음으로써 short term dependency를 반영했기 때문으로 추측한다. 

 

 

 

▶ 2. The model

 

1) RNN의 한계

 

- RNN은 위의 수식을 반복적으로 적용하며 output sequence를 계산한다.
- 하지만 input과 output sequence의 길이가 다를 경우 적용하기 어렵다.

 

- 이전 논문의 경우, 하나의 RNN을 이용해 input sequence를 고정된 사이즈의 벡터로 변환하고 해당 벡터를 output sequence로 변환하는 방식을 사용했다.
- 하지만 RNN이 가지고 있는 long term dependency 문제가 발생하기 때문에 이 논문에선 RNN이 아닌 LSTM을 사용하여 long term dependency를 피하고자 한다. 

 

 

2) LSTM을 사용한 모델

- 모델의 목표는 길이가 T인 input sequence가 주어졌을때, 길이가 T'인 output sequence의 조건부 확률을 학습하는 것

 

-  encoder LSTM을 사용해 input sequence로부터 고정된 크기의 벡터 표현 v를 얻는다. v는 encoder LSTM의 마지막 은닉층의 출력값이다.
- 첫 은닉층의 입력값이 v인 decoder LSTM을 이용해 output sequence 확률을 계산한다.

- 모델의 특징
① encoder와 decoder로 서로 다른 파라미터를 가지는 LSTM을 사용

: 모델 파라미터 수를 많이 늘리지 않으면서, 각각의 언어에 대해 동시에 LSTM을 학습시킬 수 있다.

② 4개의 layer로 구성된 LSTM을 사용

: Deep LSTM을 사용했을때 모델 성능이 훨씬 높다. 

 

③ 모델 학습과 테스트에서 input sequence의 단어 순서를 뒤집어서 사용  
: SGD가 input과 output 단어 간 관계를 더 쉽게 만들 수 있다. 

 

 

 

▶ 3. Experiments

 

- WMT'14 English to French Machine Translation Task를 사용해 모델을 실험
- SMT를 기반으로 하지 않고 직접 input 문장을 번역

- SMT baseline의 n-best에 대해서도 rescoring을 진행 

 

▶ 3.1. Dataset details

- WMT’14 English to French dataset 사용 
- 348M개의 프랑스어 단어와 304M개의 영어 단어로 구성된 12M개 문장으로 구성 
- 두 언어에서 모델이 사용할 어휘들을 미리 선택했다. 가장 많이 사용되는 영어 단어 16M개와 프랑스어 단어 8M개를 사용했고, 선택되지 못한 문장 내 단어들(out of vocabulary)은 모두 <UNK> 토큰으로 표현하였다.

 

▶ 3.2. Decoding and Rescoring

- 실험에서 핵심 과제는 많은 source language - target language 데이터 쌍을 이용해 deep LSTM을 훈련시키는 것 
- deep LSTM 모델의 목표는 source sentence S에 대하여 correct translation T으로 번역될 확률을 최대화하는 것 

- 아래의 objective function을 사용해 log probability를 최대화하도록 훈련했다. 

- 학습된 모델은 주어진 input에 대해 조건부 확률값이 가장 높은 번역을 예측한다. 


- beam size가 B인 left-to-right beam search decoder를 사용했다.
- 각 단계에서 가능한 모든 단어들에 대하여 hypothesis를 생성한다. hypothesis의 크기를 줄이기 위해 모델이 계산한 확률이 가장 높은 B개의 hypothesis만 남기고 나머지는 제거한다. (각 단계마다 확률값이 가장 높은 상위 B개의 후보 문장들만 남겨져 다음 단계로 넘어가는 것)
- hypothesis에 <EOS> 추가되면 해당 hypothesis는 완성된 것으로 간주된다.

※ log probability를 사용하는 이유?
: joint probability는 모든 (T, S)에 대한 확률을 곱한다. 이때 0~1 사이의 값을 곱하다보면 값이 0에 가까워지는 언더플로우(underflow) 문제가 발생할 수 있기 때문에 수치적 안정성을 높이고자 로그 변환을 적용한다. 또한 로그 변환을 통해 곱셈 연산을 덧셈 연산으로 바꿈으로써 더 간단한 연산이 가능해진다.

* Beam Search 
: 최적화 및 탐색 문제를 해결하기 위해 사용하는 알고리즘
대표적인 탐색 및 최적화 알고리즘인 Greedy Search의 경우 각 단계에서 가장 확률이 높은 후보 하나만 선택하는 단일 경로 방식이기 때문에 탐색 시간은 빠르지만 정확도가 떨어진다는 단점이 있다. 이를 개선하기 위해 Beam Search에서는 Beam Width에 해당하는 개수만큼 다수의 후보를 다음 단계로 확장하는 방식을 사용한다.

 

 

 

▶ 3.3. Reversing the Source Sentences

- source language 문장을 역방향으로 뒤집어서 학습시킨 경우 LSTM의 성능이 더 높았다.

- test perplexity가 5.8에서 4.7로 하락, BLEU score가 25.9에서 30.6으로 상승했다. 

- 문장의 초반 단어에 대해선 더 신뢰성이 높은 예측이 나오고, 후반 단어에 대해선 신뢰성이 낮은 예측이 나올 것이라 예상했으나, 긴 문장에 대해서도 단어 순서를 뒤집은 문장에서 모델이 더 잘 학습되었다.

 

- 이 현상에 대한 논문의 가설
: 데이터셋에 많은 short term dependency가 도입되었기 때문이다. 
일반적으로 source 문장과 target 문장에서 상응하는 단어쌍 간 거리가 멀기 때문에 큰 minimal time lag가 발생한다. 문장을 뒤집는 경우, source 문장과 target 문장에서 상응하는 단어 간의 평균 거리는 변하지 않지만, source 문장의 초반 단어들이 target 문장 단어들과 매우 가까워지기 때문에(short term dependency 도입) 해당 단어들에 대해 minimal time lag가 크게 감소한다. 이 덕분 모델 학습의 역전파 과정에서 source language와 target language의 관계를 찾아내는 것도 더 쉬워진다. 

 

※ source language의 후반 단어들이 상응하는 target 단어들과 멀어지는 문제는?
: RNN은 sequence를 앞에서부터 순차적으로 학습하기 때문에 초반 학습의 정보나 에러가 후반 학습까지 누적되는 형태이기 때문에 초반 학습을 잘 해놓는 것이 전체적인 학습 성능에 중요하다. 따라서 후반 단어들 간 거리가 멀어진다고 해도 이전보다 초반 단어들이 가까워지면서 얻는 정보 증가 + 에러 감소의 효과가 더 크기 때문에 성능이 높아진다고 할 수 있다. 
* short term dependency : 가까이 위치한 토큰들 간 상호의존성 
* minimal time lag : 입력과 출력 사이의 지연 시간을 최소화하는 것

* sequencial problem에서는 앞쪽에 위치한 data가 뒤의 모든 data에 영향을 주기 때문에 앞에 위치한 data일 수록 중요도가 더 높다. source 문장에서 앞쪽에 위치한 data들에 대하여 target 단어쌍과의 거리를 줄임으로써 중요한 초반 data를 학습하는데 더 비중을 둘 수 있다. (출처) https://cpm0722.github.io/paper-review/sequence-to-sequence-learning-with-neural-networks

 

 

 

▶ 3.4. Training details

  • 160,000개의 input 단어, 80,000개의 output 단어
  • 4 layers LSTM = 1000개 cell, 1000차원 word embedding

  • 모든 파라미터를 -0.08에서 0.08 사이의 균등분포로 초기화 
  • SGD 사용, lr = 0.7, epoch = 7.5
  • batch = 128
  • minibatch의 모든 문장 길이가 같도록 설정 
  • exploding gradient를 방지하기 위해 gradient norm에 강한 제약 조건 추가 
  • 학습 결과 : LSTM당 64M개 recurrent connections, 380M개 parameter
* 파라미터 개수 확인 
- source language vocuablary 16만 / target language vocuablary 8만
- embedding layer 파라미터 : 24만*1000차원 = 240M

- LSTM 1개당 파라미터 : input*hidden*gate 개수*2 + bias의 개수 = 1000*1000*4*2 + 4000 = 약 8M 
                                        encoder와 decoder에 LSTM이 각각 4개씩 총 8개 사용됨
- 출력층 Fully Connected Layer 파라미터 : 8만*1000 = 80M

==> 240M + 8M*2*4 + 80M = 384M개의 파라미터
       LNN의 3가지 층 중에선 input(embedding layer)에서 가장 많은 parameter가 발생

 

 

 

▶ 3.5. Paralleization
- 8-GPU 기계를 사용하여 모델을 병렬화
- 4개의 GPU는 LSTM layer 4개를 각각을 연산하는데 사용하고
  4개의 GPU는 softmax 병렬화에 사용했다.
- 각 LSTM layer는 각자의 GPU에서 계산되며, 현재 layer의 계산이 끝나면 다음 layer의 GPU에 활성화 신호를 전달하는 방식으로 처리한다.

 

▶ 3.6 Experimental Results

- 번역의 품질을 평가하기 위해 BLEU 점수를 사용
- 무작위 초기화와 미니배치 순서 조건에서, 5개의 deep LSTM ensemble 모델이 BLEU 점수 34.81로 가장 좋은 성능을 보였다.
- 해당 모델을 사용해 baseline 1000-best를 rescoring한 결과, SOTA에 해당하는 best WMT’14 result의 37.0보다 0.5 낮은 36.5 BLEU score를 얻었다.
- 하지만 모델 학습에 사용한 단어에서 어휘가 부족했음에도 불구하고 구문 기반 SMT(Baseline System)을 상당한 차이로 능가했다는 점에서 의의가 있다.

 

* BLEU (Bilingual Evaluation Understudy) 점수
 : 기계 번역 시스템의 성능을 평가하기 위해 사용되는 metric
MT 모델이 생성한 번역 결과와 인간 번역자가 생성한 번역 사이의 n-gram 일치를 기반으로 계산한다. 0~1의 값을 가지며 1로 갈수록 더 성능이 좋은 MT 모델이라고 볼 수 있다.

* baseline : SMT, NMT 이전에 사용되던 통계 기반 번역 모델
* Single / Ensemble : 몇 개의 LSTM 모델을 사용했는지
* forward / reversed : 모델 학습시 input sequence를 뒤집었는지

* baseline 1000-best : SMT에서 생성된 1000개의 hypotheses, 가장 가능성이 높은 번역 후보 1000개
* Rescoring : SMT의 번역 후보 1000개에 대해서 NMT로 다시 점수를 매기는 과정, SMT가 제시한 상위 번역 후보들에 대하여 각 문장으로 번역될 확률값을 LSTM 기반 모델을 이용해 다시 예측한다. 이 논문에선 SMT에서 구한 번역 후보 문장들에 대하여 LSTM 기반 모델로 번역 확률을 다시 계산하여 예측하였을 때 번역 성능이 향상되었음을 보인 것이다.

 

 

 

 

 

▶ 5. Conclusion

- 학습에 사용되는 어휘가 부족하고 문제에 대한 가정도 거의 하지 않은 large deep LSTM이, 어휘가 무제한인 SMT-based system보다 성능이 더 뛰어남을 보였다. 

- 특히 source 문장의 단어를 뒤집어 학습시켜 모델 성능을 크게 개선할 수 있었으며
- deep LSTM 모델은 매우 긴 문장을 올바르게 번역할 수 있었다.

- 충분한 훈련 데이터가 있다면,  이 논문에서 사용한 LSTM 기반의 간단한 MT 접근 방식은 다른 sequence learning  problem에도 사용될 수 있을 것이다.

 

 

 

 

 

 

 

 

 

 

Reference

https://zdnet.co.kr/view/?no=20161223190944
https://developers.naver.com/products/papago/nmt/nmt.md
https://www.lionbridge.com/ko/blog/translation-localization/machine-translation-in-translation/
https://velog.io/@shonsk0220/NMTNeural-machine-translation%EC%9D%B8%EA%B3%B5%EC%8B%A0%EA%B2%BD%EB%A7%9D-%EA%B8%B0%EA%B3%84%EB%B2%88%EC%97%AD

 

https://coshin.tistory.com/47
https://miinkang.tistory.com/23
https://brunch.co.kr/@jean/5
https://cpm0722.github.io/paper-review/sequence-to-sequence-learning-with-neural-networks
https://cpm0722.github.io/paper-review/sequence-to-sequence-learning-with-neural-networks
https://blog.naver.com/sooftware/221809101199
https://wikidocs.net/31695

https://m.blog.naver.com/kisooofficial/223040394090