본 논문은 2014년 발표된 논문으로 당시 Seq2Seq Machine translation은 RNN,LSTM,GRU 기반의 encoder-decoder 구조가 주를 이루고 있었습니다.
encoder-decoder 구조는 \((x_1,...,x_T)\rightarrow v \rightarrow(y_1,...,y_T)\)의 순서로
encoder를 통하여 input sequence를 고정된 길이의 벡터로 바꾸고, 다시 decoder를 통하여 고정된 길이의 벡터를 translation 결과로 output하는 구조입니다. 무엇보다 장점은 가변 길이의 input과 output에 적용 가능하다는 것 입니다.
하지만 이러한 장점에도 고정된 길이의 벡터 \(v\)를 사용하는 부분은 모델의 bottleneck이 됩니다. 모델이 input sequence의 중요한 정보를 고정된 길이의 벡터로 표현하는 것은 쉬운 일이 아니기 때문입니다. 그리고 이러한 문제점은 longer sequence에 대해서는 더 극명하게 나타날 것입니다.
따라서 본 논문은 고정된 길이의 벡터로 input sequence를 변환하지 않으며,
모델 스스로 output과 관련하여 input sequence의 중요한 정보가 어디에 있는지 탐색하여 선택적으로 집중하게 하는 Attention Mechanism을 제안합니다.
1.Machine translation
Machine translation에 대하여 다시 간단히 설명 드리겠습니다.
Machine translation은 잘 아시다시피 가변적인 input sequence에 대하여 output sequence로 translation 하는 고수준의 nlp task 중 하나입니다.
확률적인 관점에서 다시한번 설명드리면,
input sentence \(x\)와 output sequence \(y\)에 대한 조건부 확률 \(p(y|x)\)를 구하는 과정이라고 생각하시면 됩니다.
그리고 이러한 조건부 확률 분포를 학습하기 위해 순환신경망과 같은 parameterized model이 사용됩니다.
특히 순환 신경망의 일종인 LSTM을 사용한 Seq2Seq machine translation model은 처음으로 기존의 statistical machine translation model의 성능을 뛰어 넘었습니다.
RNN,LSTM Seq2Seq 구조에 대한 자세한 설명은 아래 리뷰를 참고 부탁드립니다.
2.Attention Mechanism
Encoder
제안하는 모델은 Encoder에 일반적인 RNN이 아닌 bi-direction RNN을 사용합니다.
forward RNN \(\overrightarrow{f}\)는
\((x_1,...,x_{T_x})\) 를 input으로 하여 forward hidden state \((\overrightarrow{h_1},...,\overrightarrow{h_{T_x}})\)를,
backward RNN \(\overleftarrow{f}\)는
\((x_{T_x},...,x_1)\) 를 input으로 하여 backward hidden state \((\overleftarrow{h_1},...,\overleftarrow{h_{T_x}})\)를 각각 계산하여
각각의 단어 \(x_j\)에 대한 \(\overrightarrow{h_j} \),\( \overleftarrow{h_j} \)를 concatenate한 결과인 hidden state \(h=[{\overrightarrow{h_j}}^\top ;{\overleftarrow{{h_j}}^\top}]^\top\) 를 얻습니다.
RNN은 기본적으로 최근의 input을 강하게 반영하는 경향이 있기 때문에 각각의 \(h_j\)는 \(x_j\) 주변의 단어에 강한 영향을 받는 hidden state일 것 입니다.
Decoder
우선 Attention model의 Decoder는 각각 \(x_i\)에 대한 output \(y_i\)를 \(y_{i-1},s_i,c_i\)를 사용하여 계산합니다.
각각 \(y_{i-1}\)는 RNN의 i-1번째 Output이며, \(s_i\)는 i번째 RNN의 hidden state로 아래의 식으로 계산됩니다.
Attention mechanism은 처음에 설명드렸던 대로 고정된 길이의 벡터를 사용하여 대신, Decoder가 각각의 예측마다 input sequence의 중요한 부분을 탐색하여 선택, 반영하는데 이러한 역할을 하는 것이 바로 alignment model 입니다.
\(c_i\)가 바로 alignment model을 사용하여 계산되는 context vector로 계산 과정은 다음과 같습니다.
우선 decoder의 i-1 번째 hidden state \(s_{i-1}\)와 encoder의 j번째 단어의 concatenated hidden state \(h_j\) 간의 energy(유사도) \(e_{ij}\)를 alignment model \(a\)를 통해 모든 단어에 대해 계산합니다.
따라서 \(e_{ij}\)는 다음 state \(s_i\)와 output \(y_i\)를 계산하기 위한 \(s_{i-1}\)관점에서의 \(h_j\)의 중요도를 반영하게 됩니다.
본 논문에서는 \(a\)로 feedforward neural network를 사용하여 다른 파라미터들과 함께 학습되도록 하였습니다.
그 후, softmax 함수를 통해 각각의 energy에 대한 probability(score) \({\alpha}_{ij}\)를 계산합니다.
최종적으로 다음 단어를 decoding 하기위한 context vector \(c_i\)는 각각 단어 \(h_j\)들의 \({\alpha}_{ij}\)를 사용한 가중합으로 계산됩니다.
따라서 context vector \(c_{i}\)는 고정된 길이 벡터로의 변환 없이 encoder의 output sequence \((h_1,...,h_{T_x})\) 각각에 영향을 받을 수 있게 됩니다.
objective function
학습은 training set의 conditional probability function이 최대가 되도록 하는 것 입니다.
inference
conditional probability model이 학습된 후에 inference 단계에서는 beam search가 사용되었습니다.
3.Results
실험은 Machine translation에서 주로 사용되는 English to French translation dataset이 사용되었습니다.
baseline은 Attention이 적용되지 않은 일반적인 RNN Encoder-Decoder 구조(RNNencdec)가 사용되었습니다.
제안한 방법은 RNNsearch 입니다.
result 1.
다음 표는 BLEU score를 통해 비교한 결과 입니다.
BLEU score에 대한 설명은 아래의 글을 참고 부탁드립니다.
실험 결과 baseline은 물론 기존의 Conventional한 phrase based의 Moses 보다도 제안한 방법이 좋은 성능을 보였음을 알 수 있습니다.
result 2.
두번 째 실험은 문장 길이에 대한 BLEU score 비교입니다.
제안된 방법은 고정된 길이의 벡터로 표현하는 과정이 없기 때문에 input length에 대한 영향에서 상대적으로 자유롭습니다.
기존의 방법에 비해서 길이 60인 문장까지 성능저하가 거의 없음을 확인할 수 있습니다.
result 3.
마지막 실험은 alignment 결과 입니다.
제안한 방법은 하나의 단어에만 Attention을 적용하는 hard alignment이 아닌 soft alignment 방법에 따라 \(\alpha_{ij}\)를 계산합니다.
다음 표는 \(\alpha_{ij}\)를 시각화한 결과입니다.
대부분 diagnal 성분에 영향을 많이 받는 단조로운 경향이 있지만, (d)의 경우와 같이 언어 특징에 따라 다른 어순마저 Attention 모델을 통해 해결가능한 모습을 볼 수 있습니다.
마무리
본 논문은 Encoder-Decoder machine translation 구조에서 input sequence의 특정 부분에 집중 할수 있는 Attention mechanism을 제안합니다. 그 결과 고정된 길이의 벡터로 변환하지 않는 구조로 long term dependency을 해결할 수 있었습니다.
현재 이 방법은 Luong Attention과 함께 대표적인 Attention mechanism으로 꼽힙니다. 비록 Luong attention이 주로 사용되지만, 좋은 해결방법으로 잘 쓰여진 논문이라는게 느껴졌습니다. \(a_{ij}\)의 시각화를 통해 직접적으로 효과를 확인할 수 있었던 점이 특히 좋게 느껴졌습니다.
다음 글은 Luong Attention에 대해 써보도록 하겠습니다.