7주차(1) - Effective Approaches to Attention-based Neural Machine Translation

2019. 3. 6. 13:46풀잎스쿨 NLP Bootcamp

논문링크: https://arxiv.org/abs/1508.04025

참고자료: (김보섭님 발표자료) Effective Approaches to Attention-based Neural Machine Translation_김보섭.pdf


Abstract

지난 논문에서는 Alignment를 이용한 Attention의 초기 형태를 살펴보았다. 하지만 아직 Attention에 대한 개념이 제대로 정착하기 이전이었기에 Attention이 제대로 쓰이지 않았다. 이 논문에서는 Global Attention과 Local Attention 두가지로 나누어 Neural Machine Translation에서 어떻게 하면 Attention을 효과적으로 사용할 수 있는가, 그리고 길이가 긴 Input Sequence에 대해 어떻게 Attention을 효과적으로 학습할까에 대한 방법을 제시한다.

Contribution

Basics

NMT(Neural Machine Translation)이란 Neural Network가 주어진 Source Sentence에 대해 Target Sentence로 번역될 P(target|source)를 모델링 하는 것이다. 일반적으로 Neural Networkfmf Training하는 관점에서의 Attention은 서로 다른 두 Modality의 Alignment를 Neural Network가 배우게 하는 것이다.

그리고 NMT에서의 Attention은 Source Sentence와 Target Sentence의 Alignment를 Neural Network가 배우게 하는 것이다.

이러한 Alignment를 학습하기 위해 NMT의 기본 구조로써 Encoder-Decoder방식의 Stacked-LSTM구조를 사용하며, 여기에 Attention방법론을 추가하는 것으로 Alignment에 대한 학습을 가능하게 한다.



위 수식에서 p(y_t | y_<t, s) 부분과 h_t부분에 c_t가 추가되게 된다. 바로 이 c_t를 만드는 방식이 결국 논문에서 말하는 Global Attention과 Local Attention이다.


Global Attention / Local Attention

Global Attention은 Encoder의 모든 Step의 Hidden State를 만들때 c_t를 고려하기 위해 만들어진 개념이다.

위 구조를 보면 우리가 알고있는 Attention개념이 그대로 적용된 모습을 볼 수 있다. 여기서 Global Attention은 Input Sequence 전체에 대해 Attention을 계산하고 있다. 일단 기존의 Attention개념과 다른점은 Attention의 Input으로써 Hidden State를 그대로 사용한다는 점이다. 이러한 Global Attention은 Location-based와 Content-based로 다시 나눌 수 있다.


Global Attention의 단점이라고 하면 Input Sequence 전체에 대해 Attention을 계산하기 때문에 연산량이 많아진다는 점이다. 또한 Input Sequence의 길이가 길어질수록 이 부분에 대한 연산량은 급격히 증가하게 된다. 이러한 문제를 해결하기 위해 Global Attention만이 아닌 Local Attention을 같이 사용하게 된다.

Local Attention은 Global Attention과는 약간 다른 구조를 보여준다. 구조를 자세히 살펴보면, Local Attention은 Input Source중 특정 Subset만을 사용하고, 그 Subset 내에서의 Attention을 구하고자 하는 구조를 보여준다. 이러한 방식은 한정적인 정보만을 가지기 때문에 Input Sequence 전체에 대한 Attention을 푸는 문제보다 더 어렵다고 할 수 있다.


Local Attention도 Monotonic Alignment와 Predictive Alignment로 구분할 수 있는데, 여기서는 Predictive Alignment에 중점을 둔다. 설명하자면, Monotonic Alignment는 n번째의 Input에 대해 몇번째의 Output을 주목해야 하는지 계산하는 방식이다. 이에 비해 Predictive Alignment는 Decoder의 Hidden State를 Sigmoid 함수를 이용하여 몇번째 Output을 주목해야 하는지 계산하는 방식이다. 예를 들어, p_t(Aligned position)의 최종 계산값이 2.5가 나왔다면 Output Sequence중 3번째를 주목하는 방식이다. 여기서의 Filter는 Gaussian으로 적용한다.


추가로, 이렇게 Subset 내에서의 Attention을 어떻게 학습시키는가에 대한 문제를 Show, Attend, and Tell 논문(https://arxiv.org/abs/1502.03044)에서는 강화학습을 통해 해결하고자 하는 시도를 보인바 있다.


Input-Feeding Approach

우리가 Decoder를 이용하여 Output을 Predict했을때, 다음 Sequence를 예측하기 위해서 이전 Prediction이 무엇이었는가에 대한 정보를 고려하면 좋을 것이다. 하지만 기존 Encoder-Decoder방식은 각각의 예측이 독립(Independent)되어있으며, 이를 suboptimal하다고 표현한다. 바로 이런 점을 개선하기 위해 Input-feeding approach라는 개념이 들어가는데, 이전 Prediction에 사용된 t-1에 대한 Hidden State를 t시점에서의 Decoder의 Input으로 사용하는 개념이다. 


다른 식으로 설명하자면 Input-feeding Approach에서는 Key Network와 Query Network사이의 Cosine Similarity를 계산하는 방식이다.


Result & Conclusion

Result

하나씩 결과물을 살펴보도록 하자. 일단 위 결과지표에서는 reverse라는 용어가 나오는데, 이것은 Input Sequence를 역순으로 넣어주는 방식을 말한다. 이러한 방식은 이전 논문들에서도 간간히 보여진 바가 있다. 위 결과에서는 단계별로 적용하는 방식을 추가할때마다 성능이 개선되는 것을 확인할 수 있다.


또한 이 논문에서는 SOTA 모델의 결과물보다 BLEU Score가 더 높게 나온다고 주장하고 있다.


위 결과에서는 English-German 번역 대신 German-English에 대한 결과를 보여주고 있다. 위 표에서도 보이듯이 English-German에 대한 번역성능에 비해 German-English에 대한 번역성능은 아주 좋은 결과를 보여주지는 못하고 있다. 이러한 결과에 대한 추측으로 English 내 어휘의 수가 German에 비해 적다는 분석/추측이 있다.

위 결과물에서는 모델에 단계별로 추가 방법을 적용할 때마다 학습의 수렴 속도가 늘어나는 것을 확인할 수 있으며, 특히 Attention을 적용할 시에 적용하지 않은것에 비해 학습의 수렴 속도가 빠른 것을 확인할 수 있다.

또한 위 결과를 통해 길이가 긴 Input Sentence에 대해 기존에 제시되었던 모델들에 비해 더욱 효과적으로 번역을 처리할 수 있는 것을 확인할 수 있다.

위 결과에서는 Attention의 적용 방식에 따른 BLEU Score를 보여주고 있다. 여기서는 Local Attention w/ Predictive Alignment가 가장 좋은 것으로 확인되고 있다.

여기서 AER은 Alignment Error Rate을 줄인 용어이다. 즉, Ground Truth에 해당하는 Attention Map에 비해 만들어진 Attention Map이 얼마나 일치하는지를 Score로 계산한 결과이다. 하지만 주의할 점은 AER Score가 번역 품질에 직접적으로 영향을 끼치는 것은 아니다는 점이다.


Conclusion

해당 논문에서는 Global/Local Attention과 Input-Feeding Approach라는 방법을 통해 NMT의 성능을 향상시키고자 한다. 때문에 모델에 적용된 방법 뿐만이 아닌 다양한 방법으로 결과물에 대한 분석을 진행한 것을 확인할 수 있다. 한가지 아쉬운 점이라면 English-German에 대한 번역 성능은 상당히 괜찮아졌지만 German-English에 대한 번역 성능은 그렇게 많이 개선된 것으로 보이지 않는다는 점이다. 때문에 A언어에서 B언어에 대한 번역 성능이 B언어에서 A언어로의 번역에 대한 성능개선만큼 이루어질 수 있다면 어떠한 언어를 번역해도 좋은 성능을 낼 수 있는 실마리가 되지 않을까 하는 생각이 드는 논문이다.