상세 컨텐츠

본문 제목

[Advanced ML & DL Week2] Sequence to Sequence Learning with Neural Networks

심화 스터디/Advanced ML & DL paper review

by avril22 2022. 9. 22. 17:06

본문

작성자: 15기 우명진

논문: Sequence to Sequence Learning with Neural Networks

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

논문 링크: https://s3.us-west-2.amazonaws.com/secure.notion-static.com/89be664f-f572-42b3-acb9-c5277b392000/5346-sequence-to-sequence-learning-with-neural-networks.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20220922%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20220922T071247Z&X-Amz-Expires=86400&X-Amz-Signature=a26418767119cd0cadc3370cb47484ac12db96ef35e2769798f8741f80ee23cf&X-Amz-SignedHeaders=host&response-content-disposition=filename%20%3D%225346-sequence-to-sequence-learning-with-neural-networks.pdf%22&x-id=GetObject 

 

 

 

Abstract

목표: WMT-14 데이터셋에서 영어를 프랑스어로 번역하기
모델: multilayered Long-Short Term Memory(LSTM)
방법: 한 LSTM을 이용하여 input sequence를 하나의 고정된 차원을 가진 벡터로 출력, 다른 LSTM을 이용하여 decoder에서 target sequence 나오도록 함 

1. LSTM이 SMT 보다 좋은 성능을 보였다 
2. LSTM은 긴 문장 번역에도 어려움이 없었음
+) SMT + LSTM은 더 좋은 성능을 보임 
3. 문장의 단어들의 순서를 바꿔주면 성능이 향상됨

Sequence 

 

:순서가 있는 데이터

 

ex) text - 문맥이라는 순서

      시계열 - 시간이라는 순서

 

영상, 음성 모두 순서와 함께 흘러가는 데이터


LSTM(Long- Short Term Memory) 

 

기존의 RNN 문제를 해결한 LSTM

: 오래된 정보도 기억할 수 있는 long-term dependencies를 가지고 있음

 

-RNN과 차이를 보이는 부분은 'state' 단계

LSTM의 state는 RNN과 달리 hidden state과 cell state를 가지고 있음

'cell state'는 이전의 정보를 기억하는 역할을 수행 

 

 


SMT: Statistical Machine Translation



- 확률로 번역을 하는 모델 

- 번역 모델과 언어 모델로 각각 나누어서 번역 수행  

   - 번역 모델: 번역 할 단어와 번역 될 단어의 번역 모델을 만드는 것 

   - 언어 모델: 문장의 확률을 예측하는 모델을 만드는 것 

 

 

단점:

- phrase를 넘어서는 즉, 문장에 대한 관계를 표현하지 못함 

- 어순이 다른 언어들에서는 낮은 성능을 보임

 

 

 

 

 

 

 

 


1. Introduction

Deep Neural Network(DNNs)의 장점

- back propagation을 통해 복잡한 함수도 해결 가능

 

한계: input과 output의 차원이 고정되어 있지 않은 경우

 "sequences pose a challenge for DNNS because they require that the dimensionality of the inputs and outputs is known and fixed."

ex) speech recognition, machine translation -> sequence to sequence problem 

 

 

-> LSTM으로 sequence to sequence 해당 문제 해결

 

 

HOW?

 

1) 하나의 LSTM을 이용하여 input sequence를 큰 크기의 context vector로 출력함 (encoding)

2) 다른 하나의 LSTM을 이용하여 출력 sequence (decoder) 

    -본질적으로 RNN 자연어 모델이지만, input sequence에 conditioned 되었다는 점이 다름 

 

 

 

 

- 입력값: ABC / 출력값: WXYZ / <EOS>가 나오면 모델 stop

-실제로는 A-B-C가 아닌 C-B-A로 넣는 것이 더 우수한 성능

 

 

 

<결과>

1. 5 deep LSTMs ensemble : BLEU 34.81

   (large neural networks 중에서 direct translation에서 가장 뛰어난 성능)

 <-> SMT : BLEU 33.30

2. SMT + LSTM: BLEU 36.5 (비록 state-of-art 보다는 살짝 낮지만)

3. 긴 문장에서도 좋은 성능(단어의 순서를 바꾸면서 task의 난이도 하락)

 

 

<LSTM의 useful property>

variable length를 가진 input sentence를 fixed-dimensional vector representation으로 바꾸는 점 

 

-> 번역 task이기 때문에 문장 중에서 의미를 대표하는 representations들을 찾고 비슷한 의미를 지닌 문장들끼리 가깝게 됨

 

 

 

 


2. The Model 

 

Standard Recurrent Neural Network(RNN)

- input sequence: T개 만큼의 단어, x는 다 다른 단어를 의미

- output sequence: T개 만큼의 단어 생성 

- 현재 hidden state: 이전 hidden state까지의 결과 + 현재 단어의 정보를 조합, sigmoid 적용 후  hidden state update

standard RNN

 

- 문제점: input과 output의 길이가 다를 때

-> 해결방법: input에 대한 RNN을 사용하여 하나의 고정된 vector 생성,  output에 대한 RNN

-> 한계: long-term dependencies 존재

  * long-term dependencies 문제: 과거의 hidden state 정보가 마지막까지 전달되지 못하는 경우 

 

-> LSTM으로 문제 해결! (LSTM은 long range temporal dependencies를 가진 문제들을 해결하기 때문)

 

 

 

 

LSTM 

- input sequence가 주어졌을 때의 output sequence 조건부 확률을 구하는 문제

- LSTM의 마지막 Hidden state에서 context vector 'v' 출력(고정된 차원을 가짐)

- v가 input sequence를 대표하기 때문에, 나머지 y의 확률만 계산

LSTM

 

  • 'A', 'B', 'C', 'EOS(End of Sentence)'를 계산한 이후에 'W', 'X', 'Y', 'Z' 'EOS'의 확률값을 계산함 

 

 

 


실제 모델 과정 

1. 서로 다른 두 개의 LSTM 모델 사용(input / output)

   계산 가능한 parameter의 개수, 여러 개의 언어에 대해서 학습이 자연스러워짐

2. LSTM with four layers으로 성능 개선

3. Input sentence의 단어 순서를 바꾸는 것이 성능 개선

  a, b, c가 아닌 c, b, a의 순서로 바꾸는 것이 성능 개선에 우수한 성능을 보임

 (a, b, c)와 (α, β, γ) 보다  (c, b, a)와 (α, β, γ)으로 바꾸는 것이 (a, α), (b, β) (c, γ)의 거리들이 각각 더 가까워지기 때문

 

   *(a,b,c)의 번역 결과가 (α, β, γ)

 

 

 


3. Experiments

3.1 Dataset Details

WMT' 14 English to French dataset

  • 12M 문장(348M 프랑스 단어 + 304M 영어 단어)
  • 두 언어 모두 고정된 크기의 단어를 사용함 
  • source language: 16만개 / target language: 8만개 사용 
  • 사전에 없는 문자열은 UNK토큰으로 처리

 

 

 

3.2 Decoding and Rescoring

[학습 단계]

S: Source(Training)

T: Target

- 어떤 source sentence가 주어지면, target sentence 하나가 출력

- log를 붙여서 확률이 높아지는 방향으로 학습

 

[Test 단계]

- target sentences 중에서 확률이 가장 높은 하나의 값을 출력

 

 

 

Beam Search Decoder

: 단순하게 확률이 높은 값을 선택하는 것이 아니라 더 깊이 들어가서 결과적으로 확률이 더 높은 문장 출력

 

-beam size 1일 때도 좋은 성능

-beam size 2일 때 가장 좋은 성능

 


Beam Search Decoder

 

기존의 greedy decoding은 가장 높은 확률 하나의 값에만 관심이 있음.
그렇기 때문에 만약 한번이라도 예측이 틀린다면, 최종 정확도에 치명적일 수 있음

 

 

Greedy Decoding

그렇기 때문에 beam search decoder 각 스텝에서 탐색의 영역을 k개의 가장 가능도가 높은 토큰들을 유지하여 다음 단계를 탐색함.

k는 사용자가 지정하는 hyper-parameter

Beam Search Decoder, k = 3

 

 

3.3 Reversing the Source Sentences

문장의 순서를 바꾸었을 때

  •  Test perplexity가 감소함 (5.8 -> 4.7)
  •  BLEU가 증가함 (25.9 -> 30.6)

 

 

왜? 

short term dependency 때문이다 

순서를 바꾸지 않았을 때 주로 source sentence와 target sentence 사이의 거리가 멀다는 문제점이 있음

따라서 'mininal time lag' 발생함

문장의 순서를 바꿔주게 되면 source sentence의 단어와 target sentence의 단어 사이의 평균적인 거리가 감소하게 됨 

 

(c, b, a)와 (α, β, γ)

따라서 optimization 문제를 더욱 쉽게 만들었다

 

 

특히나, 가장 앞쪽의 단어들 사이의 거리가 많이 감소하게 되어서 minimal time lag가 많이 줄어들게 됨

backpropagation이 'establishing communication'하기에 더 수월해짐 -> 전반적인 성능 개선

 

 

그러나, 앞쪽 단어에서만 성능이 크게 향상되고 뒤쪽 단어에서 성능이 떨어질 수는 있겠으나,

전반적으로 문장의 순서를 바꾼 LSTM이 좋은 성능을 보였음

 

 

 


perplexity(PPL)

 

언어 모델을 평가하기 위한 지표 

'얼마나 헷갈리느냐'

 

낮을수록 좋은 성능을 의미함


 

BLEU Score: Bilingual Evaluation Understudy Score

 

자연어 처리에서 기계 번역의 성능이 얼마나 뛰어난지 측정하기 위해 사용되는 대표적인 방법

-> 기계의 번역 결과와 사람의 번역 결과가 얼마나 유사한지 비교하는 방법

높을수록 좋은 성능

 

 

장점:

-언어에 구애를 받지 않음

-계산 속도가 빠름 

 

 

 

 

3.4 Training Details

- 4 layer LSTMs  / 1000 cells at each layer / 1000 차원 임베딩

- input 단어: 16만개, ouput 단어: 8만개

- LSTM parameter: -0.08부터 0.08까지의 정규 분포

- momentum 없이 stochastic gradient descent를 사용함, 5 epochs마다 학습률을 줄여나갔음 (왜?!*)

    *참고: 최적점 근처에서 손실함수의 기울기는 감소하기 때문에 최적점을 지나치지 않고 곧바로 수렴하기 위해서 학습률을 감소시키는 것이 좋다 

- 128 batch size(forward 학습 과정에서 사용하는 문장의 개수가 128개)

 

- 단순히 random하게 batch를 구성하게 된다면 한 batch 안에 들어있는 문장들의 길이가 많이 상이할 수 있음 

  -> 문장의 길이들을 맞추어 주느라 padding이 진행될 수 있어서 결론적으로 필요없는 계산과정이 진행됨 

  -> 최대한 minibatch 안에 들어있는 문장들의 길이가 유사할 수 있도록 하여 padding이 적게 들어가서 학습 속도를 높일 수 있었음 

 

 

3.5 Parellelization

- 8- GPU machine을 사용하여 parellezied 진행

- 128 minibatch 마다 매초 6,300 단어 학습 

 


parellelization

 

-대용량 데이터를 다룰 때는 병렬처리가 필수

-multiprocessing의 pool과 process 함수를 이용해서 병렬구조 연산 가능 

 

-언제 사용하면 좋은가?

1) for 문으로 시간이 오래 걸릴 때 

2) 활용 가능한 CPU 개수가 많을 때

 

 

 

 

3.6 Experimental Results

  • 초기값이 다른 5개의 LSTM 앙상블 + 12 beam size가 가장 높은 성능을 보여줌 

 

해당 task에 대해서 가장 높은 성능을 보인 것은 아니지만, 상당히 높은 성능을 보여주었음

구절로 번역하는 통계 기반 SMT에 비해서 딥러닝 기반 Method의 가능성을 잘 보여주었다는 점에서 의의

 

 

  • LSTM보다 SMT + LSTM이 더 우수한 성능 
  • SMT + LSTM(35.61)보다 SMT + reversed LSTM(35.85)이 더 우수한 성능 
  • SMT + reversed LSTM(35.85)보다 SMT + 앙상블 reversed LSTM(36.5)이 우수한 성능

 

 

3.7 Performace on Long Sentences

 

긴 문장에 대해서도 높은 성능을 보였음

 

*마지막 그림 참고 

 

 

 

3.8 Model Analysis

PCA&nbsp; on two-dimensional projections

 

- 같은 그룹에 있는 문장들끼리 유사한 의미를 지니고 있음

 

 

왼쪽 표: performance of our system as a function of sentence length

x축: test sentences sorted by their length

  • 35 단어까지 성능이 감소하지 않았음
  • 가장 긴 문장에 대해서 미묘한 감소 

 

오른쪽 표: LSTM’s performance on sentences with progressively more rare words

x축: test sentences sorted by average word frequency rank

 


4. Related Works


5. Conclusion

정리 : input 문장을 넣은 후, encoder를 거쳐서 하나의 context vector가 나오게 된다.
          그리고 LSTM 기반의 decoder를 거쳐서 번역을 하게 된다


1. 한정된 단어를 사용하는 LSTM이 제한 없는 단어를 사용하는 SMT에 비해서 좋은 성능을 보인다. 
2. 단어의 순서를 바꾸는 것이 성능을 개선한다.
  - standard RNN도 단어의 순서를 바꾸게 된다면, easily trainable해지지 않을까?
3. 예측과 달리 긴 문장에 대해서도 좋은 성능을 보여주었다.
 - 한정된 메모리 문제와 비슷한 모델들의 긴 문장에 대한 좋지 않은 성능으로 긴 문장에 대한 좋은 성능을 기대하기 어려웠는데, 예측과 달리 좋은 성능을 보임

 

 

 

 

참고 영상:

https://www.youtube.com/watch?v=4DzKM0vgG1Y 

 

 

 

참고 링크:

https://warm-uk.tistory.com/54

https://littlefoxdiary.tistory.com/4 

https://blog.naver.com/PostView.naver?blogId=sooftware&logNo=221809101199 

https://wikidocs.net/31695 

https://wikidocs.net/21697

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=bcj1210&logNo=221581535580 

https://jonsyou.tistory.com/27

관련글 더보기

댓글 영역