Curaai00's Deep Learning Blog

GRU: Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation

딥러닝/자연어처리
[GRU]Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation

[GRU]Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation

기존의 Statistical Machine Translation은 통계와 확률 기반으로 문장을 번역했습니다. 하지만 Deep Learning을 도입하였더니 더 좋은 성능을 보이기 시작했습니다. RNN을 이용한 새로운 방식의 Translation을 선보이고 더욱더 간편한 RNN hidden cell 구조를 선보였습니다.

RNN Encoder-Decoder

새로운 Encoder-Decoder 방식의 RNN은 variable-length input sequence를 encode하여 고정된 길이의 vector로 표현하여 다시 variable-length output sequence로 decode합니다. 이때 vector c는 각각의 단어 혹은 문장의 의미를 가지고 있다고 할수 있겠죠. Decoder는 vector c에서 번역할 언어로 decoding 하며 재표현한다고 볼수 있습니다.


Encoder는 x_1 부터 x_t까지 읽으며 RNN cell을 업데이트하고 RNN의 hidden state는 summary c가 됩니다.

Decoder는 input sequence의 context를 담고 있는 c와 이전의 hidden state, y를 이용하여 hidden state를 다음과 같이 업데이트 합니다.

또한 Decoder는 이전의 y값들과 context c, 현재 hidden state를 이용하여 t번째 y 값의 확률을 예측(softmax)합니다.

RNN Encoder-Decoder는 합쳐져 conditional log-likelihood를 최대화하는 Network로 표현될수 있습니다. n번째 x에 대해 n번째 y를 최대로 하는 확률을 maximize 하는 network Θ를 찾는 것입니다.

이 RNN 아키텍쳐를 두가지 방법으로 사용할 수 있습니다.

  • 하나는 input sequence로 target sequence를 생산하는 것입니다.
  • 또 하나는 input과 output sequence를 줬을 때 모델이 한쌍에 대한 score를 얻을 수 있습니다. (4)의 x에 대한 y의 확률을 이용해서 말입니다.

Gated Recurrent Unit



GRU는 reset gate와 update gate가 있습니다. sigma 기호는 sigmoid function을 나타내고, phi 기호는 tanh function을 나타냅니다. 그리고 W와 U는 weight matrices입니다. x는 input, h는 hidden state를 나타냅니다.

  • reset gate는 수식 (5)로 계산되며, 이전의 hidden state가 무시될지 결정합니다.

  • update gate는 수식 (6)으로 계산되며, hidden state가 h^hat으로 update될지 결정합니다.

  • reset gate가 0에 가까워질수록 hidden state가 이전 hidden state를 무시하도록 하며, 현재의 input만을 reset하도록 합니다. update gate는 이전의 hidden state의 정보가 현재의 hidden state까지 전달되도록 조종합니다.

Statistical Machine Translation

우리의 목적은 original source e를 줬을 떄 번역 f를 찾는 것입니다. 식으로 표현한다면 다음과 같겠죠. 즉 source로 번역(target)을 찾을 확률과 source가 target으로 완전히 번역되는 확률을 비례하려합니다.

이를 log 선형 모델로 나타낼수 있습니다. f_n과 w_n은 n번째 feature와 weight입니다.

Z(e)는 w에 의존하지 않는 normalization 상수입니다. w는 BLEU score를 최적화하기 위해 종종 최적화됩니다. log p(e | f)는 source와 target에 매칭되는 구(phrase)를 맞추는 확률들로 분해될 수 있습니다. 이 확률이 추가적인 feature로 표현된다면 (9)와 같습니다.

RNN Encoder-Decoder를 학습할때에는 corpus(말뭉치?)에서 각 구(phrase) pair가 얼마나 자주 나오는지에 대해서는 무시합니다.

  1. large phrase frequency table(큰 구 빈도 테이블)에서 일반화된 빈도수의 phrase pair를 선택하여 연산량을 막기 위함입니다.
  2. RNN Encoder-Decoder가 phrase pair의 translation probability가 이미 phrase fair의 빈도수를 반영하고 있기 때문에 쉽게 학습되지 않기 때문입니다.