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

My_oyster_house·2024년 8월 9일

Sequence to Sequence Learning with Neural Networks(2014)

오늘 리뷰할 논문은 Google에서 2014년에 발표한 Seq2Seq 논문이다. 최초의 Sequence to Sequence 모델을 제안한 논문 중 하나로, LSTM의 성능을 극대화할 수 있는 인코더와 디코더로 이루어진 구조를 확립한 논문이다.

0. 사전 지식

논문에서 사용한 데이터셋

이 연구에서는 WMT'14 영어-프랑스어 데이터셋을 사용했다. 이 데이터셋은 약 12백만 개의 문장 쌍으로 구성되어 있으며, 총 348백만 개의 프랑스어 단어와 304백만 개의 영어 단어가 포함되어 있다. 이 데이터는 기계 번역 시스템의 학습을 위해 널리 사용되는 데이터셋으로, 문장 쌍이 정확하게 일치하는 번역 데이터를 제공한다.

BLEU 점수

BLEU(Bilingual Evaluation Understudy) 점수는 기계 번역의 품질을 평가하는 지표로, 생성된 번역이 정답 번역과 얼마나 유사한지를 측정한다. BLEU 점수는 0부터 1까지의 값을 가지며, 1에 가까울수록 번역 품질이 높음을 의미한다. 일반적으로 기계 번역 평가에서는 BLEU 점수를 퍼센트(%)로 표현한다.

BLEU 점수는 n-그램(연속된 n개의 단어)을 비교하여 계산된다. 예를 들어, 생성된 번역과 정답 번역에서 동일한 2-그램이 얼마나 많이 등장하는지를 기준으로 점수가 결정된다.

BLEU=BPexp(n=1Nwnlogpn)BLEU = BP \cdot \exp\left(\sum_{n=1}^{N} w_n \log p_n\right)
  • BPBP는 Brevity Penalty(생성된 번역이 너무 짧을 경우 패널티를 부여)
  • pnp_n은 n-그램의 precision(정확도)
  • wnw_n은 가중치(일반적으로 동일 가중치 사용)

SMT

SMT(Statistical Machine Translation)는 통계적 기계 번역의 약자로, 번역을 수행하기 위해 통계적 모델을 사용하는 방법을 의미한다. SMT는 대규모의 번역 문장 쌍 데이터를 기반으로 번역 확률을 계산하고, 가장 가능성이 높은 번역을 선택하는 방식으로 동작한다.

그러니까 간단히 말하면 원문 xx와 번역문 yy의 쌍이 있을 때 최대의 P(yx)P(y|x) 확률을 찾는 것이다.

이 논문에서는 새로운 Seq2seq 구조로 문장 구조와 같은 언어의 복잡한 맥락을 충분히 반영하지 못하는 SMT의 한계를 극복해보였다.

탐색 알고리즘의 하나. 시퀀스 생성 과정에서 최적의 출력 시퀀스를 찾기 위해 사용되는 효율적인 탐색 알고리즘이다. 여러 개의 후보 시퀀스를 동시에 유지하고 확장하면서, 최종적으로 가장 가능성이 높은 시퀀스를 선택하는 방식으로 작동한다.

1. Introduction

기존의 DNN은 강력하지만, 입력과 출력이 고정된 크기의 벡터로 인코딩될 수 있을 때만 적용할 수 있다는 한계가 있다. 이 논문에서는 이러한 한계를 극복하기 위해, 시퀀스를 시퀀스로 변환하는 방법을 제시했다. 이 논문에서는 두 개의 LSTM 모델을 활용한다. 먼저 LSTM을 활용하여 입력 시퀀스를 고정된 크기의 벡터로 인코딩하고, 다른 LSTM을 통해 이 벡터를 다시 시퀀스로 디코딩한다.

특히, 영어-프랑스어 번역 과제에 이 방법을 적용하여 높은 성능을 보였으며, 기존의 통계적 기계 번역 시스템(SMT)을 능가하는 결과를 얻었다. LSTM 모델은 긴 문장에서도 강력한 성능을 보였고, 단순한 데이터 변환 기법(입력 문장 역순 처리한다거나, 레이어를 더 깊게 쌓는다거나)만으로도 성능이 크게 향상될 수 있음을 보여주었다.

2. The Model

논문에서는 시퀀스 데이터를 처리하기 위해 LSTM을 사용했는데, 기본적인 아이디어는 하나의 LSTM이 입력 시퀀스를 받아 고정된 크기의 벡터로 변환하고, 또 다른 LSTM이 이 벡터를 받아 출력 시퀀스를 생성하는 것이다. 이를 통해 다양한 길이의 시퀀스를 처리할 수 있다.

RNN과 LSTM

  • RNN: RNN은 시퀀스 데이터를 처리하기 위해 다음과 같은 수식을 사용한다:

    ht=σ(Whxxt+Whhht1)h_t = \sigma(W_{hx}x_t + W_{hh}h_{t-1})
    yt=Wyhhty_t = W_{yh}h_t
    • hth_t 현재 상태
    • xtx_t 입력
    • yty_t 출력
    • WW 가중치 행렬
  • LSTM: LSTM은 장기 의존성 문제를 해결하기 위해 셀 상태와 게이트 메커니즘을 활용한다. LSTM은 시퀀스의 조건부 확률을 다음과 같이 계산한다:

    p(y1,,yTx1,,xT)=t=1Tp(ytv,y1,,yt1)p(y_1, \ldots, y_{T'} | x_1, \ldots, x_T) = \prod_{t=1}^{T'} p(y_t | v, y_1, \ldots, y_{t-1})
    • p(ytv,y1,,yt1)p(y_t | v, y_1, \ldots, y_{t-1})는 소프트맥스 함수를 통해 계산
    • vv는 입력 시퀀스의 벡터 표현

이 모델의 핵심은 두 개의 주요 구성 요소인 인코더(Encoder)디코더(Decoder)이다. 각각의 구성 요소는 LSTM(Long Short-Term Memory) 또는 다른 유형의 RNN(Recurrent Neural Network)을 기반으로 한다.

1. 인코더 (Encoder)

인코더는 입력 시퀀스를 처리하는 역할을 한다. 인코더는 시퀀스의 각 요소(예: 문장의 각 단어)를 순차적으로 입력받아, 이 정보를 고정된 크기의 벡터로 압축하여 표현한다.

  • 입력 처리: 인코더는 입력 시퀀스 x=(x1,x2,,xT)x = (x_1, x_2, \ldots, x_T)를 시간 단계별로 처리한다. 여기서 TT는 입력 시퀀스의 길이이다.
  • hidden state: 각 시간 단계 tt에서, 인코더는 현재 입력 xtx_t와 이전 단계의 hidden state ht1h_{t-1}를 이용하여 새로운 숨겨진 상태 hth_t를 계산한다. 이 과정은 다음과 같은 수식으로 표현된다:
ht=LSTM(xt,ht1)h_t = \text{LSTM}(x_t, h_{t-1})

여기서 ht1h_{t-1}는 현재 단계의 숨겨진 상태이며, 이 상태는 이전 정보와 현재 입력을 모두 반영한 벡터이다.

  • 컨텍스트 벡터 생성: 인코더는 최종 시간 단계 TT에서의 숨겨진 상태 ht1h_{t-1}를 고정된 크기의 컨텍스트 벡터(context vector)로 출력한다. 이 벡터는 입력 시퀀스의 전체 정보를 압축한 표현으로, 디코더가 이를 받아 출력 시퀀스를 생성하는 데 사용된다.

2. 디코더 (Decoder)

디코더는 인코더에서 생성된 컨텍스트 벡터를 받아 출력 시퀀스를 생성하는 역할을 한다. 디코더는 각 시간 단계에서 이전에 생성된 단어와 컨텍스트 벡터를 기반으로 다음 단어를 예측한다.

  • 초기화: 디코더는 인코더의 마지막 숨겨진 상태 hTh_T를 초기 숨겨진 상태로 사용하여 디코딩을 시작한다.
  • 출력 생성: 디코더는 컨텍스트 벡터 vv와 이전에 생성된 단어 yt1y_{t-1}를 입력으로 받아, 현재 단계 tt에서의 숨겨진 상태 sts_t를 계산한다:
st=LSTM(yt1,st1)s_t = \text{LSTM}(y_{t-1}, s_{t-1})

여기서 sts_t는 현재 단계에서의 디코더의 숨겨진 상태이다.

  • 단어 예측: 디코더는 현재의 숨겨진 상태 sts_t를 기반으로 다음 단어 yty_t를 예측하며, 이 확률 분포는 소프트맥스 함수를 사용하여 계산된다:
p(ytv,y1,,yt1)=softmax(Wsst)p(y_t | v, y_1, \ldots, y_{t-1}) = \text{softmax}(W_s s_t)

여기서 WsW_s는 출력 단어를 위한 가중치 행렬이다.

  • 순차적 생성: 디코더는 이 과정을 반복하여 시퀀스의 끝을 나타내는 특수 토큰 <EOS>\text{<EOS>}가 생성될 때까지 단어를 하나씩 생성한다.

3. 조건부 확률 계산

Seq2Seq 모델의 목표는 주어진 입력 시퀀스 xx가 주어졌을 때, 출력 시퀀스 yy의 조건부 확률 p(yx)p(y|x)를 최대화하는 것이다. 이 확률은 다음과 같은 방식으로 계산된다:

p(y1,,yTx1,,xT)=t=1Tp(ytv,y1,,yt1)p(y_1, \ldots, y_{T'} | x_1, \ldots, x_T) = \prod_{t=1}^{T'} p(y_t | v, y_1, \ldots, y_{t-1})

여기서 TTTT'는 각각 입력 시퀀스와 출력 시퀀스의 길이이다. p(ytv,y1,,yt1)p(y_t | v, y_1, \ldots, y_{t-1})는 디코더가 이전에 생성된 단어들과 인코더 벡터 vv를 기반으로 다음 단어 yty_t를 예측하는 확률 분포를 나타낸다.

4. 모델의 특징

이 논문에서는 기본적인 Seq2Seq 모델에 몇 가지 중요한 개선점을 추가했다:

  • 이중 LSTM: 인코더와 디코더 각각에 별도의 LSTM을 사용하여 모델의 파라미터 수를 늘리고, 더 복잡한 구조를 학습할 수 있도록 했다. 이는 다중 언어 쌍에서 모델을 동시에 학습하는 데 유리하다.

  • 깊은 LSTM: 단일 계층의 얕은 LSTM보다, 여러 계층으로 구성된 깊은 LSTM을 사용하여 성능을 크게 향상시켰다. 이 논문에서는 4개의 계층을 사용한 깊은 LSTM을 적용했다.

  • 역순 입력: 입력 문장의 단어 순서를 거꾸로 배치하여 LSTM의 학습 성능을 향상시켰다. 이 방법은 입력 시퀀스의 첫 번째 단어가 출력 시퀀스의 첫 번째 단어와 더 가깝게 위치하도록 만들어, 최적화 문제를 더 쉽게 풀 수 있게 한다.

3. Experiments

실험 방법

연구에서는 영어-프랑스어 번역 과제를 수행하기 위해 LSTM을 사용했다. LSTM을 이용해 직접 번역을 생성하거나, 기존 SMT(통계적 기계 번역) 시스템의 n-best 리스트를 재평가하는 방식으로 실험을 진행했다.

  • 디코딩 및 재평가: 좌에서 우로의 빔 서치 디코더를 사용해 번역을 생성했다. 또한, 기존 SMT 시스템의 1000-best 리스트를 LSTM으로 재평가해 성능을 향상시켰다.
  • 문장 역순 처리: 소스 문장을 역순으로 배열하는 방법이 LSTM의 성능을 크게 향상시켰다. 이는 짧은 시퀀스 간의 관계를 강화하여 최적화 문제를 단순화했기 때문이다.

결과

실험 결과, LSTM은 BLEU 점수 34.8을 기록하며 기존의 SMT 시스템보다 더 높은 성능을 보였다. 특히, 소스 문장의 단어 순서를 반대로 배치한 트릭이 성능을 크게 향상시켰으며, 이는 LSTM이 긴 문장에서도 좋은 성능을 발휘할 수 있게 해주었다.

  • BLEU 점수 비교: LSTM 모델은 다양한 설정에서 BLEU 점수 34.8을 달성했고, 이는 SMT 시스템의 33.3점을 상회하는 결과였다.

4. Conclusion

이 논문은 대규모 LSTM을 활용하여 시퀀스 간의 변환 문제를 해결할 수 있음을 보여주었다. LSTM은 고정된 크기의 벡터로 시퀀스를 인코딩하고, 이를 디코딩하여 다시 시퀀스로 변환하는 방식으로 동작한다. 이 방법을 통해 WMT'14 영어-프랑스어 번역 작업에서 높은 BLEU 점수를 기록하였으며, SMT 기반 시스템을 능가하는 성능을 입증했다.

특히, 소스 문장의 단어 순서를 반대로 배열하는 간단한 트릭은 LSTM의 성능을 크게 향상시켰으며, 이는 짧은 시퀀스 간의 관계를 강화하여 최적화 문제를 단순화할 수 있음을 보여준다. 이러한 트릭은 LSTM이 긴 문장에서도 잘 작동할 수 있도록 도와주었다.

profile
kwonhs.alice@gmail.com

0개의 댓글