Deeplearning

[논문리뷰]Neural Machine Translation by Jointly Learning to Align and Translate(Attention)

tir_hyun21 2024. 7. 19. 20:25
이번 포스팅은 attention 메커니즘의 시초논문에 대해서 수식을 중심으로 리뷰하겠습니다.
https://arxiv.org/abs/1409.0473
 

Neural Machine Translation by Jointly Learning to Align and Translate

Neural machine translation is a recently proposed approach to machine translation. Unlike the traditional statistical machine translation, the neural machine translation aims at building a single neural network that can be jointly tuned to maximize the tra

arxiv.org

 


개요

기계 번역(Machine Translation, MT)은 다국어 의사소통을 가능하게 하고, 다양한 언어 간의 정보 접근성을 향상시키는 중요한 기술입니다. 지난 몇 년간 통계적 기계 번역(Statistical Machine Translation, SMT)은 언어 번역의 주요 방법으로 사용되어 왔지만, 구문 및 문맥 정보를 충분히 반영하지 못하는 한계를 드러냈습니다. 이러한 한계를 극복하고자 등장한 Neural Machine Translation(NMT)은 심층 신경망을 활용하여 번역 성능을 크게 향상시켰으나, 기존 NMT 모델 역시 문장 길이가 길어질수록 성능이 저하되는 문제를 가지고 있었습니다.

본 논문 "Neural Machine Translation by Jointly Learning to Align and Translate"는 이러한 문제를 해결하기 위해 혁신적인 어텐션(Attention) 메커니즘을 도입하였습니다. 어텐션 메커니즘은 번역 과정에서 문장의 각 단어를 동적으로 정렬하는 방법으로, 단일 고정 크기 컨텍스트 벡터의 한계를 극복하고, 보다 정확하고 자연스러운 번역을 가능하게 합니다. 이 어텐션 메커니즘은 이후 자연어 처리(NLP) 분야에서 큰 영향을 미치며, 다양한 모델의 핵심 요소로 자리잡았습니다.


 

 

 

 

 

 

 

 

 


 

먼저 Encoder와 Decoder에 대해서 설명하도록 하겠습니다.

RNN Encoder-Decoder

 

인코더(Encoder): \(h_t = f(x_t, h_{t-1})\)

  • 인코더는 입력 문장, 즉 벡터 시퀀스 \(\mathbf{x} = (x_1, \cdots, x_{T_x})\)를 읽어들입니다.
  • 이 입력 시퀀스를 하나의 벡터 \(\mathbf{c}\)로 변환합니다.
  • 변환 과정에서 RNN을 사용하여 각 시점 \(t\)에서 은닉 상태 \(h_t\)를 업데이트합니다.

디코더(Decoder):

  • 인코더가 생성한 벡터 \(\mathbf{c}\)를 입력으로 받아 번역을 생성합니다.
  • 벡터 \(\mathbf{c}\)는 은닉 상태 시퀀스 \(\{h_1, \cdots, h_{T_x}\}\)로부터 생성됩니다: \(\mathbf{c} = q(\{h_1, \cdots, h_{T_x}\})\).

디코더작동원리:

공동 확률:

  • 번역 \(\mathbf{y}\)의 확률은 각 시간 \(t\)에서의 조건부 확률의 곱으로 표현됩니다:\(p(\mathbf{y}) = \prod_{t=1}^{T} p(y_t \mid \{y_1, \cdots, y_{t-1}\}, \mathbf{c})\).여기서 \(\mathbf{y} = (y_1, \cdots, y_T)\)는 번역된 단어 시퀀스를 의미합니다.

조건부 확률:

  • RNN을 사용하여 각 조건부 확률은 다음과 같이 모델링됩니다:\(p(y_t \mid \{y_1, \cdots, y_{t-1}\}, \mathbf{c}) = g(y_{t-1}, s_t, \mathbf{c})\),여기서 함수 \(g\)는 비선형 함수로, 잠재적으로 다층 신경망일 수 있습니다. \(s_t\)는 시간 \(t\)에서의 RNN의 은닉 상태입니다.

조건부 확률  \( p(y_i \mid y_{i-1}, \ldots, y_1, \mathbf{x}) \) 정의

  • \(p(y_i \mid y_{i-1}, \ldots, y_1, \mathbf{x}) = g(y_{i-1}, s_i, c_i)\)
    여기서 \( s_i \)는 시간 \( i \) RNN 은닉 상태입니다.
    이 은닉 상태 \( s_i \)는 다음과 같이 계산됩니다:\(s_i = f(s_{i-1}, y_{i-1}, c_i)\)

 

 

 

 

 

 

 

 

 


 

논문에서 나오는 함수와 용어 등에 대해서 설명하고 정리하겠습니다.

 

함수와 용어 설명

\(h_t = f(x_t, h_{t-1})\):

  • 여기서 \(h_t\)는 시간 \(t\)에서의 은닉 상태이고, \(x_t\)는 시간 \(t\)에서의 입력 벡터입니다. 함수 \(f\)는 RNN의 비선형 함수입니다.

\(\mathbf{c} = q(\{h_1, \cdots, h_{T_x}\})\):

  • 여기서 \(\mathbf{c}\)는 인코더의 은닉 상태 시퀀스 \(\{h_1, \cdots, h_{T_x}\}\)로부터 생성된 벡터입니다. 함수 \(q\) 역시 비선형 함수로, 이 벡터는 번역을 생성하기 위한 컨텍스트 벡터로 사용됩니다.

\(g\):

  • 이 함수는 \(y_t\)의 확률을 출력하는 비선형 함수로, 다층 신경망(Multi-layered neural network)일 수 있습니다.

\(s_t\):

  • 시간 \(t\)에서의 RNN의 은닉 상태입니다. 이 상태는 디코더가 이전 상태 \(s_{t-1}\)와 입력 \(y_{t-1}\), 그리고 컨텍스트 벡터 \(\mathbf{c}\)를 기반으로 업데이트됩니다.

컨텍스트 벡터 \( c_i \):

  • 기존 인코더-디코더 접근 방식과 달리, 여기서는 각 타겟 단어 \( y_i \)에 대해 개별적인 컨텍스트 벡터 \( c_i \)가 사용됩니다.
  • 컨텍스트 벡터 \( c_i \)는 인코더가 입력 문장에 매핑하는 주석(annotations) \( (h_1, \cdots, h_{T_x}) \)의 시퀀스에 따라 결정됩니다.
  • 각 주석 \( h_j \)는 입력 시퀀스 전체에 대한 정보를 담고 있으며, 입력 시퀀스의 특정 단어 주변 부분에 집중합니다.

컨텍스트 벡터 계산: \(c_i = \sum_{j=1}^{T_x} \alpha_{ij} h_j\)

 

가중치 \( \alpha_{ij} \) 계산:\(\alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{k=1}^{T_x} \exp(e_{ik})}\)

  • 여기서 \( e_{ij} = a(s_{i-1}, h_j) \)는 정렬 모델(alignment model)로, 위치 \( j \)의 입력과 위치 \( i \)의 출력 간의 매칭 점수를 나타냅니다.
  • 이 점수는 RNN 은닉 상태 \( s_{i-1} \)와 입력 문장 \( j \)의 주석 \( h_j \)에 기반하여 계산됩니다.

정리

  • 디코더의 목표는 다음 단어 \(y_t\)를 예측하는 것입니다. 이를 위해 컨텍스트 벡터 \(\mathbf{c}\)와 이전 단어들 \(\{y_1, \cdots, y_{t-1}\}\)를 사용합니다.
  • 조건부 확률은 디코더가 번역을 생성하는 방식입니다. 이는 각 시간 \(t\)에서의 단어 예측을 기반으로 합니다.
  • 비선형 함수 \(g\)는 번역 단어의 확률을 계산하는 데 사용됩니다.
  • 은닉 상태 \(s_t\)는 디코더의 내부 상태로, 이전 단어와 컨텍스트 벡터를 기반으로 갱신됩니다.
  • RNN 인코더-디코더 구조는 입력 문장을 은닉 상태 벡터 시퀀스로 인코딩하고, 그 벡터를 바탕으로 번역을 생성하는 구조입니다.
  • 함수 \(f\)는 RNN의 비선형 함수로, 일반적으로 LSTM이나 GRU 같은 구조가 사용됩니다.
  • 함수 \(q\)는 은닉 상태 시퀀스에서 컨텍스트 벡터를 생성하는 함수입니다.
  • 이 논문은 이러한 기본 프레임워크를 확장하여, 정렬(Alignment)과 번역을 동시에 학습하는 어텐션 메커니즘을 도입합니다.

 

 

 

 


최종적으로 예측값이 어떻게 만들어지는지 설명하겠습니다.

 

\( y_t \) 생성 과정

    • 그림에서는 입력 문장 \( (x_1, x_2, \cdots, x_{T_x}) \)와 그에 대응하는 주석 \( h_1, h_2, \cdots, h_{T_x} \)를 보여주고 있습니다.
    • 각 주석은 컨텍스트 벡터 \( c_i \)를 생성하는 데 사용되며, 이 컨텍스트 벡터는 디코더가 다음 단어를 예측하는 데 사용됩니다.

 

이상으로 포스팅 마치겠습니다. 끝까지 읽어주셔서 감사합니다.