SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Google's Neural Machine
Translation System: Bridging the
Gap between Human and
Machine Translation
中澤 敏明
2016年 黒橋・河原研 夏の勉強会
http://arxiv.org/abs/1609.08144
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する?
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
8層LSTM RNN
• encoderもdecoderも深い方がいい
– subtle irregularitiesを捉えることができる
• しかし単純に積むだけだと、トレーニングが遅
いしうまくトレーニングできない
– 勾配爆発/消失問題が起きるため
– 4層ぐらいが良い、6層は厳しい、8層は無理
• 画像認識で使われたresidual connectionを使
う
– 次の層の入力に、一つ前の層の入力を足す
並列化
• データ並列化: Downpour SGD
– Large Scale Distributed Deep Networks (NIPS2012)
– パラメータを共有している複数(実験では12)のモデル
を同時にトレーニングし、非同期にパラメータを更新
• モデル並列化: GPUをたくさん使う
– 各LSTMを別々のGPUに配置
– 最初の層以外はuni-directionalなので、前の層を待
たなくて良い
– softmax層も語彙ごとに別々のGPUに配置
低頻度語
• 既存研究
– 入力の低頻度語を(attention等で)出力にコピー
– 単語より小さい単位(sub-word unit)を使う
• Google音声認識で使われたwordpiece model
(WPM)を使う
– 日本語/韓国語のsegmentation問題のためらしい
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:
トレーニング方法
• 普通の最尤法の欠点=訓練とテストの乖離
– BLEUなどのタスクの目標に対して最適化してない
– BLEU値と出力の確率に相関がない
– デコーディング中のエラーに対してロバストでな
い
• 最尤法で訓練してから強化学習
– 実際には最尤方と強化学習の目的関数の重み
付き線形結合に対して最適化
BLEUの代わりに
GLEU: 正解と出力の
1-4 gramのprecision
かrecallの小さい方
量子化による高速化
• 細かいところはよくわからないのでパス!
• ポイントっぽいところ
– 訓練時にLSTMのメモリセルと隠れ層の値を[-δ, δ]に
(δはアニーリング)クリッピングし、後で16bitの整数値
で表現
• どうやって変換しているのか・・・?
– softmaxへの入力を[-γ, γ]に(γは25で固定)クリッピン
グ
• なぜこれが高速化につながるのか・・・?
– LSTM内の重みを丸めて8bit整数で表現
• 浮動小数点数演算を固定小数点数演算に置き
換えることで高速化
beam search decoding
• 通常のbeam search decodingは最も確率の高
い出力を探す
– 出力の長さは候補ごとに異なり、長いものほど確
率が低くなるため、短い出力が選ばれやすい
• length normalization
– 出力候補のlog-probabilityを以下の値で割る
lp(Y) =
(5+ |Y |)a
(5+1)a
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)
枝刈り (pruning)
• Beam幅は8-12程度が良いが、4とか2でもそ
こまで悪化しない
• 単語を出力する際、最も良い単語よりも一定
以上低いスコアの単語は考慮しない
• 最もスコアの高い出力候補のスコアより、一
定以上低いスコアの出力候補は枝刈り
• 出力の長さは入力の2倍まで
実験
• データ
– 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
実験
• 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>に
結果
• WPM-32Kが最もよい
• 8アンサンブルでWMTデータセットでSOTA
• 強化学習の効果はBLEUではあったが、人手
評価ではなかった
• Googleのデータでは人手評価で人間の翻訳
と変わらないぐらいの精度が出たが、評価の
信頼性には疑問が残る
結論
• GPUを湯水のように使って、量子化してTPUも
使って、ネットワークを工夫すれば、精度を保
持したまま速度的にPBSMTをNMTに置き換え
るのも可能?
• 真似できるもんなら真似してみろ

Weitere ähnliche Inhalte

Was ist angesagt?

PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門tmtm otm
 
Bayesian Neural Networks : Survey
Bayesian Neural Networks : SurveyBayesian Neural Networks : Survey
Bayesian Neural Networks : Surveytmtm otm
 
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)Deep Learning JP
 
【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法Deep Learning JP
 
【DL輪読会】GPT-4Technical Report
【DL輪読会】GPT-4Technical Report【DL輪読会】GPT-4Technical Report
【DL輪読会】GPT-4Technical ReportDeep Learning JP
 
[DL輪読会]When Does Label Smoothing Help?
[DL輪読会]When Does Label Smoothing Help?[DL輪読会]When Does Label Smoothing Help?
[DL輪読会]When Does Label Smoothing Help?Deep Learning JP
 
[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential Equations[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential EquationsDeep Learning JP
 
Deeplearning輪読会
Deeplearning輪読会Deeplearning輪読会
Deeplearning輪読会正志 坪坂
 
畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化Yusuke Uchida
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情Yuta Kikuchi
 
【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces
【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces
【DL輪読会】Efficiently Modeling Long Sequences with Structured State SpacesDeep Learning JP
 
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Yusuke Fujimoto
 
【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習cvpaper. challenge
 
Transformer メタサーベイ
Transformer メタサーベイTransformer メタサーベイ
Transformer メタサーベイcvpaper. challenge
 
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...Deep Learning JP
 
ConvNetの歴史とResNet亜種、ベストプラクティス
ConvNetの歴史とResNet亜種、ベストプラクティスConvNetの歴史とResNet亜種、ベストプラクティス
ConvNetの歴史とResNet亜種、ベストプラクティスYusuke Uchida
 
【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?Masanao Ochi
 
[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]Focal Loss for Dense Object Detection[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]Focal Loss for Dense Object DetectionDeep Learning JP
 
【DL輪読会】Patches Are All You Need? (ConvMixer)
【DL輪読会】Patches Are All You Need? (ConvMixer)【DL輪読会】Patches Are All You Need? (ConvMixer)
【DL輪読会】Patches Are All You Need? (ConvMixer)Deep Learning JP
 
モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化Yusuke Uchida
 

Was ist angesagt? (20)

PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門
 
Bayesian Neural Networks : Survey
Bayesian Neural Networks : SurveyBayesian Neural Networks : Survey
Bayesian Neural Networks : Survey
 
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
 
【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法
 
【DL輪読会】GPT-4Technical Report
【DL輪読会】GPT-4Technical Report【DL輪読会】GPT-4Technical Report
【DL輪読会】GPT-4Technical Report
 
[DL輪読会]When Does Label Smoothing Help?
[DL輪読会]When Does Label Smoothing Help?[DL輪読会]When Does Label Smoothing Help?
[DL輪読会]When Does Label Smoothing Help?
 
[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential Equations[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential Equations
 
Deeplearning輪読会
Deeplearning輪読会Deeplearning輪読会
Deeplearning輪読会
 
畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
 
【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces
【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces
【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces
 
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化
 
【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習
 
Transformer メタサーベイ
Transformer メタサーベイTransformer メタサーベイ
Transformer メタサーベイ
 
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
 
ConvNetの歴史とResNet亜種、ベストプラクティス
ConvNetの歴史とResNet亜種、ベストプラクティスConvNetの歴史とResNet亜種、ベストプラクティス
ConvNetの歴史とResNet亜種、ベストプラクティス
 
【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?
 
[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]Focal Loss for Dense Object Detection[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]Focal Loss for Dense Object Detection
 
【DL輪読会】Patches Are All You Need? (ConvMixer)
【DL輪読会】Patches Are All You Need? (ConvMixer)【DL輪読会】Patches Are All You Need? (ConvMixer)
【DL輪読会】Patches Are All You Need? (ConvMixer)
 
モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化
 

Andere mochten auch

第3回アジア翻訳ワークショップの人手評価結果の分析
第3回アジア翻訳ワークショップの人手評価結果の分析第3回アジア翻訳ワークショップの人手評価結果の分析
第3回アジア翻訳ワークショップの人手評価結果の分析Toshiaki Nakazawa
 
Attention-based NMT description
Attention-based NMT descriptionAttention-based NMT description
Attention-based NMT descriptionToshiaki Nakazawa
 
ニューラル機械翻訳の動向@IBIS2017
ニューラル機械翻訳の動向@IBIS2017ニューラル機械翻訳の動向@IBIS2017
ニューラル機械翻訳の動向@IBIS2017Toshiaki Nakazawa
 
Insertion Position Selection Model for Flexible Non-Terminals in Dependency T...
Insertion Position Selection Model for Flexible Non-Terminals in Dependency T...Insertion Position Selection Model for Flexible Non-Terminals in Dependency T...
Insertion Position Selection Model for Flexible Non-Terminals in Dependency T...Toshiaki Nakazawa
 
Promoting Science and Technology Exchange using Machine Translation
Promoting Science and Technology Exchange using Machine TranslationPromoting Science and Technology Exchange using Machine Translation
Promoting Science and Technology Exchange using Machine TranslationToshiaki Nakazawa
 
3-step Parallel Corpus Cleaning using Monolingual Crowd Workers
3-step Parallel Corpus Cleaning using Monolingual Crowd Workers3-step Parallel Corpus Cleaning using Monolingual Crowd Workers
3-step Parallel Corpus Cleaning using Monolingual Crowd WorkersToshiaki Nakazawa
 
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみたRubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみたYusuke Kon
 
捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)mosa siru
 
自然言語処理のためのDeep Learning
自然言語処理のためのDeep Learning自然言語処理のためのDeep Learning
自然言語処理のためのDeep LearningYuta Kikuchi
 
Pythonによる機械学習の最前線
Pythonによる機械学習の最前線Pythonによる機械学習の最前線
Pythonによる機械学習の最前線Kimikazu Kato
 
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアルscikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル敦志 金谷
 
機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話Ryota Kamoshida
 
機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual TalksYuya Unno
 

Andere mochten auch (16)

第3回アジア翻訳ワークショップの人手評価結果の分析
第3回アジア翻訳ワークショップの人手評価結果の分析第3回アジア翻訳ワークショップの人手評価結果の分析
第3回アジア翻訳ワークショップの人手評価結果の分析
 
Attention-based NMT description
Attention-based NMT descriptionAttention-based NMT description
Attention-based NMT description
 
ニューラル機械翻訳の動向@IBIS2017
ニューラル機械翻訳の動向@IBIS2017ニューラル機械翻訳の動向@IBIS2017
ニューラル機械翻訳の動向@IBIS2017
 
Insertion Position Selection Model for Flexible Non-Terminals in Dependency T...
Insertion Position Selection Model for Flexible Non-Terminals in Dependency T...Insertion Position Selection Model for Flexible Non-Terminals in Dependency T...
Insertion Position Selection Model for Flexible Non-Terminals in Dependency T...
 
Promoting Science and Technology Exchange using Machine Translation
Promoting Science and Technology Exchange using Machine TranslationPromoting Science and Technology Exchange using Machine Translation
Promoting Science and Technology Exchange using Machine Translation
 
3-step Parallel Corpus Cleaning using Monolingual Crowd Workers
3-step Parallel Corpus Cleaning using Monolingual Crowd Workers3-step Parallel Corpus Cleaning using Monolingual Crowd Workers
3-step Parallel Corpus Cleaning using Monolingual Crowd Workers
 
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみたRubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
 
捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)
 
NLP2017 NMT Tutorial
NLP2017 NMT TutorialNLP2017 NMT Tutorial
NLP2017 NMT Tutorial
 
Deep learning を用いた画像から説明文の自動生成に関する研究の紹介
Deep learning を用いた画像から説明文の自動生成に関する研究の紹介Deep learning を用いた画像から説明文の自動生成に関する研究の紹介
Deep learning を用いた画像から説明文の自動生成に関する研究の紹介
 
自然言語処理のためのDeep Learning
自然言語処理のためのDeep Learning自然言語処理のためのDeep Learning
自然言語処理のためのDeep Learning
 
深層学習による自然言語処理の研究動向
深層学習による自然言語処理の研究動向深層学習による自然言語処理の研究動向
深層学習による自然言語処理の研究動向
 
Pythonによる機械学習の最前線
Pythonによる機械学習の最前線Pythonによる機械学習の最前線
Pythonによる機械学習の最前線
 
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアルscikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル
 
機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話
 
機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks
 

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

Tree-to-Sequence Attentional Neural Machine Translation (ACL 2016)
Tree-to-Sequence Attentional Neural Machine Translation (ACL 2016)Tree-to-Sequence Attentional Neural Machine Translation (ACL 2016)
Tree-to-Sequence Attentional Neural Machine Translation (ACL 2016)Toru Fujino
 
[ACL2016] Achieving Open Vocabulary Neural Machine Translation with Hybrid Wo...
[ACL2016] Achieving Open Vocabulary Neural Machine Translation with Hybrid Wo...[ACL2016] Achieving Open Vocabulary Neural Machine Translation with Hybrid Wo...
[ACL2016] Achieving Open Vocabulary Neural Machine Translation with Hybrid Wo...Hayahide Yamagishi
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミングPreferred Networks
 
【Hpcstudy】みんな、ベンチマークどうやってるの?
【Hpcstudy】みんな、ベンチマークどうやってるの?【Hpcstudy】みんな、ベンチマークどうやってるの?
【Hpcstudy】みんな、ベンチマークどうやってるの?Seiichiro Ishida
 
スライド作成入門
スライド作成入門スライド作成入門
スライド作成入門Takahiko Ito
 
読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラムamusementcreators
 
Memory-augmented Neural Machine Translation
Memory-augmented Neural Machine TranslationMemory-augmented Neural Machine Translation
Memory-augmented Neural Machine TranslationSatoru Katsumata
 

Ähnlich wie G社のNMT論文を読んでみた (9)

Extract and edit
Extract and editExtract and edit
Extract and edit
 
Tree-to-Sequence Attentional Neural Machine Translation (ACL 2016)
Tree-to-Sequence Attentional Neural Machine Translation (ACL 2016)Tree-to-Sequence Attentional Neural Machine Translation (ACL 2016)
Tree-to-Sequence Attentional Neural Machine Translation (ACL 2016)
 
Agreement for rnn
Agreement for rnnAgreement for rnn
Agreement for rnn
 
[ACL2016] Achieving Open Vocabulary Neural Machine Translation with Hybrid Wo...
[ACL2016] Achieving Open Vocabulary Neural Machine Translation with Hybrid Wo...[ACL2016] Achieving Open Vocabulary Neural Machine Translation with Hybrid Wo...
[ACL2016] Achieving Open Vocabulary Neural Machine Translation with Hybrid Wo...
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
【Hpcstudy】みんな、ベンチマークどうやってるの?
【Hpcstudy】みんな、ベンチマークどうやってるの?【Hpcstudy】みんな、ベンチマークどうやってるの?
【Hpcstudy】みんな、ベンチマークどうやってるの?
 
スライド作成入門
スライド作成入門スライド作成入門
スライド作成入門
 
読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム
 
Memory-augmented Neural Machine Translation
Memory-augmented Neural Machine TranslationMemory-augmented Neural Machine Translation
Memory-augmented Neural Machine Translation
 

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

  • 1. Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation 中澤 敏明 2016年 黒橋・河原研 夏の勉強会 http://arxiv.org/abs/1609.08144
  • 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. 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. 8層LSTM RNN • encoderもdecoderも深い方がいい – subtle irregularitiesを捉えることができる • しかし単純に積むだけだと、トレーニングが遅 いしうまくトレーニングできない – 勾配爆発/消失問題が起きるため – 4層ぐらいが良い、6層は厳しい、8層は無理 • 画像認識で使われたresidual connectionを使 う – 次の層の入力に、一つ前の層の入力を足す
  • 5. 並列化 • データ並列化: Downpour SGD – Large Scale Distributed Deep Networks (NIPS2012) – パラメータを共有している複数(実験では12)のモデル を同時にトレーニングし、非同期にパラメータを更新 • モデル並列化: GPUをたくさん使う – 各LSTMを別々のGPUに配置 – 最初の層以外はuni-directionalなので、前の層を待 たなくて良い – softmax層も語彙ごとに別々のGPUに配置
  • 6. 低頻度語 • 既存研究 – 入力の低頻度語を(attention等で)出力にコピー – 単語より小さい単位(sub-word unit)を使う • Google音声認識で使われたwordpiece model (WPM)を使う – 日本語/韓国語のsegmentation問題のためらしい
  • 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. トレーニング方法 • 普通の最尤法の欠点=訓練とテストの乖離 – BLEUなどのタスクの目標に対して最適化してない – BLEU値と出力の確率に相関がない – デコーディング中のエラーに対してロバストでな い • 最尤法で訓練してから強化学習 – 実際には最尤方と強化学習の目的関数の重み 付き線形結合に対して最適化 BLEUの代わりに GLEU: 正解と出力の 1-4 gramのprecision かrecallの小さい方
  • 9. 量子化による高速化 • 細かいところはよくわからないのでパス! • ポイントっぽいところ – 訓練時にLSTMのメモリセルと隠れ層の値を[-δ, δ]に (δはアニーリング)クリッピングし、後で16bitの整数値 で表現 • どうやって変換しているのか・・・? – softmaxへの入力を[-γ, γ]に(γは25で固定)クリッピン グ • なぜこれが高速化につながるのか・・・? – LSTM内の重みを丸めて8bit整数で表現 • 浮動小数点数演算を固定小数点数演算に置き 換えることで高速化
  • 10. beam search decoding • 通常のbeam search decodingは最も確率の高 い出力を探す – 出力の長さは候補ごとに異なり、長いものほど確 率が低くなるため、短い出力が選ばれやすい • length normalization – 出力候補のlog-probabilityを以下の値で割る lp(Y) = (5+ |Y |)a (5+1)a
  • 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. 枝刈り (pruning) • Beam幅は8-12程度が良いが、4とか2でもそ こまで悪化しない • 単語を出力する際、最も良い単語よりも一定 以上低いスコアの単語は考慮しない • 最もスコアの高い出力候補のスコアより、一 定以上低いスコアの出力候補は枝刈り • 出力の長さは入力の2倍まで
  • 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. 実験 • 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. 結果 • WPM-32Kが最もよい • 8アンサンブルでWMTデータセットでSOTA • 強化学習の効果はBLEUではあったが、人手 評価ではなかった • Googleのデータでは人手評価で人間の翻訳 と変わらないぐらいの精度が出たが、評価の 信頼性には疑問が残る