Effective Approaches to Attention-based Neural Machine Translation (2015)

December 26, 2021

注意機構をつかった翻訳用のニューラルネットワークを2つ例示し、翻訳における効果的な注意機構の使い方を提案した。 どちらもスタッキングしたLSTMを使うが、注意の計算で参照するLSTMの隠れ状態が違う。 ひとつは、1単語を出力するときに、すべての単語のLSTMの隠れ状態から注意を算出するグローバルなアプローチで、もうひとつは一部の単語の状態だけから注意を算出するローカルなアプローチである。 英語とドイツ語の双方への翻訳タスクに適用したところ、ローカルなアプローチで注意機構をつかわない手法と比べてBLEUスコアを5.0ポイントできた。

以下に図示するグローバルとローカルどちらのアプローチも、時刻\(t\)におけるLSTMのトップ層の隠れ状態\(\boldsymbol{h}_t\)から、次に出力すべき単語の手掛かりになる原文の文脈\(\boldsymbol{c}_t\)を計算する。 LSTMの隠れ状態\(\boldsymbol{h}_t\)と文脈\(\boldsymbol{c}_t\)を結合したベクトルから図の注意レイヤーの隠れ状態\(\tilde{\boldsymbol{h}}_t\)を計算し、その値をソフトマックス関数を適用し次に出力すべき単語をもとめる。 $$ \begin{align} \tilde{\boldsymbol{h}}_t &= \tanh(\boldsymbol{W}_c[\boldsymbol{c}_t;\boldsymbol{h}_t]) \\ p(y_t\mid y_{<t}, x) &= \text{softmax}(\boldsymbol{W}_\boldsymbol{s}\tilde{\boldsymbol{h}}_t) \end{align} $$ global local

グローバルなアプローチでは、原文の各単語の注意\(\boldsymbol{a}_t\)の重みつき平均を、文脈\(\boldsymbol{c}_t\)としてあつかう。 原文のある状態\(s\)の注意\(\boldsymbol{a}_t(s)\)は、現在の出力側の隠れ状態\(\boldsymbol{h}_t\)と隠れ状態\(\bar{\boldsymbol{h}}_s\)から次のように算出できる。 $$ \begin{align} \boldsymbol{a}_t(s) &=\text{align}(\boldsymbol{h}_t, \bar{\boldsymbol{h}}_s)\\ &= \frac{\exp(\text{score}(\boldsymbol{h}_t, \bar{\boldsymbol{h}}_s ))}{\sum_{s'}\exp(\text{score} (\boldsymbol{h}_t, \bar{\boldsymbol{h}}_{s'}) ) } \end{align} $$ \(\text{score}\)の定義は、タスクにあわせて以下の3つからえらべる。 $$ \text{score}(\boldsymbol{h}_t, \bar{\boldsymbol{h}}_s) = \begin{cases} \boldsymbol{h}_t^{\top}\bar{\boldsymbol{h}}_s&\text{dot}\\ \boldsymbol{h}_t^{\top}\boldsymbol{W}_a\bar{\boldsymbol{h}}_s&\text{general}\\ \boldsymbol{v}_a^{\top}\tanh(\boldsymbol{W}_a[\boldsymbol{h}_t;\bar{\boldsymbol{h}}_s])&\text{concat}\\ \end{cases} $$

ローカルなアプローチの場合、注意の計算で原文のどの状態を参照するかを決めなければならない。 \(S\)を原文の文の長さとして\(p_t\in[0, S]\)をもとめ、\([p_t-D, p_t+D]\)の範囲を次に出力すべき単語に関係する原文側の位置と推定する。 \(\boldsymbol{W}_p\)と\(\boldsymbol{v}_p\)をパラメタとして\(p_t\)を次の式で推定する。 $$ p_t=S\cdot \text{sigmoid}(\boldsymbol{v}_p^\top \tanh (\boldsymbol{W}_p\boldsymbol{h}_t)) $$

注意は、\(\sigma=\frac{D}{2}\)のガウス関数で算出する。 $$ \boldsymbol{a}_t(s)=\text{align}(\boldsymbol{h}_t, \bar{\boldsymbol{h}}_s)\exp\left(\frac{(s-p_t)^2}{2\sigma^2}\right) $$

論文をこちらからダウンロードできます。