ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Attention #1 Attention의 첫 등장
    REVIEW 2020. 2. 27. 01:50
    반응형

    최근 기술 면접을 여러 번 했다. 최근 프로젝트 중 Seq2seq 모델을 사용하였기 때문에 Attention관련 질문을 많이 받았었고, 컨셉적인 것이 아니라 디테일 한 내용을 이해하기 위해 논문 리딩을 시작하였다. 그 내용을 글로 정리해 본다. 먼저, 처음으로 Attention이 제안된 논문을 리뷰한다.  

     


    NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE

    Dzmitry Bahdanau, KyungHyun Cho, Yoshua Bengio

    (궁금한분이 계실진 모르겠지만, 직접 정리한 논문 링크

     

    NLP를 넘어서서 너무나도 많은 곳에서 사용되는 Attention Mechanism을 처음부터 훑어보고자 시작하는 글이다. 해당 논문의 저자에 현재 뉴욕대와 페이스북에서 연구하시는 조경현 교수님이 있으시다. 혹시, 교수님의 강의를 듣고 싶다면 edwith의 강의를 들어보는 것을 추천한다. [딥러닝을 통한 자연어처리] edwith

     

    논문 요약

    1) 기존의 기계 번역을 위한 Encoder-Decoder 모델은 소스 문장을 고정 길이의 벡터(fixed-length vector)로 인코딩한다.

    2) 이러한 Encoder의 결과가 성능 향상에 문제가 되기 때문에, 입력 문장과 타겟의 단어 간의 관련성을 알 수 있는 방식을 제안한다.

     

    Introduction

    최근 기계 번역에서는 NMT(Neural machine Translation)이 각광받는다. 이 방식은 Encoder를 통해서 입력 문장(Source Sentence)을 고정 길이의 벡터로 인코딩을 한다. Decoder는 이 고정 길이 벡터를 입력으로 받아서 번역하게 되는데, 이 방식은 고정 길이의 벡터가 입력 문장의 모든 정보를 포함하게 된다. 이때, 문장이 길어지는 경우 좋은 성능을 보이기에 어렵다. 

    이러한 문제를 해결하기 위해 단어 번역시, 입력 문장의 위치와의 관련성을 포함하는 정보를 제공하고자 한다. 즉, 타겟 워드를 예측할 때 이전 타겟워드 + 입력 문장에서의 위치를 가지고 진행하는 것이다. align and translate를 함께 학습한다고 보면 된다.

     

    Background

    확률 관점에서 번역 작업을 보면, 입력 문장(Source Sentence) x에 대해서 가장 높은 확률의 y를 찾는 것이다. 

    $$ \arg \max_y  p( y | x) - (1)$$ 

    이를 학습하기 위해, 두 개의 문장 셋을 동시에 학습한다. 일반적으로 영어-프랑스어 데이터 셋을 활용한다. Encoder-Decoder 구조로 되어있는 방식을 활용하고 있고, Encoder에서는 입력 문장을 받아서 RNN을 통해서 벡터로 반환하고, Decoder는 이를 입력으로 받아서 가장 높은 확률의 워드를 반환한다. 

     

    RNN Encoder-Decoder

    이 부분은 기존의 seq2seq과 관련된 배경지식을 요약해서 알려주는 부분으로, 자세한 내용은 이 논문에서 자세히 볼 수 있다. 해당 논문은 seq2seq를 소개하는 논문이다.

    1) Encoder

    Encoder 부분에서 설명하고 있는 수식은 아래의 3개인데, 각각 x, \(h_t\), c에 대한 표현이다. 
    x는 T길이의 문장이므로 1개가 아닌 시퀀스 형태의 데이터이고, \(h_t\)는 t시점의 RNN 셀의 아웃풋으로 보면 된다. \(c\)는 인코더의 최종 아웃풋이다. 여기서 \(f\)와 \(q\)는 nonlinear한 함수를 사용한다. 

    $$ x = (x_1, \cdots, x_{T_x}), h_t = f( x_t, h_{t-1}), c = q({h_1, \cdots , h_{T_x}}) $$

     

    2) Decoder

    Decoder는 다음 단어를 예측하도록 학습한다. 학습 시 주어진 것은 Encoder의 아웃풋인 context vector c와 이미 현재 시점(t)보다 이전의 예측한 단어들 이다.( \( \{ y_1, \cdots , y_{t'-1} \}\)).  아래의 수식이 Decoder의 수식을 나타내는 것이다. 2번의 수식을 보면, 결과적으로 다음 단어를 예측하는 확률은 nonlinear 함수 g에 전 단계의 단어와 RNN 셀의 아웃풋 s, 그리고 context vector를 입력하는 것이다.

    $$ p(y) = \prod_{T}^{t=1} p(y_t | \{y_1, \cdots , y_{t-1}, c\}) - (1) $$

    $$ p(y_t | \{y_1, \cdots , y_{t-1}, c\}) = g(y_{t-1}, s_t, c) - (2) $$

     

    Learning to align and translate

    실제로 해당 논문에서 제안하는 부분은 이 부분인데, 해당 부분의 관련 연구는 8page의 6.1 Learning to align에서 다루고 있다. 
    새롭게 제안하는 모델의 구조는 Encoder는 bidirectional RNN, Decoder는 입력 문장으로 부터 번역하는 모델이라고 이야기한다.

    왼쪽의 그림이 해당 구조를 보여주는데, 아랫부분의 X의 입력을 받는 부분이 h가 동일한 시퀀스 시점에서 양쪽으로 학습하는 bidirectional 모양을 가지고 있고, 그것으로 부터 받은 아웃풋 \(a_{t,T}\)을 weigthed sum을 하여 \(y_t\)에게 입력하는 모습을 보여준다. 여기서 대문자 T는 x의 길이이고, 소문자 t는 현재 예측하는 y의 시점이라고 보면된다. 즉, 기존 모델과 차이는 Context vector가 다르다고 보면된다. 

    논문에서 설명하는 수식 중 몇가지만 설명하자면, 위의 1번 수식으로 부터 새로운 확률 모델을 정의한다. 좌측 c가 X가 되고, 우측 c는 \(c_i\)가 되었다. 이것의 의미는 해당 확률이 별개의 Context vector로 부터 결정된다는 것이다. 

    $$ p(y_t | \{y_1, \cdots , y_{t-1}, X\}) = g(y_{t-1}, s_t, c_i) - (3) $$

    그러면 별개의 Contect vector(\(c_i\))가 어떻게 계산되는 지를 보자. \(c_i\)는 예측할 y의 시점 i에 대한 context vector이고, 전체 x로 부터 weighted sum으로 구하게 된다. 아래의 두개의 식이 context vector를 구성하는 \(\alpha_{ij}\)에 대한 식이고, \(\alpha_{ij}\)는 \(\e_{ij}\)에 대한 softmax 값이다. 즉, 전체 \(e_{ik}\)에 대한, \(e_{ij)\)의 확률인 것이다. 여기서 \(e_{ij)\)는 함수 a()를 사용하는데, alignment model로써 포지션(시점) j에 대한, i와의 연관성 스코어로 보면된다. 해당 값은 학습시 함께 학습하게 된다.

    $$ \alpha_{ij} = \frac{exp(e_{ij})}{\sum_{k=1}^{T_x}exp(e_{ik})}, e_{ij} =  a(s_{i-1}, h_j)$$

     

    Experiment

    실험은 기존의 영어-프랑스어 말뭉치 데이터 셋인, Europarl을 사용한다. 평가 지표로는  BLEU score를 활용하는데, 해당 내용은 다음 블로그에 자세히 설명되어 있다. 간단히 설명하자면, 정답 문장과 예측된 문장의 일치 정도를 평가하는 것이다. n-gram을 통해 순서쌍의 정답률을 구하고, 문장길이와 동일 단어 반복에 대한 보정부분이 존재한다. 

     비교 모델로는 기존의 seq2seq 모델인 encdec 모델과 해당 논문에서 제안하는 search 방식의 모델을 문장 데이터의 단어 길이(30개, 50개)에 따라서 모델을 구축하여 평가 하였다. RNN의 히든 유닛은 1000이고, adadelta optimizer를 활용한다. seach라고 명명한 이유는 위치정보를 찾는 방법이라서 그런것 같다. 결과적으로 당연하게도 해당 논문에서 제안하는 방식이 좋은 성능을 보인다.. 특히, 긴 문장에 대해서 더더욱 그렇다.

     

     

     

     

    conclusion

    We extended the basic encoder-decoder by letting a model (soft-)search for a set of input words, or their annotations computed by an encoder, when generating each target word.

    한 문장으로 설명된 것 같은 부분이 있어서 결론 부분에서 문장을 발췌했다. 그리고 다음 단계로 알려지지 않은 단어나 희귀한 단어를 잘 해결하는 방법에 대한 연구가 필요하다고 말하고 있다. 이미 몇년이 지난 논문이기에 이 condition 방식이 기계 번역이외에도 다양한 분야에서 많은 해결점으로 사용되고 있다는 것을 알고 있다. 그래서 다음 논문은 condition에 대한 장점과 필요성을 강조하는 논문을 리뷰해볼 예정이다.

    반응형

    댓글

Designed by Tistory.