Seq2Seq

앵우·2024년 2월 11일
post-thumbnail

입력 문장이 들어왔을 때 Encoder에서 만들어 낸 하나의 고정된 크기 context vector를 Decoder에서 받아 문장을 번역하는 결과를 낸다.

등장 배경


  • 전통적인 RNN에서는 입력과 출력의 길이가 같다고 가정하기 때문에 현실적인 기계번역에서 사용하기 어려움
  • 한국어와 영어의 문장 구조가 다르기 때문에 입력이 들어갈 때마다 정확한 예측은 거의 어려움

모델


기초

  • T : 시퀀스에 포함되어 있는 요소의 개수로 단어의 개수
  • hidden state : 이전까지의 데이터 정보
  • <sos> : start of sequence
  • <eos> : end of sequence

STEP 1

임베딩 레이어를 거쳐 차원을 줄인다.

STEP 2

hidden state는 다음 인코더에 들어가며 갱신된다.

  • Seq2Seq에서 LSTM을 인코더로 사용
    • 기본적인 RNN보다 긴 dependence를 처리하기 적합
  • 인코더의 마지막 hidden state를 context vector로 사용
  • 마지막 hidden state가 문장에 대한 모든 정보를 가진다.

STEP 3

디코더에서 s(t) 지금까지 출력된 문장에 대한 정보를 담은 벡터 표현이 hidden state이다.

STEP 4

하나의 linear한 레이어 fully connected를 거쳐 y(t) 현재의 출력 단어가 나오게 된다.

  • 이전까지의 hidden state 정보와 현재 단어까지를 linear layer를 통해서 아웃풋이 나옴

*인코더와 디코더는 서로 다른 파라미터(가중치)를 가진다.

  • 인풋 시퀀스는 t개 만큼 단어 존재
  • 입력과 출력 문장이 다를 때는 사용하기 어려움

👉 인코더 파트의 RNN과 디코더 파트의 RNN을 다르게 사용할 수 있음

장점

  • 입력과 출력의 길이가 다를 수 있음

단점

  • 긴 문장이 test data로 들어오게 되면 문장에 대한 정보를 모두 담을 수 없음
  • 어떤 시스템이나 프로세스에서 데이터의 흐름이 지연되거나 제한되는 시점이 bottleneck으로 작용

논문 리뷰


Task

영어를 불어로 번역

  • WMT’14 dataset 사용
  • BLUE score 34.8
  • SMT - BLUE score 33.3
  • LSTM + SMT - BLUE score 36.5

핵심

LSTM을 통해서 계속 업데이트 된 hidden state를 context vector로 함

실제 구현

  1. 인코더와 디코더에 사용한 LSTM은 파라미터가 다르다.
  2. LSTM을 총 4번 multilayer로 쌓아 capacity가 높아졌다.
  3. 입력 문장의 단어의 순서를 바꿨다.
    ex) abc -> cba
    상대적으로 첫번째 등장하는 단어끼리 높은 연관성을 가질 수 있도록 매핑시킬 수 있기 때문에 실제 모델의 학습 난이도를 낮춘다.
  • 근거
    • 일반적인 언어 체계에서 앞쪽에 위치한 단어끼리 연관성이 높다.
    • 순서를 뒤바꿈으로서 context vector에 문맥이 더 잘 담긴다.
    • 학습 효율이 높아서 정확도가 높아진다.
  1. beam search
  • 모델이 생성한 여러 후보 중에서 가장 가능성이 높은 시퀀스를 선택하는 탐색 알고리즘
  • 디코더
  1. Word Embedding
  • 16만 개 단어로 16만이었던 차원을 1000 차원으로 축소
  1. LSTM의 파라미터를 uniform distribution으로 초기화
  2. 모멘텀 없이 스토캐스틱 경사하강법을 사용하여 learning rate를 줄여나갔다.
  3. 배치 사이즈로 128을 사용
  • 학습 과정에서 모델을 foward할 때 사용하는 문장의 개수가 128개
  1. 같은 미니 배치 안에 포함되어 있는 각각의 문장들이 최대한 비슷한 길이가 될 수 있도록 조정해서 패딩을 최소화
  • 만약 랜덤으로 문장을 생성하게 된다면 하나의 긴 문장이 발생했을 때 다른 문장들의 길이를 맞추어 주는 패딩이 낭비이기 때문
  • 결과적으로 학습 속도를 높임
  1. LSTM의 hidden state를 PCA projection 시켰을 때 (2차원) 비슷한 시퀀스끼리 잘 clustering 됨
  2. teachear forcing
  3. 딥러닝 기법과 기존에 사용하였던 통계적 기법을 같이 사용, 앙상블 기법

느낀 점

모델 성능 개선에 대해 생각해볼 수 있었다. 트랜스포머 논문을 보는 데 기초가 되었다.

0개의 댓글