Memory-enhanced Decoder for
Neural Machine Translation
Mingxuan Wang, Zhengdong Lu, Hang Li and Qun Liu
2/22 EMNLP読み会
紹介: B4 山岸駿秀
Introduction
• Attention-based NMT (RNNsearch) の成功 [Bahdanau+ 2015, ICLR]
• 入力文全体を保存し、部分的に用いて出力することは有用である
• Neural Turing Machine (NTM) [Graves+ 2014, arXivにのみ投稿]
• ベクトルを格納する数個のメモリと、重みベクトルによるヘッドを持つ
• 入力時にメモリの状態を読み込み、出力
• 出力と同時にメモリを書き換える
• どのメモリをどれだけ読む/書くのかをヘッドの重みを用いて決定
• ヘッドの重みを学習する
• これらを組み合わせ、外部メモリを持つRNNsearchを提案
• MEMDECと呼ぶ
• 生成の後半で使うような情報を保存できる可能性がある
1
※ デコーダ側のみ
2
NMT with improved attention
• 入力x (xの文長はTx) がある
• Encoderの単語jの隠れ層hjは、メ
モリMsとして格納
• (1)を導出したい
• (2): Decoderの時刻tでの隠れ層
• g()にはGRUを使用
• (3): Attentionベクトル
• Wa、Uaは重み行列
3
NMT with improved attention
• Groundhog (BahdanauらによるRNNsearchの実装) では、αt,jの計算
に前の出力yt-1が用いられていない
• 前の出力を用いることは有用なのではないだろうか
• 今回は、以下の計算式で計算した
• H() = tanh() (GRUの方が性能がよいが、簡略化のためtanhを使用)
• eはyt-1のembedding
4
5
Updating
• MBは今回新たに追加する外部メモリ
• Wはそれぞれ重み行列
• メモリも更新
6
Prediction
• Bahdanauらの提案した手法によって単語を予測する
• “ωy is the parameters associated with the word y.”
7
Reading Memory-state
• MBはn (メモリセルの数) * m (セルの次元数)の行列
• wR
tはn次元、rtはm次元のベクトル
• wR
tは以下のようにして更新
• 、
• wR
gはm次元のベクトル
• vはm次元のベクトル、W、Uはm*m次元の行列
8
Writing to Memory-states
• ERASEとADDの操作をすることでMBを更新
• 初めにERASE処理
• wW
t、μERS
tはm次元のベクトル、WERSはm*mの行列
• 次にADD処理
• μADD
tはm次元のベクトル、WADDはm*mの行列
• wRとwWに同じ重みを用いると性能が良かった 9
Setting
• 中英翻訳
• 学習データ: LDC corpus
• 1.25M 文対 (中国語の単語数: 27.9M、英語の単語数: 34.5M)
• 50単語以上の文はNMTでは不使用 (Mosesでは使用)
• NMTでは、語彙数を30,000語に制限
• テストデータ: NIST2002 〜 2006 (MT02 〜 06と記述)
• embedding: 512、hidden size: 512
• メモリセルの数n = 8、メモリセルの次元m = 1024
• Adadelta (ε = 10-6、ρ = 0.95)で最適化、batch size = 80
• 確率0.5でDropout
10
Pre-training
• パラメータ数がとても多いので、pre-trainingを行う
1. 外部メモリなしのRNNsearchを学習させる
2. 1を元に、EncoderとMEMDECのパラメータを学習させる
• 以下の、メモリ状態に関係あるパラメータは学習させない
3. 全てのパラメータを用いてfine-tuningを行う
11
Comparison system
• Moses (state-of-the-art SMT)
• Groundhog (Baseline)
• BahdanauらのAttention-based NMT (RNNsearch) の実装
• RNNsearch* (strong Baseline)
• 一つ前の出力をAttentionベクトルCtの計算に用いるシステムを追加
• dropoutも追加
• coverage (state-of-the-art NMT, Tu+, ACL2016)
• 入力の表現のカバレッジを用いる
• MEMDEC (提案手法)
12
Result 1
• 前の出力を用いてAttentionを計算するだけでもBLEUが上がる
• Mosesと比較して最大で5.28、Groundhogと比較して最大で4.78の改善
13
Result 2
• Pre-trainingするだけで+1.11
• しなくとも、RNNSearch*に比べて+1.04
• メモリセルの数にrobustである
14
Result 3
15
Conclusion
• RNN Decoderを外部メモリを用いて拡張した
• メモリの数は大きく影響しない
• 結果、中英翻訳のスコアを大きく改善できた
• アテンションの計算に前の出力を用いることも有用である
16

[EMNLP2016読み会] Memory-enhanced Decoder for Neural Machine Translation

  • 1.
    Memory-enhanced Decoder for NeuralMachine Translation Mingxuan Wang, Zhengdong Lu, Hang Li and Qun Liu 2/22 EMNLP読み会 紹介: B4 山岸駿秀
  • 2.
    Introduction • Attention-based NMT(RNNsearch) の成功 [Bahdanau+ 2015, ICLR] • 入力文全体を保存し、部分的に用いて出力することは有用である • Neural Turing Machine (NTM) [Graves+ 2014, arXivにのみ投稿] • ベクトルを格納する数個のメモリと、重みベクトルによるヘッドを持つ • 入力時にメモリの状態を読み込み、出力 • 出力と同時にメモリを書き換える • どのメモリをどれだけ読む/書くのかをヘッドの重みを用いて決定 • ヘッドの重みを学習する • これらを組み合わせ、外部メモリを持つRNNsearchを提案 • MEMDECと呼ぶ • 生成の後半で使うような情報を保存できる可能性がある 1
  • 3.
  • 4.
    NMT with improvedattention • 入力x (xの文長はTx) がある • Encoderの単語jの隠れ層hjは、メ モリMsとして格納 • (1)を導出したい • (2): Decoderの時刻tでの隠れ層 • g()にはGRUを使用 • (3): Attentionベクトル • Wa、Uaは重み行列 3
  • 5.
    NMT with improvedattention • Groundhog (BahdanauらによるRNNsearchの実装) では、αt,jの計算 に前の出力yt-1が用いられていない • 前の出力を用いることは有用なのではないだろうか • 今回は、以下の計算式で計算した • H() = tanh() (GRUの方が性能がよいが、簡略化のためtanhを使用) • eはyt-1のembedding 4
  • 6.
  • 7.
  • 8.
  • 9.
    Reading Memory-state • MBはn(メモリセルの数) * m (セルの次元数)の行列 • wR tはn次元、rtはm次元のベクトル • wR tは以下のようにして更新 • 、 • wR gはm次元のベクトル • vはm次元のベクトル、W、Uはm*m次元の行列 8
  • 10.
    Writing to Memory-states •ERASEとADDの操作をすることでMBを更新 • 初めにERASE処理 • wW t、μERS tはm次元のベクトル、WERSはm*mの行列 • 次にADD処理 • μADD tはm次元のベクトル、WADDはm*mの行列 • wRとwWに同じ重みを用いると性能が良かった 9
  • 11.
    Setting • 中英翻訳 • 学習データ:LDC corpus • 1.25M 文対 (中国語の単語数: 27.9M、英語の単語数: 34.5M) • 50単語以上の文はNMTでは不使用 (Mosesでは使用) • NMTでは、語彙数を30,000語に制限 • テストデータ: NIST2002 〜 2006 (MT02 〜 06と記述) • embedding: 512、hidden size: 512 • メモリセルの数n = 8、メモリセルの次元m = 1024 • Adadelta (ε = 10-6、ρ = 0.95)で最適化、batch size = 80 • 確率0.5でDropout 10
  • 12.
    Pre-training • パラメータ数がとても多いので、pre-trainingを行う 1. 外部メモリなしのRNNsearchを学習させる 2.1を元に、EncoderとMEMDECのパラメータを学習させる • 以下の、メモリ状態に関係あるパラメータは学習させない 3. 全てのパラメータを用いてfine-tuningを行う 11
  • 13.
    Comparison system • Moses(state-of-the-art SMT) • Groundhog (Baseline) • BahdanauらのAttention-based NMT (RNNsearch) の実装 • RNNsearch* (strong Baseline) • 一つ前の出力をAttentionベクトルCtの計算に用いるシステムを追加 • dropoutも追加 • coverage (state-of-the-art NMT, Tu+, ACL2016) • 入力の表現のカバレッジを用いる • MEMDEC (提案手法) 12
  • 14.
    Result 1 • 前の出力を用いてAttentionを計算するだけでもBLEUが上がる •Mosesと比較して最大で5.28、Groundhogと比較して最大で4.78の改善 13
  • 15.
    Result 2 • Pre-trainingするだけで+1.11 •しなくとも、RNNSearch*に比べて+1.04 • メモリセルの数にrobustである 14
  • 16.
  • 17.
    Conclusion • RNN Decoderを外部メモリを用いて拡張した •メモリの数は大きく影響しない • 結果、中英翻訳のスコアを大きく改善できた • アテンションの計算に前の出力を用いることも有用である 16

Editor's Notes

  • #8 Stの計算時には、それらをcombineする?