Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Viterbiのアルゴリズム /viterbi-algorithm

Miyakawa Taku
December 11, 2017

Viterbiのアルゴリズム /viterbi-algorithm

This presentation is CC BY 3.0 License

Miyakawa Taku

December 11, 2017
Tweet

More Decks by Miyakawa Taku

Other Decks in Technology

Transcript

  1. グラフアルゴリズム番外編:
    MecabとViterbiのアルゴリズム
    宮川 拓

    View Slide

  2. あらまし
     MecabはViterbiのアルゴリズムを使って、
    最適な形態素列を探している
     http://taku910.github.io/mecab/
    2/23

    View Slide

  3. 問題設定
    3/23

    View Slide

  4. 問題設定
     前提
     隠れマルコフモデルのパラメータ
    (初期状態確率、遷移確率、出力確率)
    が既知
     観測値の系列が既知
     問題
     もっとも尤もらしい状態の系列は?
    4/23

    View Slide


  5.  場所中のMT君は、尾上部屋の里山さんの
    勝敗しだいでその日の機嫌が決まる
     里山さんの勝ち、負けの初期状態確率、
    遷移確率は分かっている
     先場所中のMT君の機嫌は、彼のTwitter投
    稿を見て把握している
     先場所の里山さんのもっとも尤もらしい
    星取表は?
    5/23

    View Slide

  6. 初期状態・遷移確率


    場所前
    .5
    .5
    .7
    .3
    .6
    .4
    6/23

    View Slide

  7. 出力確率


    上機嫌
    平静
    不機嫌
    .6
    .1
    .1
    .8
    .3
    .1
    7/23

    View Slide

  8. 観測系列
    何日目? 出力 勝負結果
    初日 上機嫌 ?
    二日目 上機嫌 ?
    三日目 平静 ?
    四日目 不機嫌 ?
    五日目 平静 ?
    六日目 上機嫌 ?
    千秋楽 不機嫌 ?
    8/23

    View Slide

  9. 解くべき問題


    上機嫌
    .5
    .5


    上機嫌


    平静 不機嫌 平静 上機嫌

    不機嫌
    勝 勝 勝 勝
    敗 敗 敗 敗
    .7
    .3
    .6
    .4
    勝敗を結ぶパスのうち、もっとも尤もらしい
    パスを選ぶ
    .1
    .8
    9/23

    View Slide

  10. 解法の考え方
    10/23

    View Slide

  11. 解法の考え方
    1. 千秋楽は勝敗どっちが尤もらしいか考える
     千秋楽の勝・敗それぞれに至るもっと
    も尤もらしい系列と、その確率が必要
    2. 千秋楽の勝・敗それぞれに至るもっとも尤
    もらしい系列と、その確率を考える
     六日目の勝・敗それぞれに至るもっと
    も尤もらしい系列と、その確率が必要
    3. 以下同様
    11/23

    View Slide

  12. 千秋楽は勝敗どっち?


    上機嫌
    .5
    .5


    上機嫌


    平静 不機嫌 平静 上機嫌

    不機嫌
    勝 勝 勝 勝
    敗 敗 敗 敗
    .7
    .3
    .6
    .4
    .1
    .8
    (仮定) 勝敗勝敗 勝敗勝
    六日目までの機嫌との同時確率=0.06
    (仮定) 敗勝敗勝敗勝敗
    六日目までの機嫌との同時確率=0.01
    千秋楽の機嫌との同時確率を考える
     千秋楽勝ち: 0.06*0.1 = 0.006
     千秋楽敗け: 0.01*0.8 = 0.008 → 尤もらしい
    12/23

    View Slide

  13. 千秋楽敗戦に至る最尤の系列は?


    上機嫌
    .5
    .5


    上機嫌


    平静 不機嫌 平静 上機嫌

    勝 勝 勝
    敗 敗 敗 敗
    .7
    .3
    .6
    .4
    (仮定) 敗勝 敗 勝 敗勝
    五日目までの機嫌との同時確率=0.2
    (仮定) 勝敗勝敗勝敗
    五日目までの機嫌との同時確率=0.4
    .1
    .6
    .6
    .3
    六日目の機嫌・千秋楽敗戦との同時確率を考える
     六日目勝ち: 0.2*0.6*0.3 = 0.036 → 採用
     六日目敗け: 0.4*0.1*0.6 = 0.024
    13/23

    View Slide

  14. 整理
     その日の敗戦(勝利)にいたるもっとも尤も
    らしい系列とその確率を求めるには、
    前日の勝利・敗戦にいたるもっとも尤もらし
    い系列と、その確率が分かれれば良い
     ↑に対しては動的計画法が有効
     問題は部分問題の組み合わせで表せる
     問題ツリーの部分木には重複がある
     「五日目勝ちにいたるもっとも尤もらし
    い勝敗の系列」は、六日目勝利・敗戦を
    考える場合両方で使われる
    14/23

    View Slide

  15. 動的計画法の具体策
     トップダウン+メモ化
     大きな部分問題から、小さな部分問題を
    再帰的呼び出しで解く
     重複する部分問題の結果はキャッシュし
    て再利用する
     ボトムダウン → Viterbiはこっち
     小さな部分問題から大きな部分問題へと
    順番に問いていく
    15/23

    View Slide

  16. Viterbiのアルゴリズム
    16/23

    View Slide

  17. Viterbi


    .5
    .5

    初日勝利・敗戦にいたるもっとも尤もらしい
    系列とその確率は自明
    ‹ 勝›, 確率=0.5
    ‹ 敗›, 確率=0.5
    17/23

    View Slide

  18. Viterbi
    上機嫌


    .7
    .4
    ‹勝, 勝›: 0.5*0.6*0.7=0.21 → 採用
    ‹敗, 勝›: 0.5*0.1*0.4=0.02
    .1
    .6


    0.5
    0.5
    18/23

    View Slide

  19. Viterbi


    上機嫌


    .3
    .6
    ‹勝, 敗›: 0.5*0.6*0.3=0.09 → 採用
    ‹敗, 敗›: 0.5*0.1*0.6=0.03
    .1
    .6
    0.5
    0.5
    19/23

    View Slide

  20. Viterbi


    上機嫌


    ‹勝, 勝, 勝›: 0.21*0.6*0.7=0.0882 → 採用
    ‹勝, 敗, 勝›: 0.09*0.1*0.4=0.0036

    上機嫌
    0.21

    0.09
    20/23

    View Slide

  21. Viterbi


    上機嫌


    ‹勝, 勝, 敗›: 0.21*0.6*0.3=0.0378 → 採用
    ‹勝, 敗, 敗›: 0.09*0.1*0.6=0.0054

    上機嫌
    0.21

    0.09
    21/23

    View Slide

  22. 22/23
    トリック
     ステップが進むと、系列の確率が小さくな
    り、精度が落ちてしまう(アンダーフ
    ロー)
     対策: 確率の対数を持つ

    View Slide

  23. Mecabにおける応用
    https://www.slideshare.net/secret/9MHZC7bl
    dJC8Z2
    23/23

    View Slide