31
統計的機械翻訳入門 その3 ~デコーダ編~ @nokuno #tokyonlp

統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

統計的機械翻訳入門 その3  ~デコーダ編~

@nokuno  

#tokyonlp

Page 2: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

参考文献

•  機械翻訳の教科書

•  6章を中心に

•  http://amzn.to/hIvoo6

Page 3: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

自己紹介

•  @nokuno  /  id:nokuno  

•  #TokyoNLP主催  

•  Social  IME  /    StaKK開発者  

•  Web系ソフトウェアエンジニア  

•  統計的機械翻訳入門中  

Page 4: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

デコードとは?

•  モデル:P(e|f)  ∝  P(f|e)  P(e)  

•  デコード:入力文に対し最適解を返す  

•  全探索:指数的に増えてしまい計算困難  

•  →最適解を諦めて高速に探索  

Page 5: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

翻訳エラー

•  翻訳エラーの種類  

– サーチエラー:最適な解ではない  

– モデルエラー:最適解が正解ではない  

– 幸運なエラー:最適解ではないが正解  

•  今回はサーチエラーの削減を主眼に置く

Page 6: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

翻訳プロセス •  タスク:ドイツ語から英語に翻訳する

Page 7: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

翻訳プロセス •  タスク:ドイツ語から英語に翻訳する

Page 8: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

翻訳プロセス •  タスク:ドイツ語から英語に翻訳する

Page 9: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

翻訳プロセス •  タスク:ドイツ語から英語に翻訳する

Page 10: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

翻訳プロセス •  タスク:ドイツ語から英語に翻訳する

Page 11: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

p(e|f) =I�

i=1

φ(fi|ei)d(si − ei−1 − 1)p(ei|ei−11 )

翻訳モデル •  以下の確率を最大化するeを求めたい  

フレーズ翻訳 並べ替え 言語モデル

→Πの中身はフレーズを追加するごとに増えていく

Page 12: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

探索問題としてのデコード

•  フレーズごとに複数の翻訳候補がありうる  

•  翻訳候補は左から順番に生成する  

•  入力文はどの順番で消費してもいい  

•  「仮説」:途中までの翻訳結果  

 

Page 13: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

翻訳候補

•  フレーズごとに翻訳候補を列挙する

Page 14: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

翻訳ステップ1

•   空の仮説からはじめる

Page 15: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

翻訳ステップ2

•  入力文を消費しながら仮説を展開していく

Page 16: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

翻訳ステップ3

•  出力文が終わるまで続ける

Page 17: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

翻訳ステップ4

•  最良の解を見つける

Page 18: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

計算量の問題

•  入力をどの順に消費してもよいため,指数時間になってしまう!  

•  計算量を減らす方法  

– 動的計画法  

– ヒューリスティックな枝刈り  

Page 19: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

動的計画法

•  同じ単語に到達するパスを結合する

(trigramを仮定)

不要なパスを切り捨て

Page 20: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

結合のための制限事項 •  翻訳モデル:フレーズ翻訳はそれぞれ独立  

– 特に制約は必要ない  

•  言語モデル:n-­‐1単語の履歴に依存  

– n-­‐1単語が一致したときのみ結合可能  

•  並べ替えモデル:一つ前の終了位置に依存  

– 終了位置が同じパスのみ結合可能  

Page 21: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

枝刈り

•  動的計画法では十分に計算量が減らない  

•  枝刈り:探索中に不要な仮説を取り除く  

– 仮説をスタックに格納する  

– 各スタック中の仮説の数を制限する  

– 並べ替えの距離を制限する

Page 22: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

スタックデコーダ

•  翻訳済み単語数毎にスタックを用意する

Page 23: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

アルゴリズム

Page 24: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

枝刈りの方法

•  枝刈りの戦略  

– スタックのサイズを制限する  

– 最大スコアのα倍(0.1とか)以上の仮説を保持  

– 2つの組合せ  

•  計算量:O(入力長^2)  

Page 25: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

並べ替えの制限

•  並べ替えの最大距離を制限する  

•  典型的には5-­‐8単語で十分な精度が出る  

•  計算量:O(入力長)  

Page 26: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

枝刈りの問題点

•  珍しい単語の翻訳が先送りされてしまう!

Page 27: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

Future  Cost  Estimation •  未翻訳の文の翻訳コストはどれくらいか?  

– ※コスト=負の対数確率  

•  翻訳モデルの要素ごとに考える  

– フレーズコスト:翻訳テーブルから取得  

– 言語モデル:1-­‐gramで近似  

– 並べ替えコスト:ここでは無視する

Page 28: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

フレーズコストの推定 •  最もコストの小さいフレーズを採用

Page 29: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

コストの合成

•  翻訳済みと未翻訳のコストを合成

Page 30: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP

まとめ

•  翻訳プロセス:出力を左から順に生成  

•  翻訳候補:翻訳テーブルから検索  

•  探索問題としてのデコーディング  

•  探索空間の削減:動的計画法と枝刈り  

Page 31: 統計的機械翻訳入門その3 〜デコーダ編〜 #TokyoNLP