본문 바로가기
논문리뷰

[논문리뷰] Attention 논문 리뷰

by 단깅수 2025. 1. 16.
728x90

Attention 논문 리뷰입니다.

본 논문은 2014년도에 등장한 논문입니다.

논문 : NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE

저자 : Dzmitry Bahdanau Jacobs University Bremen, Germany KyungHyun Cho Yoshua Bengio∗ Universite de Montr ´ eal

 

[1] Background

통계적인 방식의 기계번역

 

해당 논문은 제목에서 알 수 있듯이 신경망을 활용한 기계번역 Task에 집중하고 있습니다.

 

확률적 관점에서 번역은 목표 문장을 찾는 개념과 같습니다.

 

어떤 문장 x가 등장했을 때 조건부 확률을 통해 x 다음에 나올 확률이 가장 높은 문장 y를 생성하는 방식으로 진행되죠.

 

그래서 이 조건부 확률의 분포를 직접 학습하기 위해 신경망을 사용하는 것이 제안되었습니다.

 

신경망을 통한 기계번역의 접근 방식은 일반적으로 인코더 디코더 구조로 구성되어 있고, 각각 RNN이나 LSTM 등 모델을 사용했습니다.

 

그 과정에서 Seq-to-Seq 논문같은 데에서는 인코더와 디코더 사이에 Context Vector를 두어 가변적인 길이의 기계번역 Task도 수월하게 수행할 수 있도록 연구되었습니다. 아래처럼 말이죠.

 

Seq-to-Seq 모델 Architecture

 

이러한 구조를 가졌을 때 입력 문장의 길이가 길어지면 초기 단어만의 정보가 흐릿해지는 장기 의존성 문제 때문에 정보의 손실이 발생하기에 RNN 기반 모델보다 LSTM, GRU 등의 모델을 사용하기 시작했습니다.

 

그러나, GRU, LSTM 등의 모델도 이러한 장기 의존성 문제를 완전히 해결할 수는 없었고 무엇보다 인코더의 마지막 Hidden Vector가 Context Vector로 나오기 때문에 마지막 단어의 정보가 가장 뚜렷하게 담기는 상황이 발생합니다.

 

그래서 본 논문에서는 이 문제를 해결하고자 디코더의 매 시점마다 새로 Context Vector를 알아내고 그 다음에 나올 단어를 예측하는, 즉 매 시점마다 입력 문장의 어디에 집중할 건지를 학습하는 아이디어를 제시합니다.

 


 

[2] Learning to Align and Translate

Attention 간단 Architecture

 

위와 같은 인코더, 디코더 구조가 있을 때 매 T 시점마다 Loss Func을 최소로 하는 Context Vector를 구해줘야 합니다.

 

어텐션에서는 Context Vector를 구할 때 내적을 사용합니다. (왜? 두 벡터를 내적했을 때 서로 유사하면 값이 크고, 서로 상이하면 값이 작기 때문에 인코더의 어떤 단어와 유사한지 알아보기 위해서 사용)

 

예를 들어, S4의 Context Vector를 구한다고 가정한다면

C4 = <S4, h1> h1 + <S4, h2> h2 + <S4, h3> h3 가 됩니다.

이 때, 각 h1, h2, h3에 대해 가중합이 일어나고 이 말은 즉 h123 토큰 중 어떤 것과 가장 유사한지 알아보고 집중한다는 의미입니다.

이후, 계산된 C4와 S4가 일련의 계산과정을 거치고 예측값 ŷ을 출력하는 과정으로 마무리됩니다.

 

여기서 중요한 개념이 등장하는데 컨텍스트 벡터를 구할 때 해당 시점의 St와 각 h1, h2. h3와 내적을 통한 가중합이 일어나잖아요?

가중합은 임의의 벡터(h123)에 행렬(내적값)을 곱하는 것이고 이는 선형변환입니다.

t 시점의 S가 어떤 단어와 유사한지 가중합을 통해 알아보는 과정에서 선형변환이 일어난다는 겁니다.

다시말해, "어떤 단어와 유사하게 선형변환시켜야 해당 시점에서 Loss를 가장 줄일 수 있을까?"를 학습한다는 겁니다.

 

그리고 기존에는 h3 = Context Vector에 인코더 단어들의 모든 정보가 담겨져 있었는데(불균형적으로)

이제 어떤 단어와 유사한지 딥러닝 모델 스스로 학습하도록 하는 겁니다.

 

Dot Product (Weight)

가중치 계산 방식 1

 

조금만 더 구체적으로 내적(가중치)에 대한 이야기를 해보겠습니다.

내적을 통해 가중치를 구하면 당연히 양수도 있고, 음수도 있을 겁니다.

 

어텐션 메커니즘에서 각 가중치는 특정 입력 요소의 중요도를 나타내기에 더 높은 가중치는 더 큰 중요도를 의미합니다.

그러나 가중치가 음수가 되면 컨텍스트 벡터에 반영되지 않거나 왜곡될 수 있는 가능성이 존재해 모든 가중치를 양수로 바꿔주는 작업이 필요합니다.

또한, 모든 가중치의 합을 1로 만들어 정규화시킴으로써 과적합 방지 효과를 가져올 수 있기에 이 작업도 필요합니다.

 

이를 위해 어텐션에서는 각 가중치에 지수함수를 씌운 후 가중치 합으로 각 값을 나누는 소프트맥스 연산을 취합니다.

아래 표처럼 말이죠.

가중치 지수함수 값 합으로 나눈 값
1.7 exp(1.7) ▷ 5.5 5.5 / 56.5 = 0.097
-1.3 exp(-1.3) ▷ 0.3 0.3 / 56.5 = 0.005
3.9 exp(3.9) ▷ 49.4 49.4 / 56.5 = 0.874
0.3 exp(0.3) ▷1.3 1.3 / 56.5 = 0.024

 

Attention Encoder

Attention Architecture

 

지금까지 디코더를 설명했으니 인코더도 보겠습니다.

 

인코더는 BiRNN으로 양방향을 고려하는 RNN 모델로 구성되어 있습니다.

 

따라서 만약 입력이 "나는 밥을 먹는다 <EOS>"이고

인코더에서 "먹는다"의 Hidden State를 구할 때

 

"나는 밥을 먹는다(정방향)" 의 Hidden Vector와 "<EOS> 먹는다(역방향)"의 Hidden Vector가 Concat되어 FC Layer, Softmax 함수를 거친다고 생각하면 될 것 같습니다.

 

Alignment?

Why Alignment?

 

그냥 순수하게 궁금하다는 생각이 들었는데, 본 논문에서는 Alignment(정렬)라는 단어를 계속 사용합니다.

 

그래서 Chat GPT에게 물어보았습니다.

Q: attention에서 alignment를 자꾸 언급한 이유는?

A: 어텐션 메커니즘에서 'alignment'라는 용어를 자주 언급하는 이유는 이 메커니즘이 번역 과정에서 소스 언어의 각 단어와 타깃 언어의 생성될 단어 사이의 동적인 연관성을 설정하는 과정을 의미하기 때문입니다. 어텐션은 인코더의 각 단어에 집중할지를 결정하고, 이를 통해 타깃 언어를 생성하는 데 필요한 문맥적 정보를 동적으로 선택하며, 그 과정에서 자연스러운 '정렬'이 이루어집니다.

Q: alignment와 sort의 차이

A: 정렬(sort)은 데이터를 오름차순 또는 내림차순으로 배열하는 프로세스입니다. 정렬의 목적은 데이터를 쉽게 읽고 이해할 수 있도록 하는 것입니다. 예를 들어, 이름 목록을 정렬하면 알파벳 순서로 정렬됩니다.

정렬(alignment)은 데이터를 특정 기준에 따라 배열하는 프로세스입니다. 정렬의 목적은 데이터를 특정 방식으로 그룹화하여 패턴이나 추세를 식별하는 것입니다. 예를 들어, 고객 목록을 나이별로 정렬하면 연령별로 그룹화됩니다.

 

정리해보면, Alignment는 입력 데이터를 어떤 기준에 따라 배열하는 것이고 이 기준은 유사도입니다. 유사도에 따라 출력 후보군을 점수를 매겨서 순서대로 정렬한 다음 가장 상위의 단어가 출력되는 느낌이라서 Alignment를 자꾸 언급한게 아닐까.. 하는 느낌적인 느낌s가 들었습니다.

 


 

[3] Experiments

일단 실험 부분에 있어서 본 논문에서는 WMT 14 데이터(영어-프랑스어 병렬 Corpus)를 사용하고 RNN encdec 모델과 성능을 비교합니다.

 

1) Quantitative Results

Quantitative Results

 

  • RNNsearch 모델은 모든 경우에서 기존 RNN encdec 모델을 능가하며, 알려진 단어로만 구성된 문장을 처리할 때는 구문 기반 번역 시스템인 Moses와 비슷한 성능을 보였음
  • RNNsearch 모델은 문장 길이가 증가해도 성능 저하가 없는 반면, RNN encdec 모델은 문장 길이가 길어질수록 성능이 급격히 떨어지는 것으로 나타남

 

2) Qualitative Analysis

Qualitative Analysis

 

  • RNNsearch 모델은 어텐션을 활용하여 소스와 타깃 간의 정렬을 보다 유연하게 처리함으로써, 문장의 의미를 정확히 번역하는 데 효과적이며, 특히 긴 문장에서도 정확한 의미 전달을 유지함
  • RNNencdec 모델은 문장이 길어질수록 의미의 왜곡이 발생하기 시작하며, 특정 단어 이후로 원문의 의미를 제대로 반영하지 못하고 번역의 정확도가 떨어짐

 

3) Attention alignment sample

Attention alignment sample

 

  • 어텐션 매트릭스 시각화: 각 플롯은 어텐션 메커니즘이 어떻게 소스 문장의 각 단어를 타깃 문장의 생성에 연결하는지를 시각적으로 보여줌
  • 대각선 정렬: 대부분의 정렬이 대각선을 따라 이루어져 있어, 대체로 소스와 타깃 언어 간의 번역이 단어 순서에 있어 일관성을 보임을 알 수 있음
  • 비대각선 정렬: 특정 사례에서는 비대각선 정렬이 관찰되며, 이는 어텐션 메커니즘이 언어 간 구조적 차이, 예를 들어 형용사와 명사의 순서를 다르게 처리하는 능력을 보여줌

 


 

[4] Conclusions

  • 기존의 신경망 기계 번역에서 전체 입력 문장을 고정 길이 벡터로 인코딩하는 방식은 긴 문장의 번역에 문제가 있었으며, 이를 해결하기 위해 어텐션 알고리즘을 제안
  • 디코더의 각 시점마다 Context Vector를 계산해서 활용
    • Context Vector는 인코더의 각 Hidden State와 내적 후 가중합해서 계산
  • RNNsearch 모델은 기존 인코더-디코더 모델에 비해 영어-프랑스어 번역 작업에서 훨씬 우수한 성능을 보였으며, 특히 긴 문장에 강한 로버스트함을 보여, 소프트 어텐션을 활용한 번역의 정확성과 문맥 이해도가 높다는 것을 입증

 


 

[5] References

Attention 알고리즘 및 선형변환 : https://www.youtube.com/watch?v=8E6-emm_QVg&t=257s

가중치 계산 방식 : https://www.youtube.com/watch?v=6s69XY025MU

Attention Encoder : https://www.youtube.com/watch?v=LKpW9P16C7U

Alignment : https://data-scient2st.tistory.com/150

728x90
반응형