working_helen

[NLP 학습] 1주차 : Attention Mechanism / 논문 리뷰 : Neural Machine Translation by Jointly Learning to Align and Translate 본문

deep daiv./NLP 스터디

[NLP 학습] 1주차 : Attention Mechanism / 논문 리뷰 : Neural Machine Translation by Jointly Learning to Align and Translate

HaeWon_Seo 2024. 8. 7. 13:16

출처 :  https://kyull-it.tistory.com/212

 

출처 : https://brunch.co.kr/@jean/5

 

이전 포스트에서 다룬 Seq2Seq의 개념을 바탕으로 Attention Mechanism에 대해 학습해본다. Attention Mechanism과 관련된 논문 "Neural Machine Translation by Jointly Learning to Align and Translate"를 리뷰한다. 

 

1. Attention Mechanism 

2. 논문 리뷰 

 

 


1. Attention  Mechanism 

1) Attention Mechanism 등장 배경

 

- Seq2Seq 방식은 고정된 크기의 벡터에 문장 속의 모든 정보를 인코딩하기 때문에 정보 손실이 발생한다. 
- Seq2Seq까지의 encoder-decoder 모델은 다른 길이의 input에 대해 고정된 길이의 context vector를 출력
- input의 모든 정보를 한정된 길이의 벡터로 압축하기 때문에 문장의 길이가 길어지면 context vector에서 정보의 손실이 발생 

➡️ Attention Mechanism 
= context vector가 input의 모든 정보를 압축해서 담는 것이 아니라

  input 내에서 target word와 관련된 일부분에 집중하여 중요한 정보만 들고오는 것
= 고정된 길이의 context vector를 사용하지 않고
  target word를 생성하는 매 시점마다 동적으로 context vector를 계산
= target word를 생성하는 매 시점마다 target에 대한 모든 input words의 가중치 계산
   target word 생성에 어떤 input words가 중요한지 계산

==> target word와 관련 있는 input words에 더 attention을 주어 예측한다!


Attention Mechanism 논문의 의의 
- input과 모든 다른 단어들 간의 관계를 고려함으로써 Long Term Dependency 문제를 극복
  (monotonic alignment 해소)
- 신경망 모델에 어느정도의 explainability를 부여
  (각 단어가 다른 단어와 어떻게 관련이 있는지 시각화할 수 있음)

 

 

 

 

 

2) Attention Mechanism의 구조 

  • Query(Q) : s_i, i 시점에서 decoder RNN의 hidden state
  • Key(K), Value(V) : h_j, 각 시점 j에서 encoder RNN의 hidden state

 

1단계 : Attention Score e_ij

출처 : https://velog.io/@sjinu/%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC-Attention-Mechanism#3-%EB%8B%B7-%ED%94%84%EB%A1%9C%EB%8D%95%ED%8A%B8-%EC%96%B4%ED%85%90%EC%85%98dot-product-attention


- Attention Score = Q(s_i)와 K(h_j) 사이 유사도 값
- i 시점 decoder의 hidden state Q와 각각의 j 시점에서 encoder hidden state K 간 유사도를 계산
- s_i와 h_j 사이 attention score (annotation score) e_ij 계산

- encoder의 j 위치에서의 정보가 decoder의 i 위치에서의 정보와 얼마나 연관되어 있는지 의미 

2단계 : Attention Distribution 

출처 : https://ctkim.tistory.com/entry/Attention-Mechanism


- Attention Distribution = Q(s_i)에 대한 encoder hidden state K(h_j) 의 가중치 분포(확률 분포) 
- Softmax 함수를 이용해 score e_ij를 각각 0~1의 값을 가지고 전체 합이 1이 되는 가중치 분포로 변환
- e_ij를 정규화하여 attention weight (annotation weight) α_ij 계산

 

3단계 : Attention Value 

 

- Attention Value = decoder state i에서 context vector
- 가중치 α_ij와 encoder hidden state V 값을 곱해 최종 attention 값을 계산
가중치 α_ij와 h_j를 곱해 최종 context vector c_i 계산
c_i는 고정 길이 벡터가 아니라 decoder state i마다 동적으로 계산

 

4단계 : Attention value와 decoder의 hidden state 연결

- c_i와 s_i를 연결하여 v_i 생성
- v_i는 decoder hidden state의 정보와 encoder hidden state의 정보를 모두 가지고 있는 벡터

 

5단계 : 신경망 연산으로 최종 target word 생성

출처 : https://aiheroes.ai/community/80

 

- v_i에 활성화 함수, softmax 함수를 거쳐 최종 조건부 확률 계산
- input x가 주어졌을때 output y_i의 조건부 확률 계산

 

 

 

➡️ Attention Mechanism 전체 과정 

  Attention Score e_ij = s_i와 h_j 사이 유사도
   encoder state j의 정보가 decoder state i와 얼마나 연관되어 있는가 

attention weight α_ij = e_ij에 softmax 함수 적용
   Attention Distribution = 가중치 α_ij 값의 분포
   encoder state j가 decoder state i와 연관되어 있을수록 높은 가중치 부여

Attention Value = decoder state i에서 context vector c_i = 가중치 α_ij와 h_j의 곱
   context vector는 고정 길이가 아닌 decoder state i마다 동적으로 계산

c_i와 s_i를 연결하여 v_i 생성
신경망 연산으로 최종 target word 예측

출처 : https://ctkim.tistory.com/entry/Attention-Mechanism, 사진 위 주석은 직접 작성한 내용

 

 

 

 

 

3) Attention Function

 

- target word에 대한 각 input words의 attention score를 계산하는 함수
- 어떤 attention function을 사용하느냐에 따라 다양한 attention 종류가 존재

출처 : https://velog.io/@sjinu/%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC-Attention-Mechanism#3-%EB%8B%B7-%ED%94%84%EB%A1%9C%EB%8D%95%ED%8A%B8-%EC%96%B4%ED%85%90%EC%85%98dot-product-attention

 

 

 

 

 

 

 

 

 

2. 논문 리뷰

논문명 : Neural Machine Translation by Jointly Learning to Align and Translate

저자명 : Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio

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

 

✏️ 논문 내용 정리 

- Attention 모델 고안 배경
: 기존의 encoder–decoder 구조의 NMT 모델은 source sentence를 고정된 길이의 벡터로 인코딩하기 때문에 필요한 모든 정보를 고정된 길이로 압축해야한다는 한계가 있음 

- Attention 모델과 이전 모델의 차이점
" encoder–decoder model which learns to align and translate jointly "
: encoder–decoder 구조에 어텐션 메커니즘을 적용해 정렬과 번역을 같이 학습 

- Attention 매커니즘
: 모델이 입력 데이터에서 중요한 부분에 집중하도록 가중치를 부여하는 방법 
  alignment를 학습해 ouput을 예측할 때 input에서 중요한 일부 위치만 고려 
 * alignment = input의 특정 위치와 output의 특정 위치를 연결시키는 방법 



- Attention 모델의 구조
 ① Attention 매커니즘을 도입한 Decoder
: 번역시 source sentence에서 output과 가장 관련있는 input 영역을 검색

● a( ) : alignment model
●  α_ij : annotation weight, y_i에 대한 x_j의 attention 
●  α_ij를 이용해 y_i를 생성하기 위해 더 attention을 주어 사용할 x_j 위치를 파악  

 ② Bidirectional RNN을 사용한 Encoder 
: encoder의 hidden state(annotation)를 양방향으로 구성함으로써 x_j에 대한 정보에 x_j의 preceding words와 following words의 정보를 모두 반영 


- 논문에서 보인 모델 특성
 ① English-to-French translation 작업에서 sota와 필적할 수준의 번역 성능 달성 
  soft-alignment를 사용함으로써 문맥을 고려하고 인간의 직관에 잘 맞는 번역 
③ 특히 긴 문장을 번역하는 능력이 기존 모델에 비해 훨씬 뛰어남

 

 

 

 

 

 

 

▶ 0. Abstract

 

- 이전까지 고안된 encoder–decoder 구조의 NMT 모델은 source sentence를 고정 길이 벡터로 인코딩한다는 점에서 아키텍처 성능을 향상시키는데 한계가 있음 
- target words 생성 시 관련성이 높은 source sentence의 일부분을 자동으로 검색하는 방식으로 확장한 새로운 아키텍처를 제안 
- 제안된 모델은 English-to-French translation 작업에서 sota 시스템과 필적할 수준의 번역 성능을 달성 
- 또한 모델이 학습한 입력과 출력 간 soft-alignment는 직관과 잘 일치함 

 

 

 

 

▶ 1. Introduction

 

1) 기존 encoder–decoder NMT 모델의 한계 
- encoder neural network는 source sentence를 읽어 고정된 길이의 벡터로 인코딩하고, decoder neural network는 인코딩된 벡터에서 번역 결과를 출력함
- encoder와 decoder는 주어진 source sentence에 대한 올바른 번역의 조건부 확률을 최대화하도록 훈련됨

source sentence에서 필요한 모든 정보를 고정된 길이 벡터로 압축해야한다는 문제 (bottleneck 문제)
- 특히 train에 사용한 문장보다 더 긴 문장에 대해서 encoder–decoder 구조 모델의 성능이 크게 저하됨


2) 새로운 모델 고안

"Attention mechanism을 이용해 정렬과 번역을 같이 학습하는 encoder-decoder 모델"
○ decoder에서 번역 결과를 생성할 때마다, source sentence에서 현재 번역하려는 부분과 가장 관련있는 정보가 있는 영역을 검색
관련성이 큰 영역에서 인코딩 된 context vector + decoder가 이미 생성한 이전 번역 결과에 기반하여 다음 단어를 예측

 

- 입력 문장 전체를 단일 고정 길이 벡터로 인코딩하는 것이 아닌
입력 문장을 벡터 sequence로 인코딩하고, 번역을 디코딩하는 동안 이 sequence의 하위 집합을 참조하여 선택하는 방식
- source sentence의 모든 정보를 고정된 길이 벡터로 줄여야하는 문제를 해결함으로써 모델이 긴 문장에도 더 잘 대처할 수 있게 됨 

 

* Alignment 정렬 
: 모델이 input sequence와 output sequence의 특정 위치를 연결시키는 방법 
alignment는 Attention 모델이 input sequence의 어떤 부분을 output의 특정 부분을 예측하는데 중요하게 사용할지 결정하는 역할을 하며, 모델의 학습 과정에서 자동으로 학습됨 

 

 

 

2. Background: Neural Machine Translation

 

기존의 NMT에서 모델은
- source sentence x를 인코딩하고, target sentence y로 디코딩하는 방식
- (x, y) sentence pairs 데이터를 이용해 p(y|x)를 최대화하도록 모델 학습
- 번역은 새롭게 주어진 x에 대하여 p(y|x)이 최대인 y를 생성하는 형태
- Sutskever et al. (2014) 논문에서 다룬 RNN(LSTM)을 encoder, decoder로 사용한 NMT 모델은 영어-프랑스어 번역 작업에서 기존 구문 기반 MT의 sota에 근접한 성능을 보임

 

 2.1 RNN Encorder-Decoder

- encoder : input sentence를 읽고, hidden states를 거쳐, context vector c를 출력 

 

- decoder : context vector c와 이전 번역 단어들로 다음 단어를 예측 

 

 

 

 

 

3. Learning to Align and Translate

 

새로운 NMT 모델을 제시

  • encoder : bidirectional RNN
  • decoder : 번역을 디코딩하는 동안 source sentence에서 검색을 수행

 

 

 3.1. Decoder: General Description

  • (x_1, x_2, …, x_T) : source sentence
  • y_t : t-th target word
  • s_i : decoder RNN의 hidden state at time i
  • h_j : annotation at time j, encoder RNN의 hidden state at time j
  • α_ij : annotation weight, y_i에 대한 x_j의 attention 

 

a( ) : alignment model (정렬 모델)

     e_ij : s_(i-1)와 h_j에 대한 alignment model score

- encoder의 j 위치에서의 정보가 decoder의 i 위치에서의 정보와 얼마나 연관되어 있는지 점수화 
- output의 i 위치와 input의 j 위치 주변이 얼마나 매칭되는지 계산 
- decoder의 (i−1)에서 hidden state s_(t−1)과 encoder j에서 hidden state h_j를 이용하여 계산
- a는 피드포워드 신경망으로 역전파를 이용해 모델의 다른 모든 구성 요소와 함께 훈련됨 


α_ij : annotation weight, y_i에 대한 x_j의 attention 

- y_i에 대한 x_j의 영향력을 의미 

- y_i가 x_j에 얼마나 연관이 있는지 나타내는 나타냄
- y_i가 x_j로부터 번역되거나 정렬되었을 확률 
- decoder가 y_i를 번역할 때 source sentence에서 어떤 위치의 단어에 더 attention을 줄지 결정하는 weight로 사용 
- alignment model에서 구한 score e_ij를 이용하여 계산


③ c_i  : distinct context vector

- attention을 반영한 context vector
- y_i에 대한 x_j의 영향력인 weight α_ij를 반영하여 source sentence에서 y_i와 관련된 부분에 더 집중하여 계산한 context vector
- encoder의 j에서 hidden state h_j에 대해 가중치 α_ij를 곱해서 계산


④ 조건부 확률

- 2에서 다룬 이전 encoder-decoder 모델에서와 달리

  context vector로 고정된 c가 아닌 attention이 적용된 c_i를 사용하여 계산 

 

 

 

➡️ Attention 매커니즘을 도입한 Decoder

→  h_j와 s_(i-1)를 이용해 y_i에 대한 x_j의 attention α_ij를 구하고
→ α_ij를 반영하여 중요한 h_j에 더 가중치를 준 context vector c_i를 계산하고
→  c_i를 y_i에 대한 조건부 확률 계산에 사용한다!

 

decoder는 α_ij를 이용해 y_i를 생성하기 위해 더 attention을 주어 사용할 source sentence 위치를 파악한다! 
- 생성할 output 단어와 연관성이 높은 input 단어들에 더 집중하여 디코딩한다!

source sentence의 모든 정보를 고정된 길이의 벡터로 인코딩될 필요 없이 h_j sequence에 분산되어 저장된다! 
- decoder는 선택적으로 source sentence에서 주의를 기울일 일부를 결정하여 h_j sequence에서 정보를 검색한다! 

 

 

 

 

 

 3.2. Encoder: Bidirectional RNN for Annotating Sequences

 

- bidirectional RNN(BiRNN), 양방향 인코더 구조 

- forward RNN와 backward RNN로 구성 

  • forward RNN : input sequence를 처음부터 순차적으로 읽으면서 forward hidden states (h_1→, h _ 2→, ⋯, h _ Tx→)를 생성 
  • backward RNN : input sequence를 뒤에서부터 역방향으로 읽으면서 backward hidden states (h _ 1←, h _ 2←, ⋯, h _ Tx←)를 생성
  • 입력 x_j에 대한 forward hidden state h _ j→ 와 backward hidden state h _ j 를 연결하여 j-번째 hidden state(annotation) h_j를 생성 

 

-  RNN의 hidden state 특성으로 인해 h_j는 입력 단어 x_j의 가까운 위치에 있는 단어들의 정보를 더 많이 보유하게 됨 

- annotation이 x_j의 preceding words뿐만 아니라 following words에 대한 정보도 잘 반영할 수 있도록 변형 
- h_j를 기반으로 계산되는 context vector c_i도 x_j의 앞과 뒤 정보를 모두 고려 

 

 

➡️ Bidirectional RNN을 사용한 Encoder 

 

- encoder의 hidden state(annotation)를 양방향으로 구성함으로써

  source sentenced의 x_j에 대한 정보가 x_j의 preceding words와 following words를 모두 반영하도록 한다!

 

 

 

 

 

 

▶ 4. Experiment Settings

 

- English-to-French translation 과제로 모델 평가 
- RNN Encoder-Decoder 모델과 성능 비교 

 

 

▶ 4.1. Dataset

- 사용한 WMT ’14 데이터셋은 English-French corpus 데이터셋 
- 전체 850만개 단어 중 348만개 단어로 크기를 줄인 후 토큰화 진행 

  언어별로 가장 빈도 높게 등장하는 3만개 단어만 vocabulary로 사용하고

  해당되지 않는 단어는 <UNK> 토큰으로 표현

 

▶ 4.2. Models

- 두 종류의 데이터셋에서, 두 종류의 모델을 학습

  • 길이가 최대 30인 단어들 데이터셋
    길이가 최대 50인 단어들 데이터셋
  • RNN Encoder-Decoder (RNNencdec)
    RNNsearch (proposed model)

 

- RNN Encoder-Decoder (RNNencdec)
: encoder와 decoder 모두 1,000 hidden units

- RNNsearch (proposed model)
: encoder forward RNN, encoder backward RNN, decoder 모두 1,000 hidden units

- SGD 사용, minibatch = 80
- multilayer network를 사용해 target word에 대한 최종 조건부 확률을 계산
- beam search를 사용하여 조건부 확률을 최대로 하는 번역 결과를 예측 

 

 

 

 

 

▶ 5. Results

 

▶  5.1. Quantitative Results

 

- BLEU score로 MT 모델의 성능을 평가
- 모든 조건에서 RNNsearch가 기존의 RNNencdec에 비해 성능이 좋음 
- 특히 <UNK>가 없는 경우, 기존 구문 기반 번역 시스템(Moses)만큼 높은 성능을 보임

 

논문 상에는 4에서 나오는 Figure지만 설명을 위해 5에서 첨부함


- RNNenc의 문장의 길이가 증가하면서 성능이 확연히 저하됨
- 반면 RNNsearch-30과 RNNsearch-50은 길이가 긴 문장에서도 좋은 성능을 보임
- RNNsearch-30이 RNNencdec-50을 능가함을 확인
  = 고정된 크기의 context vector를 사용하는 모델에 비해 

      Attention 매커니즘을 반영한 모델이 더 뛰어남을 확인 

 

 

▶  5.2. Qualitative Analysis

 

▶ 5.2.1. Alignment

 

Attention 모델은 source sentence words와 generated translation words 사이 soft-alighment를 보여줌

논문 상에는 4에서 나오는 Figure지만 설명을 위해 5에서 첨부함

 

- column = source sentence words, row = generated translation words
  행렬 대각선 = annotation weight αi​j
- (a) : [European Economic Area] → [zone économique européen]
        soft-alignment 모델은 영어와 프랑스어의 어순이 다른 문장도 올바르게 번역 
        [European] and [Economic]를 넘기고 [zone]과 [Area]를 올바르게 align 
- (d) : [the man] → [l’ homme] 
        [the]는[le], [la], [le], [l']로 번역될 수 있음
        soft-alignment 모델은 [the]를 번역할 때 [man]도 함께 고려하여 번역 
- soft-alignment 모델은 source와 target sentence의 길이가 다른 경우도 처리 가능 

 

* Soft-alignment : input sequence의 여러 위치에 대해 가중치(확률)를 할당함으로써 output을 생성할 때 input의 여러 위치를 동시에 고려하는 alignment 방식, 실수값을 사용하는, 문맥을 고려한 alignment가 가능하다는 장점 

* Hard-alignment : input sequence에서 하나의 위치만 선택하여 ouput 생성에 사용하는 alignment 방식, 0과 1 값을 사용하는, 모든 input 정보를 고려하지 않기 때문에 문맥을 충분히 반영하지 못할 수 있다는 단점 (monotonic alignment) 

 

 

 

▶ 5.2.2. Long sentences 

 

- 긴 문장을 번역하는데 Attention 모델 RNNsearch이 기존 RNNencdec보다 더 신뢰할 수 있음 

- RNNsearch는 입력 문장에서 세부 사항을 누락하지 않고 모든 정보를 보존하면서 긴 문장을 정확하게 번역함 

- RNNsearch가 긴 문장의 정보를 고정 길이 벡터로 인코딩할 필요없이, 입력 문장의 특정 단어를 둘러싼 일부분만 정확하게 인코딩하면 되기 때문인 것으로 해석됨 

 

 

 

 

 

▶ 7. Conclusion

 

- 기존 encoder–decoder 방식의 NMT는 입력 문장을 고정 길이 벡터로 인코딩한다는 점에서 긴 문장을 번역하는데 한계가 있음을 말하며, 이를 해결할 수 있는 새로운 아키텍처 제시
- RNNsearch는 encoder–decoder 방식에서 target werd를 생성할 때 input words와 annotations을 검색할 수도 있도록 확장한 모델 

- 입력 문장을 고정 길이 벡터로 인코딩할 필요가 없이 모델은 target word 생성과 관련된 정보에만 집중하여 번역할 수 있게 됨
- English-to-French translation 작업으로 테스트를 진행한 결과, RNNsearch는 문장 길이에 관계없이 기존 encoder–decoder 모델(RNNencdec)보다 훨씬 성능이 뛰어났으며 특히 긴 문장을 번역하는 능력이 뛰어남이 드러남 

- 또한 모델이 사용한 soft-alignment는 input words에서 target word와 관련된 annotation을 올바르게 찾았으며 직관적임 

 

 

 

 

 

 

 

 

 

Reference

https://aiheroes.ai/community/80
https://ctkim.tistory.com/entry/Attention-Mechanism
https://velog.io/@sjinu/%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC-Attention-Mechanism#3-%EB%8B%B7-%ED%94%84%EB%A1%9C%EB%8D%95%ED%8A%B8-%EC%96%B4%ED%85%90%EC%85%98dot-product-attention

 

https://data-scient2st.tistory.com/151
https://velog.io/@xuio/NLP-%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-NEURAL-MACHINE-TRANSLATIONBY-JOINTLY-LEARNING-TO-ALIGN-AND-TRANSLATE#-%EA%B2%B0%EB%A1%A0-%EB%B0%8F-%EC%84%B1%EB%8A%A5