ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Neural Machine Translation by Jointly Learning to Align and Translate] 논문 리뷰
    Natural Language Processing 2021. 2. 25. 11:31

    이번에 설명할 논문은 뉴욕대 조경현 교수님의 Neural Machine Translation by Jointly Learning to Align and Translate 이라는 논문입니다. 

     

    목차

    • Introduction
    • Background: Neural Machine Translation
    • Learning to ALIGN and TRANSLATE
    • Experiment
    • Results
    • Related Works
    • Conclusion

    ICLR 2015에 발표된 논문으로, 저자는 조경현 교수님을 비롯하여 Dzmitry Bahdanau와 Yoshua Bengio입니다. 기본적으로 Machine Translation 주제를 가지고 있으며, statistical machine translation와 비교할 때 우수한 성능을 보이는 Neural machine translation (neural network-based)을 다룹니다. 인코더-디코더 구조를 가지고 있으며, 기존의 이러한 구조가 가지는 단점인 fixed-length representation의 문제를 해결하고자 오늘날의 Attention 이라 불리는 메커니즘을 제안합니다.

    이 논문에서 제안하는 attention, 즉 soft search 방법은 직관적으로, 번역을 진행할 때, 번역하려고 하는 위치의 단어가 source, 즉 번역되는 문장의 어떤 위치와 가장 연관성이 있는지를 찾는 것입니다. 영어를 한국어로 번역하는 것을 예시로 들겠습니다. "Since i am a student, i go to school" 을 ---> "나는 학생이기 때문에 학교를 간다" 로 번역한다고 할때, "학교"라는 단어를 출력하는 과정에서 source sentence인 영어문장의 모든 단어를 보고, 가장 관련있는 단어에 보다 더 집중(attend)할수 있게 하는 방법이 바로 attention mechanism 입니다.


    1. Introduction

     

    Neural Machine Translation 은 논문이 집필된 당시에(지금도 그렇지만) Encoder-Decoder 구조가 많이 사용됐습니다. 인코더와 디코더라는 neural network를 각각 사용하여 이어붙인 형태로서, bottleneck과 같이 dimensionality를 고의로 축소시키는 등의 방법을 활용하여 각 input 혹은 데이터의 core한 representation만을 추출하려는 방법입니다.

    Encoder-Decoder example

    이러한 구조는 machine translation 분야에서도 많이 사용되었는데, RNN을 사용하여 Encoder와 Decoder 모두를 구성하고, source sentence의 마지막 단어의 hidden state(of RNN encoder)를 compressed representation처럼 사용하는 등의 구조를 취했습니다. 이 방식의 문제점은 인코더가 무조건 모든 source sentence(input)을 고정된 길이의 벡터로 compress 해야한다는 점입니다. 문장의 길이가 길어지는 경우 이러한 문제점은 더욱 심화됩니다.


    2. Neural Machine Translation

     

    본 논문에서 학습시키는 parametrized model은 기본적으로 conditional distribution을 학습합니다. 여기서 conditional은 source sentence가 주어졌을때(given)의 conditional한 target에 대한 distribution이라고 이해하면 될 것입니다.

     

    RNN Encoder-decoder 에서의 input은 sequence of vectors입니다.

     

    RNN을 사용하여 c 라고 부르는 fixed-length representation을 만들어내게 되는데 과정은 다음과 같습니다. h 는 recurrent하게 학습되는 RNN의 hidden state 이고, q는 aribitrary function이라고 생각하면 됩니다.

    q는 이처럼 마지막 단어의 hidden state 만 뽑는 function으로 두어도 됩니다. 기존 NMT의 approach들처럼...

    RNN을 사용하는 Decoder는 미리 계산된 context vector c 와, 이미 번역이 완료된 이전의 단어들이 주어졌을때(given), 다음으로 나올(번역될) 단어가 무엇일지 예측합니다. 예측이라 함은, 나올수 있는 단어들에 대한 probability distribution을 출력한다고 보면 됩니다.

    joint
    s 는 decoder RNN 의 hidden state


    3. Learning to ALIGN and TRANSLATE

     

    Encoder는 bidirectional RNN을 사용합니다. encoder에서 주목할 점은, annotation이라고 부르는 것을 생성한다는 점입니다.

    먼저 input sequence x를 받습니다. 이를 bidirectional RNN을 가지고 인코딩을 진행합니다. bidirectional 하다는 것은 기존의 RNN처럼 sequence의 처음부터 끝까지 recurrent한 computation에 더불어 문장의 끝부터 처음까지 거꾸로 동일한 계산을 진행한다는 것입니다. 결국, BiRNN = forward RNN + backward RNN

    bidirectional RNN architecture

    Annotation 이라는 것은 어떠한 representation으로 이해하면 되는데, input sentence의 특정한 위치에 대한 annotation은 forward RNN 과 backward RNN의 그 위치에서 계산된 hidden state를 concat 시킨 것입니다. 이는 bidirectional 한 특징 덕분에, preceding words 뿐만 아니라 following words 에 대한 information 도 가지게 됩니다. 그러나 여전히 RNN의 특성(recurrent computation) 때문에, 각 annotation은 자신의 문장 내 위치에서 가까운 단어들과 훨씬 큰 영향을 주고받게 됩니다. 

     

    디코더는 이전에 언급한대로, conditional probability를 출력합니다. decoder RNN의 hidden state 와, 이후 설명되는 context vector c, 그리고 이미 예측된 바로 이전 단어를 가지고 다음 위치의 출력을 예측합니다. 

    context vector c 는 encoder 단에서 계산된 sequence of annotations 즉 source sentence 의 각 단어의 annotation을 모아놓은 것을 기반으로 계산이 됩니다. 이 annotation 은 위에서 설명했습니다.

     

    Attention 설명 전에 간단히 subscript를 짚고 넘어가면 이해가 편해집니다. j 는 input sentence(encoder 단), i 는 target sentence(decoder 단) 을 위한 index 로 보면 됩니다.

     

    attention mechanism 의 중요한 alignment model 인 a 입니다. 이 function a 는 단순히 j 번째 h 와 i-1 번째 s 가 얼마나 유사한지(similar) 를 측정합니다. cosine similarity나 dot product 처럼 두 벡터의 유사도를 측정합니다. dot product 를 많이 사용합니다.

    이전에 말씀드린 것처럼 s는 decoder에서 계산되는 hidden state 이고, h 는 encoder에서 계산한 annotation 입니다(input sentence의 정보를 담고있는).

     

    번역은 단어 하나씩 출력됩니다. 이를 고려할때, decoder 단의 index인 i 를 고정하고 j 를 모든 가능한 경우에 대해 돌려준다고 생각하면 이해가 쉽습니다.

    위의 alignment model 로 계산된 e 는 결국 scalar, 즉 하나의 숫자입니다. 이렇게 하나의 i 라는 번역된 문장으로 출력되는 위치에 대해서, input sentence의 모든 단어에 대해(source sentence에 존재하는 모든 단어) alpha, 즉 attention score가 계산됩니다. attention score는 e 값들을 softmax 를 통해 normalize해준 값이므로 총합이 1이 되는 convex sum 입니다.

    이러한 alpha 값들이 하나의 단어마다(decoder단에서) input sentence words 개수만큼 생성되고, 이를 이전에 계산한 annotation과 weighted sum 형식으로 계산에 사용하여, 하나의 벡터를 만들어내게됩니다. 그것이 바로 context vector c 입니다!

    전체 순서는 다음과 같습니다...


    4. Experiment

     

    실험은 영어에서 프랑스어 번역을 진행했습니다. conventional 한 방법인 RNN encoder-decoder 구조의 모델과, 논문에서 propose한 RNNSearch, 즉 Attention을 활용한 방법을 비교합니다. 특히 quantitative result가 흥미로운데요, target sentence의 각 위치(단어)마다 계산된 attention score 를 시각화해보면 다음과 같다고 합니다. 영어와 프랑스어의 문장 내 단어 순서(주어, 동사, 등..)의 공통점을 감안하더라도 굉장히 신기하게 attention score가 잘 계산된 것을 볼 수 있습니다. attention 이라는 것은 결국, 하나의 출력(번역 단어)을 내뱉을 때, 이와 가장 관련있는 source sentence 내의 단어가 무엇일지 모두 확인 후, 각 기여도를 고려하여 예측을 진행하도록 도와주는 mechanism 이라고 보면 될 것 같습니다. 

    x-axis: input, y-axis: target

    초반에 언급한 fixed-length vector compression 의 문제도 해결할 수 있었다고 합니다. 특히 긴 문장을 처리할 때, RNN의 불가피한 long term dependency 문제 및 compression 문제를 고려해야 하는데, attention을 활용하면 길이와 관계없이 source sentence 의 모든 단어를 attend 하게 되므로, 이를 해결할 수 있었다는 것입니다. 이를 논문에서는 proposed model이 sentence length에 robust하게 됐다고 합니다. 

    'Natural Language Processing' 카테고리의 다른 글

    [Attention Is All You Need] 논문 리뷰  (0) 2021.02.25
Designed by Tistory.