g社のnmt論文を読んでみた

16
Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation 中中 中中 2016 中 中中 中中中 中中中中 http://arxiv.org/abs/ 1609.08144

Upload: toshiaki-nakazawa

Post on 07-Jan-2017

5.050 views

Category:

Science


2 download

TRANSCRIPT

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

Google's Neural Machine Translation System: Bridging the

Gap between Human and Machine Translation

中澤 敏明2016 年 黒橋・河原研 夏の勉強会

http://arxiv.org/abs/1609.08144

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

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 する?

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

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

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

8 層 LSTM RNN

• encoder も decoder も深い方がいい– subtle irregularities を捉えることができる

• しかし単純に積むだけだと、トレーニングが遅いしうまくトレーニングできない– 勾配爆発 / 消失問題が起きるため– 4 層ぐらいが良い、 6 層は厳しい、 8 層は無理

• 画像認識で使われた residual connection を使う– 次の層の入力に、一つ前の層の入力を足す

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

並列化• データ並列化 : Downpour SGD– Large Scale Distributed Deep Networks (NIPS2012)– パラメータを共有している複数 ( 実験では 12) のモデルを同時にトレーニングし、非同期にパラメータを更新

• モデル並列化 : GPU をたくさん使う– 各 LSTM を別々の GPU に配置– 最初の層以外は uni-directional なので、前の層を待たなくて良い– softmax 層も語彙ごとに別々の GPU に配置

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

低頻度語• 既存研究– 入力の低頻度語を (attention 等で ) 出力にコピー– 単語より小さい単位 (sub-word unit) を使う

• Google 音声認識で使われた wordpiece model (WPM) を使う– 日本語 / 韓国語の segmentation 問題のためらしい

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

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:

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

トレーニング方法• 普通の最尤法の欠点=訓練とテストの乖離– BLEU などのタスクの目標に対して最適化してない– BLEU 値と出力の確率に相関がない– デコーディング中のエラーに対してロバストでない

• 最尤法で訓練してから強化学習– 実際には最尤方と強化学習の目的関数の重み付き線形結合に対して最適化

BLEU の代わりにGLEU: 正解と出力の1-4 gram の precisionか recall の小さい方

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

量子化による高速化• 細かいところはよくわからないのでパス!• ポイントっぽいところ– 訓練時に LSTM のメモリセルと隠れ層の値を [-δ, δ]に (δ はアニーリング ) クリッピングし、後で 16bitの整数値で表現

• どうやって変換しているのか・・・?– softmaxへの入力を [-γ, γ] に (γ は 25 で固定 ) クリッピング

• なぜこれが高速化につながるのか・・・?– LSTM内の重みを丸めて 8bit整数で表現

• 浮動小数点数演算を固定小数点数演算に置き換えることで高速化

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

beam search decoding

• 通常の beam search decoding は最も確率の高い出力を探す– 出力の長さは候補ごとに異なり、長いものほど確率が低くなるため、短い出力が選ばれやすい

• length normalization– 出力候補の log-probability を以下の値で割る

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

coverage penalty• 入力文の全てをカバーするようにするため

– pi,j は出力の j番目の、入力の i番目へのattention 確率

– attention されなかった入力単語については Σpi,jが 1 より小さくなり、ペナルティーがかかる• 最終的に出力候補のスコアは以下の式– 実験から、強化学習を行ったモデルでは効果は非常に小さくなる

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

枝刈り (pruning)

• Beam幅は 8-12程度が良いが、 4 とか 2 でもそこまで悪化しない• 単語を出力する際、最も良い単語よりも一定以上低いスコアの単語は考慮しない• 最もスコアの高い出力候補のスコアより、一定以上低いスコアの出力候補は枝刈り• 出力の長さは入力の 2倍まで

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

実験• データ– 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

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

実験• 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> に

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

結果• WPM-32K が最もよい• 8 アンサンブルで WMT データセットで

SOTA• 強化学習の効果は BLEU ではあったが、人手評価ではなかった• Google のデータでは人手評価で人間の翻訳と変わらないぐらいの精度が出たが、評価の信頼性には疑問が残る

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

結論• GPU を湯水のように使って、量子化して

TPU も使って、ネットワークを工夫すれば、精度を保持したまま速度的に PBSMT をNMT に置き換えるのも可能 ?

• 真似できるもんなら真似してみろ