상세 컨텐츠

본문 제목

[논문 리뷰] Sequence to Sequence Learning with Neural Networks

AI_관련_논문리뷰/Deep_Learning

by HAKIIM 2024. 10. 15. 16:24

본문

https://arxiv.org/pdf/1409.3215

 

 

 

1. Abstract

기존의 DNN(Deep Neural Network)의 경우 Sequence한 Task에 적용이 불가.

더보기
  1. 고정된 입력 크기 문제: DNN은 입력 데이터를 고정된 크기의 벡터로 받습니다. 예를 들어 이미지나 고정된 길이의 텍스트를 처리할 때는 잘 동작하지만, 시계열 데이터나 자연어 처리(NLP)와 같은 순차적 과제에서는 입력 길이가 변할 수 있습니다. 예를 들어, 문장은 각각 다른 길이일 수 있고, 주식 가격처럼 시간이 흐르면서 길이가 변하는 데이터도 있습니다. DNN은 이 가변적인 길이를 처리할 수 없어 시계열 데이터에 적합하지 않습니다.

  2. 시간적 의존성(Time Dependency): 시계열 데이터나 언어 데이터는 시간에 따라 이전 상태가 이후 상태에 영향을 미칩니다. 즉, 이전 데이터(단어, 값 등)가 이후 데이터를 예측하거나 처리하는 데 중요한 역할을 합니다. 하지만 DNN은 이전 상태에 대한 정보를 기억하지 못합니다. 각 입력은 독립적으로 처리되기 때문에 앞에서 처리한 데이터가 뒤에 영향을 미치지 않습니다. 이런 구조로는 문장이나 시계열 데이터에서 앞의 정보가 중요한 상황을 다루기 어렵습니다.기존의 DNN(Deep Neural Network)의 경우에는 sequence한 task에 적용이 불가 
DNN 구조
  • 여기서 고안한 LSTM 기반의 sequential한 모델의 특징
    • 알려진 바와는 다르게 생각보다 긴 문장에 대해서 좋은 성능을 보임
    • 어순에 민감하면서도 능/수동에는 민감하지 않는 단어들 위주로 학습함
    • 어순을 거꾸로 하면서 입력 문장과 target 문장 사이에 많은 단기 종속성 (short term dependencies)를 도입하도록 함

 

 

2. Introduction

  • 기존 DNN에 관한 내용
    • 음성 인식과 객체 탐지와 같이 많은 task에 사용되고 있음
    • 병렬 컴퓨팅이 가능하고, 지도 학습의 경우에는 역전파를 이용하여 최적의 파라미터 찾음
    • 그러나, input과 target이 고정된 길이의 벡터로 encoding되는 점이 문제점
      • 실제로 대부분의 task는 고정된 길이가 아닐 것이기 때문에, 도메인 독립적인 모델이 필요
        -> 모델이 특정 언어나 도메인(분야)에 종속되지 않고 다양한 언어나 분야에서도 잘 작동하도록 해야 한다
  • 이러한 DNN의 문제점에 대하여 Sequence-to-Sequence 모델을 고안함
    • input sequence를 하나의 특정 시점에서 받고, output도 똑같이 하나의 특정 시점에서 받음
더보기

인코더와 디코더의 역할

  • 인코더 입력 시퀀스의 전체 정보를 하나의 벡터로 압축하여 요약하고,
  • 디코더는 그 벡터를 기반으로 출력 시퀀스를 순차적으로 생성합니다.

>>> Seq2Seq 모델에서 인코더가 입력 시퀀스를 처리한 후 최종적으로 하나의 벡터로 요약하고, 디코더가 그 벡터를 사용해 하나씩 출력 시퀀스를 생성하는 방식을 설명하는 것

    • 그리고 그 사이에 있는 것들은 모두 recurrent neural network language model임.
  • 모델의 구조

 

더보기

인코더 (Encoder):

  • 왼쪽에서부터 시작해 **입력 시퀀스(A, B, C)**가 차례대로 네트워크에 전달됩니다.
  • 각 입력은 인코더의 각 셀(네트워크)에서 처리되며, 최종적으로 <EOS> (End of Sequence) 토큰이 입력 시퀀스의 끝을 나타냅니다. 인코더는 입력 시퀀스 전체를 처리한 후 하나의 고정된 벡터를 생성합니다. 이 벡터는 입력 시퀀스의 전체 정보를 요약한 것입니다.

디코더 (Decoder):

  • 오른쪽에 있는 디코더는 인코더에서 전달된 고정된 벡터를 받아, **출력 시퀀스(W, X, Y, Z)**를 하나씩 생성합니다.
  • 디코더는 출력 시퀀스의 이전 단어(출력값)를 입력으로 받아서 그 다음 단어를 예측합니다. 처음에는 인코더로부터 받은 정보를 바탕으로 예측을 시작하고, 그 후에는 이전에 출력된 결과를 기반으로 다음 단어를 계속 예측합니다.
  • 마지막으로 <EOS> 토큰을 생성하여 출력 시퀀스가 종료됨을 나타냅니다.

주요 특징:

  • 왼쪽에서 오른쪽으로 이어지는 흐름이 인코더와 디코더의 흐름을 나타냅니다. 인코더는 입력 시퀀스를 차례대로 받아 하나의 벡터로 압축한 후, 디코더가 그 벡터를 받아 출력 시퀀스를 생성합니다.
  • A, B, C는 입력 시퀀스의 각 요소를 의미하며, W, X, Y, Z는 출력 시퀀스의 각 요소입니다.
  • <EOS>는 입력과 출력 모두에서 시퀀스의 끝을 의미하는 특별한 토큰입니다.

 

  • 결과
    • 모델의 구성
      • 5개의 deep LSTMs(with 384M parameters and 8,000 dimensional state each)를 앙상블
      • simple left-to-right beam-search decoder 사용
      • 적은 수(80K)의 단어로 학습한 결과, BLEU score가 34.81임
  • 결론
    • LSTM이 생각보다 긴 문장에 취약하지 않다고 함
    • 어순 배열 바꾸기 trick으로 optimize를 되게 simple하게 해줌
    • LSTM의 경우에는 가변 길이의 문장을 고정된 길이로 바꿔주는 것을 학습함
  • SOTA 보다는 약간 낮은 BLEU Score이기는 하지만, Sequence한 task를 다뤘다는 점에서 의의

3. The Model

  • RNN의 경우에는 아래와 같은 연산을 반복해서 수행함
    • 한계 : input과 output의 길이가 다르거나 복잡한 문제에 대한 해결력이 떨어짐
    • input을 고정된 길이의 벡터로 바꾼다는 한계점과 long term dependancy가 있음
  • LSTM을 이용한 Seq2Seq가 기존 RNN 모델과 다른 점
    • 2개의 LSTM을 이용하는 데 하나는 Encoder 용도, 또 다른 하나는 Decoder 용도(이것을 논문에서는 input과 output으로 각각 표현함)
    • Shallow하게 층을 쌓지 않고, 4개의 Deep LSTM을 쌓음
    • 입력 순서를 바꿔서 RNN에서 문제가 되었던 long term dependancy을 해결함
  • LSTM의 목적 : input과 output의 길이가 다르더라도 계산 기능 (아래 수식 이용)
    • v는 지금까지의 내용들이 들어가 있음 (Context Vector 같음)

 

 


 

4. Experiements

  • 적용 : *WMT’14의 English-to-French task에 적용함
    *Workshop on Machine Translation 2014 - 매년 번역 모델들의 성능을 비교하기 위한 대회
    • SMT(Statistical Machiine Translation) 시스템 기반이 아니라 직접 번역
    • SMT Baseline의 n-best lists에 대하여 rescoring을 진행함
      -> SMT 방식을 이용해 번역을 할 때 번역 가능성 후보가 생성된 리스트들의 모임 = n-best lists를 rescoring 한다는 것은 여러가지 번역 리스트 중 가장 적합한 번역을 선택한다는 것 이다.
더보기

- SMT

SMT는 통계적 기계 번역이라는 방법입니다. 이 방식은 사람이 직접 언어 규칙을 넣어주는 게 아니라, 컴퓨터가 엄청나게 많은 양의 번역 데이터를 보고 패턴을 학습합니다. 간단히 말해, 과거 번역된 문장 쌍을 보고 어떤 단어나 구문이 어떤 번역으로 연결되는지를 학습하는 방식입니다. 예를 들어, "apple"이라는 단어가 "사과"로 번역된 예시가 많이 나오면, 새로운 문장에서 "apple"을 보면 "사과"로 번역하려고 하는 겁니다.

SMT는 번역할 때 문장을 작은 단위로 나눕니다. 단어, 구문 또는 문장 일부를 번역하고 이를 다시 조립하는 방식인데요, 이 조립 과정에서 가장 가능성이 높은 번역을 선택하기 위해 확률을 사용합니다. 컴퓨터는 그동안 학습한 번역 패턴들을 바탕으로 확률이 높은 조합을 선택해 번역 결과를 만들어냅니다.

하지만 이 방식은 문맥을 잘 이해하지 못하고, 단어나 구문이 문장에서 어떤 의미로 쓰였는지 고려하지 못하기 때문에 자연스럽지 않은 번역을 내놓기도 합니다.

 

- NMT

NMT는 신경망 기계 번역이라는 방법입니다. 이 방식은 SMT와 달리, 문장 전체를 하나의 고차원 벡터(숫자들의 집합)로 변환한 후, 이를 통해 번역을 합니다. 신경망을 사용하는 방식이라서 문장의 의미를 더 잘 파악하고, 문맥에 맞는 자연스러운 번역을 할 수 있다는 장점이 있습니다.

NMT는 컴퓨터가 단순히 단어 쌍을 외우는 것이 아니라, 문장 구조와 의미를 학습하려고 합니다. 한 문장에서 어떤 단어가 중요한지, 전체 문맥에서 어떻게 해석되는지를 더 잘 이해할 수 있습니다. 이렇게 문맥을 반영한 번역이 가능해지니, 특히 긴 문장이나 복잡한 문장에서 SMT보다 훨씬 자연스러운 번역을 만들어내는 경우가 많습니다.

 

SMT와 NMT의 차이

  • 방식의 차이: SMT는 단어와 구문의 번역 규칙을 학습해서 그 조합을 확률적으로 결정하는 방식입니다. 반면 NMT는 문장 전체를 하나의 벡터로 변환하고, 그 벡터를 통해 문장을 이해한 후 번역합니다.
  • 문맥 이해: SMT는 문맥을 잘 고려하지 못하고, 단어 단위로 번역하는 경향이 있습니다. NMT는 문장 전체의 맥락을 파악해서 더 자연스러운 번역을 할 수 있습니다.
  • 번역의 자연스러움: NMT는 더 복잡한 문장을 번역할 때도 자연스러운 결과를 만들어내는 경향이 있습니다. SMT는 단어와 구문을 따로따로 번역해 결합하기 때문에 어색한 번역이 나올 수 있습니다.
  • 계산 자원: SMT는 상대적으로 계산 자원이 적게 필요하지만, NMT는 신경망을 활용하기 때문에 훨씬 더 많은 데이터와 연산 능력이 필요합니다.

 

4.1. Dataset Details

  • 총 348M의 French와 304M의 English 중 12M만 사용함. 이 선택받은 부분은 한 논문에서 선택한 것을 통해 참고한 것임. 또한, public availability of training과 testing을 고려해서 뽑은 거라 더더욱 신뢰할 수 있음
  • NLM이 단어의 벡터 표현에 의존적이라 가능한 모든 어휘들을 고정함
    • 160,000개의 English와 80,000개의 어휘들에 대해 진행하고, out of vocabulary는 <UNK> 토큰으로 나타냄

>>> 대규모 데이터에서 일반화할 수 있도록 돕고, 불필요한 단어들로 인한 혼란을 줄여주는 방식으로 사용됩니다.

더보기

NLM(Neural Language Model)이 단어의 벡터 표현에 의존한다는 것은, 신경망 기반의 언어 모델이 단어를 처리할 때 단어 자체를 텍스트로 인식하는 것이 아니라, 그 단어를 **벡터(숫자의 집합)**로 변환하여 학습하고 예측하는 것을 의미합니다. 이때 벡터는 다차원 공간에서 단어들의 의미적 관계를 표현합니다. 단어들이 벡터로 변환되는 과정을 **단어 임베딩(word embedding)**이라고 부르며, 대표적인 예로는 Word2Vec, GloVe, 또는 BERT 임베딩 등이 있습니다.

쉽게 풀어 설명하면:

  1. 단어의 벡터 표현:
    • NLM은 단어 자체를 텍스트로 보는 것이 아니라, 그 단어의 의미를 숫자로 변환한 벡터로 처리합니다.
    • 예를 들어, "cat"이라는 단어는 [0.1, 0.3, -0.7, 0.8]처럼 고차원의 숫자들로 표현될 수 있습니다. 이 벡터는 단어 간의 의미적 유사성을 반영하기 때문에, "cat"과 비슷한 단어인 "dog"는 벡터 공간에서 가까운 위치에 있을 수 있습니다.
    • 이렇게 벡터화된 단어를 이용해 NLM이 문장의 맥락이나 의미를 학습합니다.
  2. 사용 가능한 어휘를 고정한다:
    • NLM이 학습하는 동안 사용할 수 있는 단어의 수를 제한하는 것을 의미합니다. 예를 들어, 160,000개의 영어 단어와 80,000개의 프랑스어 단어만을 대상으로 번역을 수행하도록 설정한 것입니다.
    • 이렇게 제한된 어휘 내에서 각 단어마다 고유한 임베딩(벡터 표현)이 존재하며, 그 임베딩 값은 고정된 차원(예: 300차원 벡터 등)에서 주어집니다.
    • 즉, 모델이 학습할 때 새로운 단어를 만나게 되면, 해당 단어에 대한 임베딩이 없기 때문에 이를 <UNK> 토큰으로 처리하게 됩니다.

 

4.2. Decoding and Rescoring

  • Training phase
    • 아래 식을 최대화. 아래 식은 sequence가 주어질 때 모든 번역 확률에 대하여 평균을 구함
  • Test phase
    • 아래 식을 최대화. 아래 식은 decoding 시에 최대가 되어야 하며, simple left-to-right beam search를 이용한다. *beam search를 이용하면 <EOS>와 같은 부분을 걸러낼 수 있음

Beam Search

  • Beam search는 번역이나 생성 작업에서 최적의 결과를 찾기 위해 여러 경로를 탐색하는 방식입니다. 모든 경로를 탐색하는 것은 비효율적이므로, 가능성이 높은 경로 몇 개를 추적하며 최적화된 결과를 얻는 방식입니다.
  • 번역 과정에서, <EOS><EOS>와 같은 끝나는 토큰을 찾아내고, 불필요한 출력을 제거함으로써 최적의 번역을 얻도록 합니다.

 

4.3. Reversing the Source Sentences

  • 제목 그대로 문장의 순서를 역순으로 취했을 때 더 결과가 잘 나옴.
    • perplexity가 5.8에서 4.7로 하락했고, BLEU score가 25.9에서 30.6으로 상승함.
        • Perplexity(혼잡도): 모델이 얼마나 확신을 가지고 예측하는지를 나타내며, 낮을수록 좋습니다. 즉, 모델이 더 정확하게 번역을 할 수 있게 된 것을 의미합니다.
        • BLEU score: 번역의 정확성을 나타내는 지표로, 높을수록 번역 품질이 좋다는 의미입니다.
    • 제목을 역순으로 하면 Decoding 할 때, 처음 몇 개의 단어 간 거리가 가까워짐. (물론, 전체 평균 거리는 변하지 않음)
      • 즉, short term dependancy가 되고 (특히, decoding의 앞 쪽 time lag가 낮아짐), 역순을 취했을 때 마지막 부분의 Decoding 성능 문제도 발생할 수 있을 거라 생각하지만, 그렇지 않았음.

4.4. Training details

  • 모든 weight를 uniform하게 -0.08에서 0.08 사이로 정했음
  • SGD(Stochastic Gradient Descent, 확률적 경사 하강법) 사용, lr = 0.7이고, epoch ≥ 5이면 learning rate는 0.5배씩
더보기

SGD의 동작 방식:

  1. 손실 함수 계산: 먼저, 훈련 데이터의 일부분(배치(batch) 또는 하나의 샘플)에 대해 손실 함수 값을 계산합니다. 일반적인 경사 하강법에서는 모든 데이터를 이용해 손실 함수를 계산하지만, SGD는 데이터 샘플이나 작은 배치에서 손실을 계산합니다.
  2. 기울기 계산: 손실 함수의 기울기를 구해, 그 기울기에 따라 모델의 가중치를 업데이트합니다.
  3. 가중치 업데이트: 손실 함수를 최소화하는 방향으로 가중치가 조금씩 조정됩니다. 이는 학습률(learning rate)에 의해 제어됩니다.

SGD의 장점:

  • 빠른 학습: 일반적인 경사 하강법은 모든 데이터셋에 대해 계산해야 해서 시간이 오래 걸리지만, SGD는 데이터 일부만을 사용하기 때문에 빠르게 훈련할 수 있습니다.
  • 일반화 성능 향상: 각 배치나 샘플에 대한 손실이 다소 다를 수 있어, 경로에 **잡음(noise)**이 발생할 수 있는데, 이 잡음이 때로는 모델이 과적합을 방지하는 데 도움이 됩니다.

단점:

  • 진동: 하나의 샘플 또는 작은 배치에 의존하므로, 경로가 진동할 수 있어 최적점을 정확히 찾기 어려울 수 있습니다. 이를 해결하기 위해 모멘텀(Momentum) 같은 기법을 추가하기도 합니다.
  • batch = 128
  • gradient vanishing 때문에 강한 제약 조건
  • input으로 들어오는 문장 길이가 서로 다르기 때문에 하나로 맞춤 (패딩 등의 기법을 사용)
더보기

패딩 (Padding)

**패딩(Padding)**은 특히 시계열 데이터자연어 처리에서 서로 다른 길이의 입력 데이터를 동일한 길이로 맞추기 위한 기법입니다. 많은 딥러닝 모델, 특히 RNN이나 CNN 같은 모델들은 입력 데이터의 크기가 일정해야 정상적으로 작동하므로, 서로 다른 길이의 데이터가 입력될 때는 패딩 기법을 사용해 문제를 해결합니다.

Padding의 적용 예:

  1. 문장 길이 차이 해결: 예를 들어, 두 문장이 있다면:
    • 문장 A: "I like coffee."
    • 문장 B: "I love drinking coffee every morning."
    이 두 문장은 길이가 다르기 때문에, 동일한 길이로 맞추기 위해 짧은 문장 A에 '패딩'을 추가합니다. 예를 들어, 문장 A에 <PAD> 토큰을 추가하여:
    • 문장 A: "I like coffee. <PAD> <PAD> <PAD>"
  2. 고정된 입력 크기: 이렇게 하면 딥러닝 모델에 입력되는 모든 데이터가 고정된 크기를 가지게 됩니다. 이는 모델이 일관되게 데이터의 크기를 처리할 수 있도록 도와줍니다.

패딩 기법의 종류:

  • Post-padding: 문장의 뒤에 패딩을 추가합니다. 예: [I, like, coffee, <PAD>, <PAD>]
  • Pre-padding: 문장의 앞에 패딩을 추가합니다. 예: [<PAD>, <PAD>, I, like, coffee]
  • Symmetric padding: 문장의 앞과 뒤에 패딩을 동시에 추가합니다.

패딩의 한계:

  • 불필요한 정보 추가: 패딩은 데이터 자체의 정보가 아니므로, 지나치게 많은 패딩이 추가되면 모델 성능이 저하될 수 있습니다.
  • 효율성 저하: 특히 긴 시퀀스를 처리할 때, 패딩의 길이가 지나치게 길어지면 불필요한 계산이 늘어나게 됩니다.

Sequence-to-sequence 모델에서의 패딩 사용:

  • 문장 길이 통일: 시퀀스 모델에서는 입력 데이터가 고정된 길이로 맞춰져야 하는데, 패딩을 통해 다양한 길이의 문장을 동일한 길이로 맞추어 모델에 입력할 수 있습니다.

4.5. Parallelization

  • 시간이 너무 오래 걸리기 때문에 8개의 GPU로 병렬 처리

 

4.6. Experimental Results

  • BLEU Score를 성능 평가에 사용함. 5개 Ensemble 한 것이 젤 성능이 좋음

4.7, 4.8. Performance on long sentences, Model Analysis

  • 긴 문장에 대해서도 성능이 매우 좋음.
  • word sequence를 fixed dimensionality의 vector로 잘 바꿨음.

 

 

 


 

5. Conclusion

  • 제한된 어휘로 Large deep LSTM(4개의 층)을 쌓으면서 대규모 MT(Machine Translation) 작업에

쓰일 것으로 예상. 거기다 어휘를 제한하지 않으면 더 성능이 올라갈 것으로 예

  • 문장에서 어휘를 거꾸로 해서 학습시킬 때 (Encoding) 성능이 향상된 것을 알 수 있음
  • Short Term Dependencies가 있는 encoding problem 찾는 것이 중요
  • 마지막으로, 때로는 간단하고 최적화를 하지 않은, 직선적인 모델이 더 좋을 때가 있는데, 이 부분에 대해서는 Future work가 진행되어야 할 것 같음.

 


 

- 경사 하강법

경사 하강법(Gradient descent)은, 함수의 값이 낮아지는 방향으로 각 독립변수들의 값을 변형시키면서 함수가 최솟값을 갖도록 하는 독립변수의 값을 탐색 방법을 의미하며 일반적으로 입력된 Parameter의 검증(Validation)이 필요할 때 사용됩니다.

더보기

(1) 적절한 Step size (또는, 학습률(Learning rate))

 

 이번엔 Step size가 너무 작게 설정된 경우 발산하지 않을 수 있다는 점이 있지만, 최적의 파라미터를 탐색할 때 소요되는 시간이 다소 오래 걸릴 수 있다는 단점이 존재하게 됩니다.

 

(2) Local minima(지역 극솟값) 

 

 

실제로 최적의 파라미터를 찾기 위해 Global minimum을 찾아야 하지만, 경사 하강법의 특성상 알고리즘이 시작되는 파라미터 위치가 랜덤이므로 특정한 경우에서 Local minima에 빠지게 되어 헤어나오지 못하는 상황이 발생할 수도 있게 됩니다.

 

참고 - https://twojun-space.tistory.com/124

- 모델은 어떻게 학습을 하는 걸까?

 

고정된 임베딩 값을 통해 적절한 번역어를 결과로 제공한다면 이때 어떤 학습 방법이 사용된 것일까?

지도학습? 비지도 학습? 

 

 

- 그렇다면 Seq2Seq 모델은 단어를 단어로 예측하는 것일까 문장을 문장으로 번역하는 것일까?

 

Seq2Seq 모델은 단어 단위로 예측을 진행하지만, 단어 하나만으로 문장의 의미를 파악하는 것이 아니라, 전체 문맥을 고려하여 번역을 수행한다. 즉, 단어 단위 예측이지만, 예측된 단어들만을 개별적으로 보는 것이 아니라, 문장 전체의 의미와 문맥을 기반으로 번역된 문장을 완성하는 것이다.

관련글 더보기