cs

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 어텐션 매커니즘(Attention Mechanism)
    개인 스터디/NLP 2020. 7. 20. 15:33

    "운동장에 공이 있다"는 말을 들을 때, 모든 말이 똑같이 중요해 보이지는 않을 것입니다.

    "운동장", "공이"는 다른 단어들보다 더 중요해 보입니다.

    실제로 많은 문장에서 단어들이 갖는 중요도는 서로 많이 다릅니다.

    더욱이 번역 과제에서, 번역된 문장의 각 부분은 번역 전 문장의 서로 다른 단어들에 의존합니다.

    그런데 Seq2Seq 모델에서는 이런 특성을 반영하지 않고, 모든 단어를 똑같이 취급해 문맥 벡터(context vector)를 생성합니다.

     

    어탠션 매커니즘에서는 디코더 네트워크가 각 순간에 전체 입력 문장을 확인하도록 하여, 

    각 순간마다 입력 단어들의 중요도를 산정합니다.

     

    1. Bahdanau et al. NMT model

    Seq2Seq 모델은 입력 시퀀스를 인코딩하는 인코더와, 문맥 벡터를 통해 문장을 번역하는 디코더로 이루어져 있습니다.

    $x_1, \ldots, x_n$을 입력 시퀀스, $y_1, \ldots, y_n$을 원하는 출력 시퀀스라고 합시다.

     

    Encoder:

    $(h_1, \ldots, h_n)$을 입력 시퀀스를 표현하는 hidden vector라고 합시다.

    예컨대 bi-LSTM의 결과값으로 주어진 문맥 벡터라고 할 수 있습니다..

     

    Decoder:

    계산하고자 하는 값은 디코의 $i$번째 hidden state인 $s_i$ 입니다.

    이 값은 다음과 같이 재귀적으로 계산됩니다.

     

    $s_i = f(s_{i-1}, y_{i-1}, c_i)$

     

    $s_{i-1}$: $i-1$번째 hidden state

    $y_{i-1}$: $i-1$번째로 생성된 출력 단어

    $c_i$: decoder의 time step $i$와 연관된 문맥 벡터

     

    문맥 벡터 $c_i$는 $i$번째 디코딩 time step과 관련된 정보를 담고 있습니다.

    Seq2Seq에서는 단 하나의 문맥 벡터를 모든 time step에서 사용했던 것과 대조됩니다.

     

    각 $c_i$를 얻는 방법에 대해 살펴봅시다.

    각 hidden vector $h_j$에 대해서 다음 점수를 계산합니다.

    다음 식은 alignment model이라고 불리며, $j$번째 입력값이 $i$번째 출력값과 어느 정도 관계가 있는지를 바로 전 시점에서의 hidden state 값 ($s_{i-1}$)을 통해 계산합니다.

     

    $e_{i, j} = a(s_{i-1}, h_j)$

     

    $a$: 실수상의 함수, ex)  레이어 하나를 가지는 fully connected neural network

     

    모든 $h_j$에 대해 계산을 끝낸 후 scalar 값인 $e_{i, 1}, \ldots, e_{i, n}$을 얻습니다.

    softmax 레이어를 통해 이 값들을 정규화해주어, $\alpha_i = (\alpha_{i, 1}, \ldots, \alpha_{i, n})$를 계산합니다.

    이 때 각 $\alpha_i$는 어텐션 벡터(attention vector)라고 불립니다.

     

    $\alpha_{i, j} = \frac{\exp(e_{i, j})}{\sum_{k=1}^n \exp(e_{i, k})}$

     

    마지막으로 $\alpha_i$를 통해 hidden vector의 가중합을 구합니다.

     

    $c_i = \sum_{j=1}^n \alpha_{i, j}h_j$

     

    이런 절차를 거침으로써, 매 time step마다 연관된 문맥 정보에 가중치를 주어 출력 단어 생성에 반영할 수 있습니다.

    이 과정을 그림으로 나타내면 그림1과 같습니다.

     

    그림1. bahdanau et al.의 attention mechanism

     

    2. Connection with translation alignment

    어텐션 기반의 모델은 각 출력값을 계산할 때 입력값의 각 부분들에 가중치를 주는 방식으로 학습합니다.

    이를 번역의 관점으로 보면, 어텐션을 어순을 정렬하는 과정이라고 생각할 수 있습니다.

    Bahdanau는 $i$번째 decoding 스텝의 $\alpha_{ij}$는 입력 문장들 중 번역된 문장의 $i$번째 단어에 대응하는 단어를 찾아낸다고 말합니다.

    이에 기반해서, 어텐션 스코어를 사용해 alignment table을 만들 수 있습니다.

    alignment table은 학습된 기계 번역 모델을 사용해 입력 문장의 어떤 단어가 출력 문장의 어떤 단어에 대응하는지를 보여줍니다.

    그림2. alignment table

     

     

    reference:

    [1] CS224N: https://web.stanford.edu/class/cs224n/readings/cs224n-2019-notes06-NMT_seq2seq_attention.pdf

    [2] Neural Machine Translation By Jointly Learning to Align and Translate, D. Bahdanau et al.

    댓글

:D