Effective Approaches to Attention-based Neural Machine Translation (링크)
1. 서론
기계번역에 소계되었던 Seq2Seq 모델을 기억하는가, Encoder 와 Decoder 부로 이루어져 있으며, Encoder 부에서는 해석해야할 문장에 대한 해석을 진행하고, Decoder 부에서는 RNN 을 통해서 Generate 하는 모델로 기존 기계번역 대비 놀라운 성능 향상을 보여 주었던 메커니즘이다.
하지만 문장이 길어짐에 따라서 번역 성능이 급격히 떨어지는 문제가 있는데, 이러한 문제를 해결하기 위하여, LSTM, GRU 같은 자체적인 Short Cut 을 가지고 있는 Cell 의 연구부터 BackWard 와 Forward 를 동시에 진행하여 Concat 하는 형태로 문제를 해결하고자 한 BiDirectional LSTM 까지 다양한 연구가 있었으며, 여기서는 Attention Mechanism 이라는 방법을 소계하고자 한다.
2. 핵심 IDEA
(1) Seq2Seq 구조에서 Attention Mechanism 활용 (예)
Attention Mechanism 은 최근 거의 모든 종류의 신경망에 사용되고 있는 메커니즘으로, MRC 에서도 당연히 사용되는데, 기본적인 신경망, RNN, GRU, BiDirectional , Seq2Seq(Encoder,Decoder)등의 개념은 알고 있다고 가정하고, Attention 만 간단하게 따로 설명하고자 한다.
위는 Attention Layer 를 활용하여 Seq2Seq 를 개선하는 모습을 보여주고 있다. 원래 대로라면, Decoder 부에서 각 State 의 결과 값이 바로 다음 State 의 Input 으로 feed 되게 되지만, Attention Layer 를 추가하면, Encoder 부의 Context Vector 의 concat 후 다음 State Input 으로 활용하게 된다.
(2) Attention Layer – Architecture (Global Attention)
Attention Layer 를 조금 더 Zoom In 해서 보면, 위의 그림과 같은 구조인데, 주요 변수만 한번 설명해 보고자 한다.
- hs : encoder 부의 hidden state vector
- ht : decoder 부의 hidden state vector
- at : allign vector ,dot product 등, hs와 ht 의 연산 결과로 논리적으로 알고 싶은 내용은 ht 를 설명하는데 각 hs 가 얼마나 영향도를 주느냐
- ct : at * hs 로 각 Hidden Vector 에 at(중요도) 를 곱하여 Average 하여 하나의 Context Vector 로 만들어 줌
- ht^ : ct * ht 연산으로 단순 Decoder 부의 연산 결과를 쓰는것이 아닌 Encoder 부의 정보를 참조하여 결과를 내겠다라는 의도가 있음. 해당 값은 다음 State 의 Input 으로 활용됨
(3) 알고리즘 설명
(3-1) at 를 먼저 보자
at 를 보면 결국은 어떤 방법으로 score 를 구해서 Softmax 를하여 Encoder 부 전체의 합이 1이 되도록 확률화 하는 결과를 주고 있음을, 수식을 통해 확인할 수 있다. 논리적인 의미로는 Encoder 부의 각각의 단어가 Decoder 부의 결과에 어떻게 영향을 미치는지 확률적으로 표현하겠다가 되겠다.
그런데 저 Score 라는 놈은 무언인가? 논문에서는 3가지 방법을 제시하고 있고, 실제로는 concat t방법을 사용한다. 그냥 여기서는 심플하게 dot product 라고 생각해보고 한번 실제 흘러가는 과정을 시각화 해보자. 우리가 예측하고 싶은 대상이 아래 그림에서 ? 하고 하면 i-1 번째 Hidden Vector 를 기준으로 위의 3가지 Score 방법중 하나를 선택하여, encoder 의 State 를 하나씩 돌아가면서 Scoring 를 구하면 된다.
하나씩 Score 를 구하면, 아래와 같이 각 State 의 Score 가 구해질 것이다.
그런데 우리가 알고 싶은 것은, 확률이니까, Softmax 를 씌워서 확률로 변환하여 주면 at 는 성공적으로 구할 수 있다.
(3-2) ct 와 ht^ 을 구해보자
ct 를 구하는건, at (중요도) 와 ht 의 * 연산을 통해 구할 수 있다. ht^ 은 아래와 같이 원래 Decoder 부의 h 와 ct 의 concat 을 통해서 구할 수 있다.
이정도로, Attention Mechanism 을 설명을 마치도록 하겠다.
3. 결론
위는 영문-독어 번역 성능을 기존의 모델과 이 논문에서 만들 모델의 성능을 비교 하고 있는데, 기존의 Single Model 기준으로 Best 가 20.7 이었는데, Attention 적용으로 Single Model 기준 최고의 성능은 20.9로 약간 더 좋은 성능이며, Ensemble 모델 기준으로 기존에 21.6 이 Best 였는데, Attention 을 포함한 8개의 모델 Ensemble 로 23.0 의 BLEU Score 를 달성하여 기존의 State of Arts 를 뛰어 넘었다.
특히나 재미있는 부분은 번역해야 하는 문장의 길이에 따른 성능의 변화인데, 애초에 Attention Mechanism 자체가 추구하였던 것이 장문에서의 Vanishing Problem 을 잘 해결 하고 있음을 보여 주고 있다.