Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

G社のNMT論文を読んでみた

8,317 views

Published on

Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation
http://arxiv.org/abs/1609.08144
を読んでみたので、簡単にまとめました。間違い等は是非ご指摘ください。

Published in: Science

G社のNMT論文を読んでみた

  1. 1. Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation 中澤 敏明 2016年 黒橋・河原研 夏の勉強会 http://arxiv.org/abs/1609.08144
  2. 2. NMTの問題点 1. トレーニングも翻訳も(PBSMTに比べて)遅い 2. 低頻度語の翻訳が弱い – 既存手法はattentionに頼っているが、attentionは 信頼性が低い • Addressing the Rare Word Problem in Neural Machine Translation • On Using Very Large Target Vocabulary for Neural Machine Translation – 翻字(transliteration)するべきな時もある 3. 必ずしも入力文の全てを翻訳してくれない 4. いろいろ手法が提案されてるけど、scaleする?
  3. 3. Google’s Neural Machine Translation: GNMT • ベースはattentionモデル • 8層LSTM RNN with residual connection • 計算の並列化のために、attentionはdecoderの1 層目からencoderの最終層に対して行う • 重みの量子化(quantization)による高速inference • Tensor Processing Unit (TPU) • 低頻度語をsub-word units (wordpieces)で扱う • beam search decodingでlength normalizationと coverage penaltyを使う quality of the system gets closer to that of average human translators
  4. 4. 8層LSTM RNN • encoderもdecoderも深い方がいい – subtle irregularitiesを捉えることができる • しかし単純に積むだけだと、トレーニングが遅 いしうまくトレーニングできない – 勾配爆発/消失問題が起きるため – 4層ぐらいが良い、6層は厳しい、8層は無理 • 画像認識で使われたresidual connectionを使 う – 次の層の入力に、一つ前の層の入力を足す
  5. 5. 並列化 • データ並列化: Downpour SGD – Large Scale Distributed Deep Networks (NIPS2012) – パラメータを共有している複数(実験では12)のモデル を同時にトレーニングし、非同期にパラメータを更新 • モデル並列化: GPUをたくさん使う – 各LSTMを別々のGPUに配置 – 最初の層以外はuni-directionalなので、前の層を待 たなくて良い – softmax層も語彙ごとに別々のGPUに配置
  6. 6. 低頻度語 • 既存研究 – 入力の低頻度語を(attention等で)出力にコピー – 単語より小さい単位(sub-word unit)を使う • Google音声認識で使われたwordpiece model (WPM)を使う – 日本語/韓国語のsegmentation問題のためらしい
  7. 7. Wordpiece Model: WPM • “_”は単語の始まりを表す – これを手掛かりに元の文を復元可能 • トレーニングコーパスとwordpiece数(8kから 32kが良いらしい)が与えられた時、言語モデ ルの尤度が最小になるようwordpieceを選択 • 使う文字種の数も制限(西洋語で500ぐらい、 アジア言語はもっと多い) • コピー機能を確保するため、両言語で共通の wordpieceも用意し、分割が同じになるように Jet makers feud over seat width with … _J et _makers _fe ud _over _seat _width _with … word: wordpiece:
  8. 8. トレーニング方法 • 普通の最尤法の欠点=訓練とテストの乖離 – BLEUなどのタスクの目標に対して最適化してない – BLEU値と出力の確率に相関がない – デコーディング中のエラーに対してロバストでな い • 最尤法で訓練してから強化学習 – 実際には最尤方と強化学習の目的関数の重み 付き線形結合に対して最適化 BLEUの代わりに GLEU: 正解と出力の 1-4 gramのprecision かrecallの小さい方
  9. 9. 量子化による高速化 • 細かいところはよくわからないのでパス! • ポイントっぽいところ – 訓練時にLSTMのメモリセルと隠れ層の値を[-δ, δ]に (δはアニーリング)クリッピングし、後で16bitの整数値 で表現 • どうやって変換しているのか・・・? – softmaxへの入力を[-γ, γ]に(γは25で固定)クリッピン グ • なぜこれが高速化につながるのか・・・? – LSTM内の重みを丸めて8bit整数で表現 • 浮動小数点数演算を固定小数点数演算に置き 換えることで高速化
  10. 10. beam search decoding • 通常のbeam search decodingは最も確率の高 い出力を探す – 出力の長さは候補ごとに異なり、長いものほど確 率が低くなるため、短い出力が選ばれやすい • length normalization – 出力候補のlog-probabilityを以下の値で割る lp(Y) = (5+ |Y |)a (5+1)a
  11. 11. coverage penalty • 入力文の全てをカバーするようにするため – pi,jは出力のj番目の、入力のi番目へのattention 確率 – attentionされなかった入力単語についてはΣpi,jが 1より小さくなり、ペナルティーがかかる • 最終的に出力候補のスコアは以下の式 – 実験から、強化学習を行ったモデルでは効果は 非常に小さくなる cp(X;Y) = b * log(min( pi, j,1.0)) j=1 |Y| å i=1 |X| å s(Y, X)= log(P(Y | X))/lp(Y)+cp(X;Y)
  12. 12. 枝刈り (pruning) • Beam幅は8-12程度が良いが、4とか2でもそ こまで悪化しない • 単語を出力する際、最も良い単語よりも一定 以上低いスコアの単語は考慮しない • 最もスコアの高い出力候補のスコアより、一 定以上低いスコアの出力候補は枝刈り • 出力の長さは入力の2倍まで
  13. 13. 実験 • データ – WMT En->Fr (36M), En->De (5M) – Google En<->Fr, En<->Es, En<->Zh (WMTの100倍 から1000倍のデータサイズらしい) • 評価 – BLEU, Google内部の7段階人手評価 • トレーニング – gradient clipping = 5, Adam (60k steps, lr=0.0002) -> SGD (lr=0.5), 128 mini-batch, lr annealing, dropout
  14. 14. 実験 • 1システムのトレーニング時間 – 最尤訓練: En->Fr (36M)で、96枚のNVIDIA K80 GPU(24GBメモリ)を使って6日間 • K80一枚約80万円ぐらいなので、これだけで8000万円 • 8アンサンブルしてるので全部で6億4000万? – 強化学習: 400k steps行うのに3日間 • word-base modelのvocabulary size – source: 212k, target: 80k – それ以外の語は <first_char>UNK<last_char>に
  15. 15. 結果 • WPM-32Kが最もよい • 8アンサンブルでWMTデータセットでSOTA • 強化学習の効果はBLEUではあったが、人手 評価ではなかった • Googleのデータでは人手評価で人間の翻訳 と変わらないぐらいの精度が出たが、評価の 信頼性には疑問が残る
  16. 16. 結論 • GPUを湯水のように使って、量子化してTPUも 使って、ネットワークを工夫すれば、精度を保 持したまま速度的にPBSMTをNMTに置き換え るのも可能? • 真似できるもんなら真似してみろ

×