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

hyo._.op·2026년 7월 22일

논문리뷰

목록 보기
8/16

Overview

논문명: Sequence to Sequence Learning with Neural Networks
학회(출판연도): NeurIPS (2014)
연구분야: 딥러닝 기반 시퀀스 표현 학습 및 시퀀스-투-시퀀스 모델


Abstract(초록)

✓ 토큰(Token)

  • 더 이상 분해할 수 없는 텍스트의 기본 단위
    • 단어, 문자, 문장의 일부
      • 단어단위 토큰화: i love bitamin → [”i”, “love”,”bitamin”]
      • 문자단위 토큰화: i love bitamin →[”i”,”l”,”o”,….,”n”]

✓ 토큰화(Tokeniazation)

  • 텍스트를 토큰들로 나누는 과정
    • 토큰화 이후, 단어 임베딩이나 벡터화 등의 작업을 통해 텍스트 분석
    • 긴 문장을 의미있는(정보단위로 기능, 쓸모있는) 기본 단위인 토큰들로 분해하는 작업

✓ NLP에서 “의미있다”

→ 모델이 학습하거나 예측하는데 쓸모가 있다

  • 문자 단위의 토큰화의 경우(”b”,”i”,”t”,”a”,”m”,”i”,”n”)
    • 각 문자는 독립적으로 의미가 없지만, 모델이 이 문자들을 조합해서 bitamin이라는 단어를 이해하거나 예측할 수 있다면 의미가 있다 봄

✓ 시퀀스

  • “순서”가 중요한 데이터 집합(순서가 바뀌면 의미가 달라질 수 있음)

✓ 기존 DNN의 문제점

  • 대규모의 라벨이 붙은 학습 데이터가 주어질 때 잘 동작하더라도, 시퀀스를 시퀀스로 매핑하는 문제에는 적용할 수 없음

✓ 시퀀스를 시퀀스로 매핑하는 문제 (ex. 영어문장 → 프랑스어로 번역)

  • 입력문장(영어)이 다른 시퀀스(프랑스어)로 변환되는 문제
    • 여기서 영어 문장: 하나의 시퀀스(단어들의 연속), 이를 변환해 프랑스어 시퀀스 생성

✓ LSTM 기반 시퀀스-투-시퀀스 학습

  • 시퀀스 구조에 최소한의 가정만 두는 end-to-end 시퀀스 학습 방법 제안

  • 다층 LSTM(Long Short-Term Memory)

    ① 입력 시퀀스 → 고정 차원의 벡터로 변환

    ② 또 다른 심층 LSTM이 이 벡터로부터 목표 시퀀스를 디코딩


✓ 시퀀스 구조에 최소한의 가정만?

  • 일반적인 시퀀스 문제(ex. 문장 번역)에서는 입력과 출력 시퀀스 간의 길이나 구조가 복잡
    • 기존 - 단어별 대응 규칙 or 정렬 정보 같은 가정을 많이 두고 모델링
    • 논문 - 최소한의 가정만 → 입력시퀀스와 출력시퀀스가 어떤 관계인지 미리 정하지 않겠다

✓ end-to-end

  • 입력 문장 → 출력 문장 전체 과정을 한 번에 학습
  • 인코더 LSTM과 디코더 LSTM을 나누지만, 전체 모델이 하나의 목표 함수를 기준으로 동시에 학습
    • 따로 전처리 단계에서 규칙을 넣거나, 중간 단계에서 사람이 개입할 필요X

✓ 입력 시퀀스를 고정 차원의 벡터로 변환?

  • 입력 시퀀스를 인코더 LSTM에 넣어서 마지막 은닉상태출력벡터로 고정 크기의 벡터 만듦

    → 이 벡터는 문장 전체 정보를 압축한 컨텍스트 벡터

✓ 또 다른 심층 LSTM이 이 벡터로부터 목표 시퀀스를 디코딩?

  • 디코더 LSTM은 이 고정 벡터를 받아서 순차적으로 출력 시퀀스를 생성

    ex. 영어 → 프랑스: 디코더는 벡터 기반으로 프랑스어 문장을 한 단어씩 생성

✓ 실험

  • WMT`14 데이터셋 영어 → 프랑스어 번역 (기계번역)

    ① 성능 향상 - BLEU점수

    • BLEU 점수 34.8 (↔ 기존 SMT BLEU 33.3)
      • 논문의 LSTM을 통해 SMT 1000개의 가설 재순위화 → BLEU 36.5로 향상
    • 긴 문장도 ok~

    ② 단어 순서 뒤집기

    • LSTM은 단어 순서에 민감하지만, 능동태와 수동태에서는 비교적 강건

      • 능동,수동 → 문장 구조가 달라도 핵심 의미는 비슷하게 벡터로 표현
    • 단기 의존성을 증가시켜 LSTM이 더 효과적으로 학습할 수 있게 도와줌

      ✓ 단기 의존성(short-term dependency)

      • 번역에서 첫 번째 단어와 마지막 단어 사이의 거리를 생각해보면,

        • 원래: i love bitamin → 출력 첫 단어와 대응되는 입력 단어 멀리 떨어져 있음

          ⇒ 장기 의존성 문제(기울기 소실 문제로 어려움)

      • 단어를 뒤집으면

        • 출력 문장의 첫 단어와 대응되는 입력 단어가 가까워짐 → 단기 의존성

          ⇒ 단기 의존성이 많아지면, 역전파를 통한 학습이 쉬워짐


1. Introduction (서론)

✓ DNN

✓ N개의 N-비트 숫자

  • N개의 숫자가 각각 N비트로 표현되는 숫자들 의미
    • N=4 → 4비트로 표현되고 총 4개의 숫자들로 이루어진 집합

✓ N개의 N-비트 숫자 “정렬”

  • N개의 N-비트 숫자들을 오름차순이나 내림차순으로 정렬해야하는 문제

    → 이 숫자들을 정렬하는 기능을 신경망이 수행할 수 있는데 2개의 은닉층만으로도 해결 가능

  • 음성인식, 시각적 객체 인식과 같은 어려운 문제에서 매우 뛰어난 성능

  • 비교적 적은 단계만으로도 임의의 병렬 연산 가능

    • 2개의 은닉층만으로도 N개의 N-비트 숫자 정렬 가능 → 복잡한 문제를 단순한 구조로 해결가능

      ✓ 왜 신경망으로 정렬이 가능할까?

      • 신경망은 입력 데이터를 처리하고 패턴을 학습할 수 있는 능력有
        • DNN은 선형적이지 않은 연산을 반복적으로 적용하여 복잡한 문제를 풀 수 있음
      • 정렬문제=순서를 파악하고 비교하는 작업: 2개의 은닉층으로 순서, 비교 패턴 학습 가능

      ✓ 왜 2개의 은닉층만으로 가능한가?

      • 기본적인 신경망 구조는 선형 연산만으로는 해결할 수 없는 문제들을 다룰 수 있게 해줌

        은닉층을 추가함으로써 비선형적인 문제도 해결할 수 있음

        • 단일층: 선형변환만 가능 - 직선적일 수 밖에 없음

        • 3번이상의 은닉층: 상대적으로 더 복잡한 문제나 큰 데이터셋에서 필요, 과적합 위험

          ⇒ 2개의 은닉층이 학습 효율성성능면에서 최적의 균형을 제공하는 경우가 많음

(P) DNN의 한계

  • 입력과 출력이 고정된 차원의 벡터로 인코딩될 수 있는 문제에만 적용 가능

    • 시퀀스-투-시퀀스 문제(ex. 기계 번역, 질의응답 등)에서는 한계 존재

      → 길이가 고정된 데이터(ex. 이미지나 고정된 길이의 텍스트 등)에는 잘 작동하지만,

      길이가 달라질 수 있는 시퀀스 데이터에는 적합X

✓ (S) LSTM을 이용한 시퀀스-투-시퀀스 학습

  • LSTM: 시퀀스를 처리하는데 강력한 신경망

    • 장기의존성을 학습하는데 능숙하여, 시간 지연이 있는 입력과 출력 간의 관계를 잘 모델링 가능

    • 시퀀스-투-시퀀스를 해결하기 위해 2개의 LSTM 사용

      • 인코더 LSTM

        → 입력 시퀀스를 한 번에 한 단어씩 읽어서 고정된 크기의 벡터로 변환(입력시퀀스 요약정보)

      • 디코더 LSTM

        → 인코더에서 생성한 고정된 벡터를 받아 출력 시퀀스 생성 후 차례대로 예측

        입력 시퀀스를 조건으로 하는 순환 신경망 언어 모델

        ⇒ 장기 의존성 문제 해결

<참고> [세션 PPT]

✓ 관련 연구

✓ re-ranking 실험

  • abstract랑 똑같은 이야기
    • LSTM 순서 뒤집는 트릭으로 단기의존성을 만들어서 최적화 쉬워짐
    • SGD로 학습해도 긴 문장 잘 처리 가능

2. The model

<참고>

FNN(feedforward neural network)RNNLSTM
- 입력 데이터 순차적으로 처리
- 각 입력은 독립적
- 시간적인 순서나 의존성 고려X
- 이전의 출력이 현재의 입력에 영향을 미치는 구조
- 시간적인 의존성 처리 가능
- RNN의 한 종류
- 긴 시간 의존성을 처리할 수 있도록 설계된 네트워크
- 더 효과적으로 긴 시간 간격의 정보 기억 및 처리 가능

✓ (P)

  • RNN은 ①입력과 출력이 같고, ②정렬이 이미 알려져 있는 경우에는 시퀀스 투 시퀀스로 쉽게 매핑 가능

    BUT, ①입력과 출력 길이가 다르거나, ② 복잡하고 비단조적인 관계를 가지는 경우에는 적용 어려움

    ✓ 비단조적인 관계

    • 변수 간의 관계가 일정한 방향으로만 변화하지 않고, 증가와 감소가 반복될 수 있는 경우
      • 변수 간의 증가나 감소가 일관X(변동적)
      • 다른 요인에 의해 영향을 받을 수 있음

✓ (S)

  • 입력 시퀀스를 하나의 고정 길이 벡터 v로 매핑 (첫 번째 RNN)

  • 그 벡터를 기반으로 출력 시퀀스 생성 (두 번째 RNN)

    BUT, RNN은 장기 의존성 문제로 학습이 어려움 → LSTM으로!

    • 아마 v: 컨텍스트벡터, 첫 번째 RNN: 인코더 LSTM, 두번째 RNN: 디코더 LSTM

  • 방법
    • 입력 시퀀스를 LSTM으로 인코딩하여 “마지막 hidden state = v”로 고정 길이 벡터를 얻음
    • 이후, 디코더 LSTM이 v를 초기 hidden state로 설정한 뒤, 출력 시퀀스를 생성
    • 이때 각 단어의 확률 분포 p(y_t|v,y1,y2,,,yt-1)는 소프트맥스(softmax)로 표현

✓ 개선점 3가지

① 입출력에 서로 다른 LSTM 사용

  • 인코더 LSTM(입력용), 디코더 LSTM(출력용) 분리
  • 파라미터 수를 늘리면서도 연산비용이 크게 늘지X
  • 다국어 학습에도 자연스럽게 확장 가능

② 깊은 LSTM 사용 (deep LSTM)

  • 얕은 LSTM보다 깊은 LSTM이 성능이 훨씬 우수
  • 4층 LSTM 사용

③ 입력 문장 단어 순서 뒤집기 (reverse input sentence)

  • 입력 (a,b,c) → 출력(알파,베타,감마) 대신
    입력 (c,b,a) → 출력(알파,베타,감마)

    → 단기 의존성! (장기 의존성 문제 해결)

    알파가 난이도 결정 → 초기 출력이 잘 맞으면, 뒤 토큰들도 쉽게 맞아 떨어진다~(가장어려운 부분을)


3. Experiments

✓ SMT(Statistical Machine Translation)

  • 확률적 모델 기반으로 한 기계 번역 방식

  • 대규모의 평행 코퍼스(같은 의미를 가진 두 언어로 된 문서)에서 얻은 통계적 규칙을 사용하여 한 언어에서 다른 언어로 번역

    • 주어진 입력 문장을 단어와 구문으로 나누고, 이를 확률적 규칙에 따라 번역
    • 번역할 때 가장 가능성이 높은 번역을 선택하는 방식으로 작동
  • 문법적 정확성보다 빈번한 단어 및 구문 패턴을 기반으로 작동하여 번역 수행

    → 단어 순서가 중요한 언어적 맥락을 다루는 데에는 한계

✓ n-best 리스트

  • 번역 시스템에서 생성한 상위 n개의 번역 후보 리스트
  • 시스템이 제공할 수 있는 여러 가지 번역 결과 중 가장 확률이 높은 번역 나열

✓ WMT’14 영어 → 프랑스어 기계번역(MT) 방법

  • SMT 시스템없이 직접 번역 (Direct translation)
  • SMT baseline의 n-best 리스트를 재점수화(rescoring)
SMT 시스템 없이 직접 번역SMT baseline n-best 리스트 재점수화
- 기계 번역 시스템을 단독으로 사용하여 직접 번역 수행
- 생성된 번역 결과: 1가지
- SMT 시스템이 생성된 여러 후보 번역 중 가장 적합한 번역 선택
- n-best 리스트에서 상위 n개의 번역 후보가 제공된 후, 이 후보들에 대해 추가적인 점수 부여 or 재조정을 통해 가장 적합한 번역 선택
- 단순히 가장 높은 확률을 가진 번역외에도 문맥에 맞는 최적의 번역 선택 가능

3.1 Dataset details

✓ 데이터셋

  • WMT`14 영어 → 프랑스어 데이터셋

✓ 학습 데이터

  • 1200만 문장 쌍, 프랑스어 3.48억 단어, 영어 3.04억 단어
    • [29]에서 제공하는 clean selected subset 사용
      • baseline SMT 시스템이 토크나이즈된 train/test 셋과 1000-best 리스트가 공개되어 있어서

✓ 어휘집

  • 소스 언어(영어): 160,000개 가장 빈도 높은 단어
  • 타깃 언어(프랑스어): 80,000개 가장 빈도 높은 단어
  • 어휘 외 단어(OOV)는 모두 특별한 UNK 토큰으로 대체

3.2 Decoding and Rescoring

✓ 학습 목표

  • 대규모 deep LSTM을 문장 쌍으로 학습

  • 목적함수: 소스 문장 S가 주어졌을 때 올바른 번역 T의 로그 확률을 최적화

  • 번역생성과정: 소스 문장 S가 주어졌을 때 올바른 번역 T의 로그 확률 최대화

    • 모델의 예측이 훈련 데이터에서 실제 출력과 가까워지도록 학습
    • 로그 확률의 합이 최대화하는 것을 목표

  • 로그 확률을 사용하는 이유 예시

✓ 번역 생성 과정

  • 학습 완료 후, 가장 가능성 높은 번역 선택

✓ 디코딩 방법

✓ Partial Hypothesis

  • 출력 시퀀스를 완전히 생성하기 전에 현재까지 생성된 부분적인 번역 결과 의미
  • 번역을 순차적으로 생성할 때, 시스템은 출력 시퀀스의 일부를 미리 생성하고, 그 결과를 바탕으로 다음 단어 예측
    • 이 부분적인 출력 → Partial hypothesis

✓ Beam Search Decode

  • 출력 시퀀스를 생성하는데 사용되는 탐색 알고리즘

    • 다양한 후보 번역을 생성하고 평가하는 방식

      → 현재까지의 번역 후보 중에서 가장 가능성 높은 후보들을 유지하면서 번역을 계속 생성

  • 작동예시

    • 모델이 i를 예측하고 beam width가 3이면 i 다음에 올 수 있는 3가지 단어 예측
    • 이전 단계에서 예측된 i 뒤에 올 3개의 단어 후보를 각각 확장하여, 3개의 새로운 partial hypothesis 만듦 + 각 후보에 대한 확률 계산
    • 각 후보에서 또 다른 단어들을 예측하여, 최고 확률을 가진 3개의 후보를 계속 유지
    • 전체 시퀀스가 완성되면, 가장 확률이 높은 시퀀스를 최종 출력으로 선택
  • 좌 → 우 beam search decoder 사용

  • beam search는 B개의 partial hypothesis 유지

  • 각 시점마다 가능한 모든 단어로 확장 → 후보 수 급증

  • 상위 B개만 남기고 나머지는 제거 (로그 확률 기준)

  • <EOS>가 나오면 beam에서 제거하고 complete hypothesis 집합에 추가

  • 근사적이지만 구현이 단순하고, beam size = 1로도 좋은 성능, beam size = 2어도 대부분의 성능 향상

✓ 재점수화(rescoring)

  • baseline SMT가 만든 1000-best 리스트를 LSTM으로 재점수화
    • 각 후보 번역의 로그확률을 LSTM으로 계산하고, 원래 SMT 점수와 평가

3.3 Reversing the Source Sentences

✓ LSTM

✓ 최소 시간 지연

  • 입력 시퀀스의 단어가 출력 시퀀스의 대응되는 단어와 시간적으로 가까운 관계를 유지하도록 함

    즉, 입력 단어와 출력 단어가 서로 가깝게 위치하도록!!


  • 왜 중요할까?
    • [기계번역시스템] 입력 문장과 출력 문장 사이에 단어의 순서와 문맥적 관계를 잘 반영해야 함
    • 최소 시간 지연을 고려하면 입력 문장에서의 각 단어가 출력 시퀀스의 대응되는 단어와 가까운 위치에 배치되어야 함
  • 장기 의존성 문제 해결 가능하긴 한데, 소스문장(입력)을 역순으로 뒤집으면 훨씬 더 잘 학습하더라~

    ✓ 타깃 문장(출력)은 뒤집지 X

    • perplexity 5.8 → 4.7
    • BLEU 점수 25.9 → 30.6

    ⇒ 많은 단기 의존성을 도입했기 때문이 아닐까~? (최소 시간 지연_minimal time lag 해결)

    • 평균 거리 자체는 변하지X

      • 소스 언어 앞쪽의 단어와 타깃 언어의 앞쪽의 단어가 가까워지면서
        최소 시간 지연이 줄어들고
        역전파가 소스 문장과 타깃 문장 사이에 “의사소통”을 수립하기 훨씬 쉬워짐
        ⇒ 전반적인 성능향상
    • <초기>에는 입력 문장을 뒤집는 게 타긴 문장의 앞부분에서 더 자신 있는 부분을 예측하고, 뒷부분에서는 덜 자신있는 부분을 예측하는 것이라고 생각했음

      → 문장을 뒤집으면, 앞부분의 단어들이 뒤쪽 단어들보다 더 간단하게 예측될 듯?
      뒷부분이 덜 확실하니까 더 많은 예측 오류가 있을 것이라 생각했었음

    • <실험결과> 뒤집은 문장이 더 좋은 성능

    • <결론> LSTM의 메모리 활용의 개선 때문

      • LSTM 모델은 기억을 잘해야하는데, 입력 문장의 순서를 뒤집으면 초기 단어들이 후속단어들과 더 가까운 위치에 배치되므로, 초기 상태의 의존성이 더 짧아지게 됨

3.4 Training details

✓ 모델 설정

  • 4층 deep LSTM, 각 층은 1000개의 셀, 단어 임베딩 차원 1000차원

  • 입력 어휘집 160,000, 출력 어휘집 80,000

  • 8,000개의 실수 → deep LSTM 문장을 표현하기 위함

    ⇒ 얕은 LSTM보다 훨씬 뛰어난 성능

    • LSTM은 총 3억 8400만 개의 파라미터
    • 이 중 6400만 개는 순수 recurrent 연결
    • encoder LSTM 3200만 개, decoder LSTM 3200만 개

✓ 학습설정

  • 파라미터 초기화

    • 모든 파라미터를 [-0.08,0.08] 구간의 균일분포로 초기화
  • 최적화 방법

    • Momentum없이 SGD 사용
    • 학습률 0.7로 고정
    • 5 epoch 이후부터는 0.5 epoch마다 학습률 절반으로 감소
    • 총 학습 epoch = 7.5
  • 미니배치 설정

    • batch size = 128 시퀀스
    • gradient를 batch size(128)로 나누어 정규화
  • gradient clipping (폭발 방지)

    • LSTM은 기울기 소실 문제는 적지만, 기울기 폭발 문제는 발생 가능

      → gradient norm을 제한(hard constraint)

    • 각 배치에서 gradient g (128로 나눈 값)를 구해 s = ||g||^2 계산

    • 만약 s>5 이면 g ← 5/sqrt(s) x g

  • 문장 길이 처리

    • 문장 길이 다양함 (짧은 문장: 20-30 단어, 긴 문장: 100+ 단어)

    • 무작위로 128개 문장을 선택하면 대부분 짧은 문장이라 긴 문장 학습 시 연산 낭비 발생

    • minibatch 내 문장들이 비슷한 길이를 갖도록 구성

      → 약 2배 이상 속도 향상 얻음

3.5 Parallelization

✓ 병렬화

  • (P) 단일 GPU_C++로 구현된 deep LSTM 약 1,700단어/초 (느림)

    (S) 8개의 GPU를 사용하여 모델 병렬화

    • 4개 LSTM: 각기 다른 GPU에서 실행 - 계산된 활성화 값은 다음 GPU/층으로 즉시 전달

    • 나머지 4개 LSTM: softmax 병렬화 - 각 GPU가 1000x20000행렬 곱 연산 담당

      ⇒ 6,300 단어/초 속도 기록, 미니배치 128, 학습 약 10일 걸림

3.6 Experimental Results

  • cased BLEU score 사용
  • WMT`14 시스템 37.0 BLEU 얻음

  • 순수 LSTM direct translation: BLEU 34.81, SMT baseline(33.30) 초월
  • 앙상블 효과: 모델 5개 앙상블 시 성능 크게 향상
  • reverse input: 성능 개선

3.7 Performance on long sentences

  • 입력 문장을 역순으로 넣어서 최소 시간 지연이 줄어들어서 장기 의존성 학습하는게 쉬워짐

3.8 Model Analysis


  • RNNLM (RNN-Language Model) 이나 NNLM (Feedforward Neural Network Language Model)

    • MT baseline의 n-best 리스트를 재점수화(rescoring) → 성능 안정적으로 개선
  • 소스 언어 정보 ⊂ NNLM

    • Auli et al [1]: 입력 문장의 토픽 모델(topic model)과 결합하여 rescoring 성능 향상
    • Devlin et al [8]: NNLM&MT의 디코더에 통합, 디코더의 정렬 정보를 이용해 입력 문장의 유용한 단어들을 NNLM에 제공
  • Kalchbrenner and Blunsom[18] ← 밀접하게 관련

    • 최초 입력 문장을 벡터로 매핑 → 다시 문장으로 복원
      • CNN 사용 (단어의 순서 잃음,,)
  • Cho et al [5]: LSTM과 유사한 RNN 구조를 사용해 문장의 벡터로 매핑하고 다시 복원

    ** 신경망을 SMT시스템에 통합하는 것에 초점

  • Bahdanau et al [2]: 어텐션 메커니즘 도입

    • Cho et al [5]의 메모리 문제 해결 - 구문 기반 접근과 유사
    • 역순 소스 문장으로 학습해도 유사한 개선을 얻었을 것이라 추측
  • End-to-end

    • Hermann et al [12]: 공간상의 유사한 지점으로 매핑, 사전에 계산된 데베에서 가장 가까운 벡터를 검색하거나 문장을 재점수화해야만 번역 얻을 수 있음

5. Conclusion

  • 대규모 deep LSTM: 제한된 어휘, 문제 구조 거의 가정X
    →무제한 어휘 SMT보다 대규모 MT 과제에서 우수

    ⇒ 충분한 학습 데이터가 있다면, 다른 시퀀스 학습 문제에도 효과적일 가능성⬆️


  • 소스 문장 역순 처리
    • 단기 의존성 증가로 학습 용이
  • 긴 문장 번역
    • 제한된 메모리에도 불구하고 정확히 번역 가능

0개의 댓글